Приветствую, Неожиданно для себя столкнулся с проблемой. Есть некоторая система, где активно используется Smarty. Включено автоматическое кэширование всех страниц. Возникла ситуация когда нужно не обрабатывать кусок хтмл-кода одного из шаблонов - ничего в голову, кроме как использования {insert} не пришло... Но не помогло это - несмотря на то, что переменная в результате работы моего плагина получает правильное значение в остальных частях шаблона она имеет, разумеется, кэшированное значение. Как можно обойти это? Можно ли заставить шаблонизатор не кэшировать значение одной переменной, оставив ее динамической? Поможет ли использование метода register_block? Если поможет, можно реальный пример? Я настолько глуп, что не могу разобраться с примером в мануале.
Вот нашел в факе, может поможет... Q: How do I include cached template(s) within a non-cached template? A: One way to do it: $smarty->caching = true; $tpl1 = $smarty->fetch("internal1.tpl"); $tpl2 = $smarty->fetch("internal2.tpl"); $tpl3 = $smarty->fetch("internal3.tpl"); $smarty->assign("tpl1_contents",$tpl1); $smarty->assign("tpl2_contents",$tpl2); $smarty->assign("tpl3_contents",$tpl3); $smarty->caching = false; $smarty->display('index.tpl'); index.tpl --------- <table> <tr> <td>{$tpl1_contents}</td> <td>{$tpl2_contents}</td> <td>{$tpl3_contents}</td> </tr> </table> Another approach: You could write a custom insert function to fetch your internal templates: <table> <tr> <td>{insert name=fetch_tpl tpl="internal1.tpl"}</td> <td>{insert name=fetch_tpl tpl="internal2.tpl"}</td> <td>{insert name=fetch_tpl tpl="internal3.tpl"}</td> </tr> </table>[/b]