我已经在我的smarty中启用了缓存,并且已经分配了一个日期和时间,如果页面未缓存,则只会从数据库中获取:
$smarty->assign('added_timestamp', $added_timestamp);
我有一个自定义智能修改器,可以生成一个相对时段,如(20分5秒前)
{$added_timestamp|relative_time}
现在我需要的是,'$ added_timestamp'的值必须被缓存,但{$added_timestamp|relative_time}
的输出不应该被缓存。
我尝试使用{nocache}{$added_timestamp|relative_time}{/nocache}
,但它不起作用。
有什么建议吗?
答案 0 :(得分:1)
您需要将relative_time修饰符包装在函数插件中。该函数插件可以使用nocache标志注册(修饰符不能)。
$smarty->registerPlugin('function', 'relative_time' 'smarty_function_relative_time', false, array('time'));
function smarty_function_relative_time(array $params, Smarty_Internal_Template $template) {
$template->smarty->loadPlugin('smarty_modifier_relative_time');
return smarty_modifier_relative_time($params[time]);
}
和
{relative_time time=$added_timestamp}
(Smarty3语法)