Get Smarty

Donate

Donate Bitcoin Bitcoin
Paypal

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

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Find Wedding Dresses Online at Canada from Ca-dresses.com

Find your local domestic cleaner

Brautkleider auf Topwedding.de

Best Wedding Dresses Australia at AuBridalDresses.com

Find free files to download on allwhatyouwant.net

Advertisement

Mettere in Cache l'output dei Plugin

A partire dai plugin di Smarty-2.6.0 la possibilità di mettere in cache il loro output può essere dichiarata nel momento in cui li si registrano. Il terzo parametro da passare a register_block, register_compiler_function e register_function si chiama $cacheable e per default vale true, il che equivale al comportamento dei plugin di Smarty nelle versioni precedenti alla 2.6.0

Quando si registra un plugin con $cacheable=false il plugin viene chiamato tutte le volte che la pagina viene visualizzata, anche se la pagina stessa arriva dalla cache. La funzione del plugin funziona così un poco come una funzione insert.

Al contrario di ciò che avviene in {insert}, gli attributi passati al plugin non vengono, per default, messi in cache. E' possibile però dichiarare che devono essere messi in cache con il quarto parametro $cache_attrs. $cache_attrs è un array di nomi di attributi che devono essere messi in cache, in modo che la funzione del plugin ottenga il valore dell'attributo qual era al momento in cui la pagina è stata salvata sulla cache ogni volta che la cache stessa viene riletta.

Example 14.10. Evitare che l'output di un plugin vada in cache


<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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')) {
    // leggiamo $obj dal db e lo assegnamo al template...
    $smarty->assign_by_ref('obj', $obj);
}

$smarty->display('index.tpl');
?>

   

dove index.tpl è:


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

   

Il numero di secondi che mancano alla scadenza di $obj cambia ad ogni visualizzazione della pagina, anche se questa è in cache. Siccome l'attributo endtime è in cache, l'oggetto deve essere letto dal database solo quando la pagina viene scritta sulla cache, ma non nelle richieste successive.


Example 14.11. Evitare che un intero blocco di template vada in cache


index.php:

<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;

function smarty_block_dynamic($param, $content, &$smarty) {
    return $content;
}
$smarty->register_block('dynamic', 'smarty_block_dynamic', false);

$smarty->display('index.tpl');
?>

   

dove index.tpl è:


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

{dynamic}

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

... qui facciamo altre cose ...

{/dynamic}

   

Quando ricaricate lapagina vedrete che le due date sono diverse. Una è "dinamica", l'altra è "statica". Potete mettere qualsiasi cosa fra {dynamic} e {/dynamic}, sicuri che non verrà messa in cache col resto della pagina.

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 13 plus 3? (Are you human?)

Advertisement

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
GoDaddy Coupon @buy-hosting.net
First Click Internet Marketing @fcinternetmarketing.com
Credit Card Processing Company