每次包含 tpl 文件时,系统首先查找文件的特定于站点的版本,如果特定于站点的版本不存在,则回退到标准版本。所以我放的perahps包括“customer/main/test1.tpl”。如果我们的网站是 google,系统将首先查找“customer/main/google_test1.tpl”,如果该文件不存在,则回退到“customer/main/test1.tpl”。
注意:Smarty 2.6.x
每次包含 tpl 文件时,系统首先查找文件的特定于站点的版本,如果特定于站点的版本不存在,则回退到标准版本。所以我放的perahps包括“customer/main/test1.tpl”。如果我们的网站是 google,系统将首先查找“customer/main/google_test1.tpl”,如果该文件不存在,则回退到“customer/main/test1.tpl”。
注意:Smarty 2.6.x
你知道内置的模板目录级联吗?addTemplateDir和setTemplateDir允许您指定多个目录:
$smarty->setTemplateDir(array(
'google' => 'my-templates/google/',
'default' => 'my-templates/default/',
));
$smarty->display('foobar.tpl');
Smarty 会先尝试查找my-templates/google/foobar.tpl
,如果没有找到再尝试my-templates/default/foobar.tpl
。使用它,您可以构建完整的模板级联。
如果您在同一级联级别上有很多元素,那将不会有太大帮助。假设除了 default.tpl 之外,您还有针对 google、yahoo 和 bing 的特定模板。解决方案可能涉及默认模板处理函数。每当 Smarty 遇到它找不到的模板时,作为最后手段执行此回调。它允许您指定一个模板文件(或模板资源)以用作后备。
所以你可以 {include}, {extend}, ->fetch(), ->display() site_google.tpl
。如果文件存在,一切都很好。如果没有,您的回调可以替换_google
为_default
回退到默认模板。
如果 template_dir 级联和默认模板处理函数似乎都不适用,您将需要深入研究自定义模板资源。