smarty - 在加载之前过滤模板路径

时间:2016-06-20 12:02:57

标签: php smarty

我正在为一个用Smarty2实现的非常复杂的项目编写一个插件(非常老了,是的,这不是我的决定)。我必须更改一些模板,但只有两三个模板(例如生成页面导航栏的模板)。问题是: - 他们不需要任何钩子或变量,我需要一些 - 我无法修改它们(因为我想保持整个事物的可更新性) 但我可以访问$ smarty对象并可以使用它的方法,例如assign。

是否有可能在模板网址显示之前对其进行过滤?我脑子里有点像

$smarty->replaceUrl('templates/navbar.tpl', 'myplugin/mynavbar.tpl');

或者你们其中一个人有任何其他建议如何解决这个问题?我知道我可以使用register_outputfilter并使用一些字符串操作插入我的代码,但这显然是一个糟糕的解决方案。

1 个答案:

答案 0 :(得分:0)

我自己找到了一个非常有说服力的解决方案

array_unshift($smarty->template_dir, $myTemplatePath);

在我的$ myTemplatePath中,我保留了我要替换的每个模板的版本。案件解决了。