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


search for in the  


Die Ausgabe von cachebaren Plugins Kontrollieren

Seit Smarty-2.6.0 kann bei der Registrierung angegeben werden ob ein Plugin cached werden soll. Der dritte Parameter für register_block, register_compiler_function und register_function heisst $cacheable, der Standardwert ist TRUE, was das Verhalten von Smarty vor Version 2.6.0 wiederspiegelt.

Wenn ein Plugin mit $cacheable=false registriert wird, wird er bei jedem Besuch der Seite aufgerufen, selbst wenn die Site aus dem Cache stammt. Die Pluginfunktion verhält sich ein wenig wie {insert}.

Im Gegensatz zu {insert} werden die Attribute standartmässig nicht gecached. Sie können das caching jedoch mit dem vierten Parameter $cache_attrs kontrollieren. $cache_attrs ist ein Array aller Attributnamen die gecached werden sollen.

Beispiel 14-10. Verhindern des Caching der Ausgabe eines Plugins

<?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')) {
 
// Objekt $obj aus Datenbank dem Template zuweisen
  
$smarty->assign_by_ref('obj'$obj);
}

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

Bei folgendem index.tpl:

Verbleibende Zeit: {remain endtime=$obj->endtime}

Der Wert von $obj->endtime ändert bei jeder Anzeige der Seite, selbst wenn die Seite gecached wurde. Das Objekt $obj wird nur geladen wenn die Seite nicht gecached wurde.

Beispiel 14-11. Verhindern dass Template Blöcke gecached werden

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

Bei folgendem index.tpl:

Seite wurde erzeugt: {"0"|date_format:"%D %H:%M:%S"}

{dynamic}

Jetzt ist es: {"0"|date_format:"%D %H:%M:%S"}

... weitere Ausgaben ...

{/dynamic}

Um sicherzustellen dass ein Teil eines Templates nicht gecached werden soll, kann dieser Abschnitt in einen {dynamic}...{/dynamic} Block verpackt werden.




 

credits 

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

All rights reserved.