кэширование значений Smarty, но не вывода модификатора - PullRequest
0 голосов
/ 19 декабря 2011

Я включил кэширование в моем smarty и назначил дату и время, как показано ниже, которые будут извлекаться из базы данных, только если страница не кэширована:

$smarty->assign('added_timestamp', $added_timestamp);

У меня есть собственный модификатор smarty, который генерируетотносительный период, например (20 минут 5 секунд назад)

{$added_timestamp|relative_time}

Теперь мне нужно, чтобы значение '$ Added_timestamp' было кэшировано, но вывод из {$added_timestamp|relative_time} не должен кэшироваться.

Я пытался с {nocache}{$added_timestamp|relative_time}{/nocache}, но он не работает.

есть предложения?

1 Ответ

1 голос
/ 19 декабря 2011

вам нужно будет обернуть ваш модификаторlative_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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...