如何为多个站点重用相同的Smarty模板?

时间:2012-06-15 23:02:50

标签: php templates smarty

我正在维护一个在wiki网站之间共享的PHP代码库。我的意思是,有一个目录/web/wiki包含PHP脚本,可以为多个网站提供服务,例如wiki-devs.domain.comwiki-public.domain.com等。这是用这种方式编写的,因为所有的wiki看起来都一样,并自动修复其中一个错误(或添加功能)意味着所有错误都得到相同的修复/功能。 PHP代码使用$_SERVER['HTTP_HOST']来更改wiki的徽标并选择正确的数据库等,但所有其他代码对于所有wiki都保持不变。

我正在重写这个Web项目以使用Smarty模板,但是我不太明白如何让Smarty避免为sidebar.template.html编译为wiki-devs.domain.com的模板(比方说wiki-public.domain.com) {1}},因为它不知道有多个域访问相同的代码。

我希望你理解我的意思。只是为了重新迭代:当“wiki-devs”访问该站点时,Smarty为“wiki-devs”生成模板,但是如果“wiki-public”稍后访问该站点,则相同的模板将被提供给他们。

1 个答案:

答案 0 :(得分:0)

您应该为Smarty模板使用一个目录,为每个站点使用不同的编译目录。这样就可以避免编译问题。

例如,你可以使用类似的东西:

    $sitename=$_SERVER['HTTP_HOST'];        
    $smarty->template_dir='themes/themename/';
    $smarty->compile_dir='files/compile/'.$sitename.'/';