我遇到了一个有趣的问题。我需要在Smarty模板中使用Smarty模板。
这就是为什么。我对不同的wiki网站使用相同的模板,每个网站都有自己的配置。配置包含主模板的部分(如更改的标题和标题等)。
下面是一个简化的例子。我有一个在所有网站上共享的文件topic-list.template.html:
<div id="topics">
<h1>{$h1}</h1>
...
</div>如您所见,这个模板文件包含一个可以为每个网站定制的<h1>标记。
然后,对于每个网站,我都有一个配置文件,看起来如下(简化):
$config = [
"h1-titles" => [
"topics" => "Showing Topics in {\$category}"
]
];如您所见,配置文件包含一个Smarty模板。
因此,当我呈现topic-list.template.html文件时,我必须首先通过$smarty->fetch("string":$config['h1-titles']['topics'])呈现$config['h1-titles']['topics'],然后将它赋值给h1 Smarty变量。我的简化代码如下所示:
$h1_tag = $smarty->fetch("string":$config['h1-titles']['topics']);
$smarty->assign('h1', $h1_tag);
$smarty->display('topic-list.template.html');我想知道我是否可以以某种方式自动地将$config['h1-titles']['topics']插入到topic-list.template.html文件中,然后它就一次呈现出来了?
发布于 2012-06-17 08:25:06
请看一下字符串模板资源上的文档。您将立即注意到,您的$smarty->fetch('string:…')方法也可以在模板:{include file="string:…"}中完成。
发布于 2012-06-17 07:18:49
我相信{eval}标签可以帮助您:
{eval}用于将变量计算为模板。这可以用于将模板标记/变量嵌入到变量中或将标记/变量嵌入到配置文件变量中。
http://www.smarty.net/docs/en/language.function.eval.tpl
https://stackoverflow.com/questions/11067798
复制相似问题