假设有一个模板:
<html>
<head>
<title>{$title}</title>
</head>
<body>
{mod name='block' }
</body>
</html>
有一个插件:
function smarty_function_mod($params, &$smarty) {
$core->smarty->assign('title', 'New title');
}
在主要代码中:
$smarty->assign('title', 'Заголовок');
$smarty->display('template.tpl');
所以问题 - 如何从插件中为var标题指定一个新值,它是在display方法中执行的?如果我首先执行fetch方法,然后显示方法 - 一切正常,但插件运行两次。是否有可能首先进行插件?
答案 0 :(得分:-1)
Smarty模板этоphpскрипт。抓取并显示простоеговыполняют,толькоfetchвозвращаетрезультат,аdisplayвыводит。 Такчтоесливыполнить取,апотом显示,тоскриптвыполнитьсядважды - 取вернетрезультатс标题= 'Заголовок' ивызоветфункциюплагина,котораяизменитзначениепеременной(нозаголовоквэтотмоментбудетужеобработан)。 Потом显示выведетужеизмененныйзаголовокиопятьвызоветфункциюплагина。
Вобщемнадовызыватьфункциюплагинадовызоваfetchилиdisplay。 Можнонапримерпоместитьеевначалошаблона,тогдаэффектотизмененияtitleбудетсразу。