Smarty没有选择要显示的正确模板

2022-04-07 00:00:00 php smarty

我昨天在做一个网站,一切都很好。我移植它是为了使用Smarty。我还有最后一个页面需要更改,它不需要任何测试,因为Smarty模板文件实际上并没有做太多事情。我保存了我的工作,关闭了所有的东西,然后离开了。今天早些时候,我检查了这个网站,发现它已经失控了。除一个页面外,它显示的所有页面的模板都不正确。我从未更改过服务器设置,所以这不可能是问题所在。以前完美无瑕的页面不再有效。我已经对我的工作进行了五次检查,看不出有什么问题。为了不张贴我所拥有的每一件事,我会分享我的任何代码,你想看看的。只需留下评论,我就会进行编辑。你知道可能出了什么问题吗?我使用的是Smarty 3.1.8和PHP 5.3.3。

Live site


解决方案

之所以发生混淆,是因为(几乎)所有模板的名称都相同。根据this thread,我发现当Smarty编译模板时,它只考虑文件名,而不考虑该文件的完整路径。因此,您必须指定一个编译ID,为此,最好将其作为当前执行的脚本的父目录。如果您只使用__FILE__常量,如果您在同一目录中使用多个脚本来显示同一模板,则可能最终得到同一模板的多个编译。因此,我使用dirname(__FILE__)作为我的编译器ID,应该适用于所有人。

相关文章