我遇到了一个有趣的问题。我需要在 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
文件时,我要首先通过$config['h1-titles']['topics']
呈现$smarty->fetch("string":$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
,然后一次性全部呈现?
答案 0 :(得分:2)
请查看String Template Resources上的文档。您会立即注意到您的$smarty->fetch('string:…')
方法也可以在模板中完成:{include file="string:…"}
答案 1 :(得分:1)
我相信 {eval} 标记可以帮助您:
{eval}用于将变量评估为模板。这可用于将模板标签/变量嵌入变量或标签/变量到配置文件变量中。