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
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
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
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
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
$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\';
?>');
?> |
|