缓存smarty值但不缓存修饰符输出

时间:2011-12-19 06:58:10

标签: smarty smarty3

我已经在我的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},但它不起作用。

有什么建议吗?

1 个答案:

答案 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语法)