smarty template engine
Thursday, November 20, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


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';
?>



 

credits 

Smarty Copyright © 2002-2008
New Digital Group, Inc.

All rights reserved.