Get Smarty

Donate

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

Advertisement

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.

Example 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.


Example 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.

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors