过滤模板路径加载之前



我正在为一个非常复杂的项目编写插件,该项目用Smarty2实现(相当旧的scool,是的,这不是我的决定)。我必须更改一些模板,但只有数百个模板(例如,一个生成页面的Navbar的模板)。问题是: - 他们没有任何需要的钩子或变量 - 我无法修改它们(因为我想让整个内容都可以更新)但是我可以访问$ smarty对象,并且可以使用它的方法,例如分配。

在显示模板-URL时是否有可能过滤?我有一些想法,例如

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

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

我自己找到了一个相当令人信服的解决方案

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

在我的$ myTemplatepath中,我持有要替换的每个模板的版本。案例已解决。

最新更新