Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Mengontrol Plugins ynd Bisa Di-cache' Output

Sejak plugin Smarty-2.6.0, plugins yang bisa di-cache dapat dideklarasikan saat meregistrasinya. Parameter ketiga pada register_block(), register_compiler_function() dan register_function() disebut $cacheable dan standarnya TRUE yang juga merupakan tabiat plugins dalam Smarty versi sebelum 2.6.0

Ketika meregistrasi sebuah plugin dengan $cacheable=false, plugin dipanggil setiap kali halaman ditampilkan, meskipun halaman berasal dari cache. Fungsi plugin berlaku sedikit mirip fungsi {insert}.

Sebaliknya dari {insert} atribut plugins standarnya tidak di-cache. Bisa dideklarasikan untuk di-cache dengan parameter keempat $cache_attrs. $cache_attrs adalah array nama-atribut yang harus di-cache, agar fungsi-plugin memperoleh nilai seperti pertama kali halaman dituliskan ke cache, setiap kali ia diambil dari cache.

Teladan 14-10. Menghindari output plugin di-cache

caching = true; function remaining_seconds($params, &$smarty) { $remain = $params[\'endtime\'] - time(); if($remain >= 0){ return $remain . \' second(s)\'; }else{ return \'done\'; } } $smarty->register_function(\'remaining\', \'remaining_seconds\', false, array(\'endtime\')); if (!$smarty->is_cached(\'index.tpl\')) { // ambil $obj dari db dan tempatkan... $smarty->assign_by_ref(\'obj\', $obj); } $smarty->display(\'index.tpl\'); ?>'); ?>

di mana index.tpl adalah:

Time Remaining: {remaining endtime=$obj->endtime}

Jumlah detik sampai endtime $obj dicapai, perubahan pada setiap tampilan halaman, meskipun bila halaman di-cache. Karena atribut endtime di-cache. obyek harus ditarik dari database ketika halaman dituliskan ke cache tapi tidak pada permintaan halaman berikutnya.

Teladan 14-11. Menghindari seluruh bagian template di-cache

caching = 1; function smarty_block_dynamic($param, $content, &$smarty) { return $content; } $smarty->register_block(\'dynamic\', \'smarty_block_dynamic\', false); $smarty->display(\'index.tpl\'); ?>'); ?>

where index.tpl is:

Page created: {'0'|date_format:'%D %H:%M:%S'}

{dynamic}

Now is: {'0'|date_format:'%D %H:%M:%S'}

... do other stuff ...

{/dynamic}

Ketika mengambil ulang halaman, anda akan mencatat bahwa kedua tanggal berbeda. Satu "dynamis" dan satu "statis". Anda dapat melakukan apapun antara {dynamic}...{/dynamic} dan pastikan ia tidak akan di-cache seperti bagian halaman lainnya.