我正在使用 Prestashop 为客户创建店面。 Prestashop 使用 Smarty .TPL 文件。我通读了 smarty 文档并搜索了网络,但所有建议均无效。
我首先使用常规 .php 页面制作了一个网站,我在每个页面上都包含了 header.php。
然后我为 prestashop 创建了一个目录并进行了设置。我编辑了 header.tpl 文件并能够在 header.php 代码中进行硬编码。问题是;当我想编辑标题(导航栏、图像、社交媒体)时,我将不得不在两个不同的地方进行编辑。所以我尝试“包含”我的 header.php 文件。
虽然,当我尝试使用 smarty 的 {include_PHP "file.php"} 和/或 {PHP}include...{PHP} 时,Prestashop 出错并给我一个空白的白页 - 没有给出错误 - (在chrome 它给了我一个“服务器错误”),直到我取出包含。
我尝试将整个 header.tpl 代码替换为一个 smarty include 和另一段具有 header 钩子(Hook)的代码,但这些都不起作用。有什么建议么?我只想要一个标题,我只需编辑一次即可进行更改。
使用 Prestashop v 1.4.4.0
编辑:我将 allow_php 从 false 更改为 true。现在它正在尝试添加该文件,尽管它说找不到该文件。我把它放在 header.tpl 旁边,然后使用:
{php}
include('navBar.php');
{/php}
最佳答案
已回答!
当使用 Smarty .TPL 文件时,当您包含某些内容时,您不会从您正在处理的文件的路径中包含内容。您包括索引所在的位置。
例子:
我正在处理 header.tpl,它位于: siteroot/smartyinstall/themes/themename/header.tpl
当 include 查找文件时,它实际上是在 smarty 根文件夹中查找它,因为 header.tpl 被拉入 smartyinstall 文件夹中的 index.html 页面.
所以,你必须从那里开始。就我而言,我试图包含的 header 位于: siteroot/includes/navBar.php
所以,我不得不编写 include('../includes/navBar.php');,只向上一个目录,而不是四个。
我希望这对遇到此类问题的每个人都有帮助!
关于php - Prestashop PHP 包含在 .tpl 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7273602/