używałem od pewnego czasu cachowania tylko fragmentów szablonu smarty wg opisu ze strony: http://diabl0.gazeta.ie/2008/11/smarty-%E2...owane-szablony/
Tyle że robiłem to nie na insert tylko na function np w ten sposób:
<?php function smarty_function_mojpanel($params,&$smarty){ $smarty->caching=true; $smarty->cache_lifetime=900; if (!$smarty->is_cached('mojpanel.tpl')){ $tersc = 'treść z bazy danych'; $smarty->assign('tersc',$tersc); } $output=$smarty->fetch('mojpanel.tpl'); $smarty->caching=false; return $output; } ?>
Do tej pory wszystko działało jak należy. Jednak po zaktualizowaniu smarty z bardzo starej wersji 2 do wersji 3 (3.07, 3.08, 3.1) i przepisaniu pluginów w ten sposób:
<?php function smarty_function_mojpanel($params,$template){ $template->caching=2; $template->cache_lifetime=900; if (!$template->isCached('mojpanel.tpl')){ $tersc = 'treść z bazy danych'; $template->assign('tersc',$tersc); } $output=$template->fetch('mojpanel.tpl'); $template->caching=0; return $output; } ?>
cache z pluginów nie jest tworzony, za każdym razem jest pobierana treść z bazy danych. Jednak gdy zmienię w samej klasie smarty $caching = 2; wtedy cache normalnie działa także dla tych treści wywoływanych z pluginów. Wygląda to tak jakby nie dało się włączać cache w samym pluginie, co w smarty 2 działało. Nie mogę się doszukać w czym leży wina? Czy smarty już uniemożliwia cache w pluginach? Gdzieś jest to blokowane? Proszę o pomoc ;/
...
Sprawdzałem na najnowszym smarty 2 (2.6.26) i pierwszy sposób z pluginami działa na smarty 3.0b7 już nie, próbowałem też stosować różne kombinacje z:
$template->setCaching(Smarty::CACHING_LIFETIME_SAVED);
$template->setCacheLifetime(300);
ale nadal lipa. Upieram się nadal na te pluginy, bo takie cache modułowe bardzo ułatwia mi pracę, ale może ktoś będzie miał pomysł jak to inaczej rozwiązać?