|
|

|
Sumber daya
Template mungkin berasal dari berbagai sumber. Ketika anda
display() atau
fetch()
sebuah template, atau saat anda menyertakan template dari dalam
template lain,
anda menyertakan sebuah tipe sumber daya, diikuti
oleh path dan nama template terkait. Jika sumber daya tidak secara
eksplisit diberi nilai,
$default_resource_type yang diasumsikan.
Templates dari $template_dir
Template dari
$template_dir tidak membutuhkan sumber
daya template
, meskipun anda dapat menggunakan sumber daya
file: untuk konsistensi. Cukup sertakan path ke template yang
ingin anda gunakan relatif ke direktori akar
$template_dir.
Teladan 15-6. Menggunakan template dari $template_dir
<?php $smarty->display('index.tpl'); $smarty->display('admin/menu.tpl'); $smarty->display('file:admin/menu.tpl'); // sama seperti yang di atas ?>
|
Dari dalam template Smarty {include file='index.tpl'}
{* di bawah ini sama seperti yang di atas*}
{include file='file:index.tpl'} |
|
Template dari direktori mana saja
Template di luar
$template_dir
memerlukan tipe sumber daya template file:, diikuti
oleh path absolut ke template.
Teladan 15-7. Menggunakan template daru direktori mana saja
<?php $smarty->display('file:/export/templates/index.tpl'); $smarty->display('file:/path/to/my/templates/menu.tpl'); ?>
|
Dan dari dalam template Smarty:
{include file='file:/usr/local/share/templates/navigation.tpl'} |
|
Path file Windows
Jika anda menggunakan mesin Windows, path file biasanya menyertakan
sebuah huruf drive (C:) di awal nama path. Pastikan untuk menggunakan
file: dalam path guna menghindari konflik namespace dan
memperoleh hasil yang diinginkan.
Teladan 15-8. Menggunakan template dari path file windows
<?php $smarty->display('file:C:/export/templates/index.tpl'); $smarty->display('file:F:/path/to/my/templates/menu.tpl'); ?>
|
Dan dari dalam template Smarty:
{include file='file:D:/usr/local/share/templates/navigation.tpl'} |
|
Template dari sumber daya lain
Anda dapat mengambil template menggunakan sumber daya apapun
yang mungkin anda akses dengan PHP: database, soket, LDAP, dan
seterusnya. Anda melakukan ini dengan menulis fungsi plugins
sumber daya dan mendaftarkannya dengan Smarty.
Lihat seksi plugins sumber daya
untuk informasi lebih jauh mengenai fungsi yang harus anda sediakan.
Catatan:
Catatan bahwa anda tidak bisa menimpa sumber daya built-in
file:, tapi anda dapat menyediakan sumber daya yang
mengambil template dari sistem file dalam beberapa cara lain dengan
mendaftarkan di bawah nama sumber daya lain.
Teladan 15-9. Menggunakan sumber daya kustom
<?php // simpan fungsi ini di mana saja dalam aplikasi anda function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) { // lakukan pemanggilan database di sini untuk mengambil template anda, // populasikan $tpl_source $sql = new SQL; $sql->query("select tpl_source from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_source = $sql->record['tpl_source']; return true; } else { return false; } }
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj) { // tidak ada pemanggilan database di sini untuk mempopulasikan $tpl_timestamp. $sql = new SQL; $sql->query("select tpl_timestamp from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_timestamp = $sql->record['tpl_timestamp']; return true; } else { return false; } }
function db_get_secure($tpl_name, &$smarty_obj) { // menganggap seluruh template aman return true; }
function db_get_trusted($tpl_name, &$smarty_obj) { // tidak digunakan untu templates }
// mendaftarkan nama sumber daya "db" $smarty->register_resource("db", array("db_get_template", "db_get_timestamp", "db_get_secure", "db_get_trusted"));
// menggunakan sumber daya dari naskah php $smarty->display("db:index.tpl"); ?>
|
Dan dari dalam template Smarty:
{include file='db:/extras/navigation.tpl'} |
|
Fungsi pengendali template default
Anda bisa menetapkan fungsi yang dipakai untuk mengambil
konten template
seandainya template tidak dapat diambil dari
sumber dayanya. Satu kegunaan dari ini adalah untuk membuat
template yang tidak ada secara-langsung.
Teladan 15-10. Menggunakan fungsi pengendali template default
<?php // simpan ini di mana saja dalam aplikasi anda
function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj) { if( $resource_type == 'file' ) { if ( ! is_readable ( $resource_name )) { // buat file template, hasilkan konten. $template_source = "This is a new template."; require_once SMARTY_CORE_DIR . 'core.write_file.php'; smarty_core_write_file( array( 'filename'=>$smarty_obj->template_dir . DIRECTORY_SEPARATOR . $resource_name, 'contents'=>$template_source ), $smarty_obj ); return true; } } else { // bukan sebuah file return false; } }
// set pengendali standar $smarty->default_template_handler_func = 'make_template'; ?>
|
|
|
|
|