【问题标题】:Smarty is not choosing the correct templates to displaySmarty 没有选择正确的模板来显示
【发布时间】:2012-05-13 21:00:56
【问题描述】:

我昨天在一个网站上工作,一切都很好。我正在移植它以使用 Smarty。我有最后一页要更改,不需要任何测试,因为 Smarty 模板文件并没有真正做太多。我保存了我的工作,关闭了所有内容,然后离开了。今天早些时候,我检查了该网站,发现它已经失控了。它为除一页之外的所有页面显示不正确的模板。我从未对服务器设置进行任何更改,因此这不是问题。以前可以完美运行的页面不再有效。我已经对我的工作进行了五次检查,但看不出哪里出了问题。为了不发布我拥有的所有内容,我将分享您想查看的任何我的代码。只需发表评论,我将进行编辑。有什么想法可能会出错吗?我正在使用 Smarty 3.1.8 和 PHP 5.3.3。

Live site

【问题讨论】:

  • 好吧,访问您的链接似乎一切正常?你能澄清什么不工作(也许粘贴一个不呈现的 tpl 文件)。但是,我使用 Smarty 检查的默认内容是模板和缓存目录——它们是可写的吗?你有正确的权限吗?我能看到的唯一问题是 index.css 是 404
  • 好像是随机选择不同的模板来展示。我提供的链接应该指向一个页面,其中包含四个指向其他页面的链接。好吧,考虑到 URL 中的关键字,其他页面应该很明显它们是不正确的。我对我正在使用的所有目录和文件拥有必要的权限。我在三台不同的机器和两种不同的浏览器上试过这个。我没有使用缓存。 /st8/tscrompton/includes/Smarty-templates 中的唯一模板是 footer.tpl。其他的与它们对应的 PHP 脚本 (index.php -> index.tpl) 在同一目录中。
  • 随机,它似乎会选择一个特定的随机模板并使用该模板很长一段时间,然后它会改变主意(可能每当我进行任何更改时?)。

标签: php smarty


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多