假设有一个模板:
<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 title赋值,它是在display方法中执行的吗?如果我先执行fetch方法,然后执行display方法-一切正常,但插件会运行两次。有没有可能先做这个插件?
发布于 2012-04-03 14:33:05
智能模板этоphpскрипт。Fetchиdisplayпростоеговыполняют,толькоfetchвозвращаетрезультат,аdisplayвыводит。标题获取,标题显示,тоскриптвыполнитьсядважды-获取вернетрезультатс标题=‘Заголовок’ивызоветфункциюплагина,котораяизменитзначениепеременной(нозаголовоквэтотмоментбудетужеобработан)。Потомdisplayвыведетужеизмененныйзаголовокиопятьвызоветфункциюплагина。
Вобщемнадовызыватьфункциюплагинадовызоваfetchили显示。Можнонапримерпоместитьеевначалошаблона,тогдаэффектотизменения标题будетсразу。
https://stackoverflow.com/questions/9987985
复制相似问题