繁体   English   中英

Prestashop PHP包含在.tpl中不起作用

[英]Prestashop PHP Include in a .tpl does not work

我正在使用Prestashop为客户创建店面。 Prestashop使用Smarty .TPL文件。 我阅读了巧妙的文档并浏览了网页,但所有建议都无效。

我首先使用常规.php页面创建了一个站点,并且我在每个页面上都包含了header.php。

然后我为prestashop创建了一个目录并设置好了。 我编辑了header.tpl文件,并能够在header.php代码中进行硬编码。 这个问题是; 当我想编辑标题(导航栏,图像,社交媒体)时,我将不得不在两个不同的地方编辑它。 所以我试图“包含”我的header.php文件。

虽然,当我尝试使用smarty的{include_PHP“file.php”}和/或{PHP}包含... {PHP}时,Prestashop错误并给我一个空白的白页 - 没有给出错误 - (在chrome中给出我是一个“服务器错误”),直到我拿出包含。

我尝试用一​​个聪明的包和另一段带有头钩的代码替换整个header.tpl代码,但这些代码都没有用。 有什么建议? 我只想要一个标题,我只需要编辑一次即可进行更改。

使用Prestashop v 1.4.4.0

编辑:我从false将allow_php更改为true。 现在它正在尝试添加该文件,尽管它说它无法找到该文件。 我将它放在header.tpl旁边并且刚刚使用:

{php}
            include('navBar.php'); 
       {/php} 

ANSWERED!

使用Smarty .TPL文件时,如果包含某些内容,则不包括您正在处理的文件的路径。 您包括索引所在的位置。

例:

我正在使用header.tpl,它位于:siteroot / smartyinstall / themes / themename /header.tpl

当include正在寻找文件时,它实际上是在smarty根文件夹中查找它,因为header.tpl被拉入smartyinstall文件夹中的index.html页面。

所以,你必须从那里开始。 在我的例子中,我试图包含的标题是:siteroot / includes / navBar.php

所以,我不得不写include('../ includes / navBar.php');,只上一个目录,而不是四个。

我希望这能帮助每个有这样问题的人!

将php包含在smarty .tpl文件中被认为是非常糟糕的做法,因此我强烈建议您不要以这种方式添加代码。 禁用{php}标记的主要原因之一是帮助防止代码注入攻击。 电子商务网站本质上是攻击的天然目标。

更好的方法是覆盖FrontController类,将自定义代码分配给smarty变量 - 然后可以将其插入header.tpl而无需使用php include()

由于Prestashop 1.4.x中提供了类和控制器覆盖,因此您没有必要采用黑客攻击和/或修改核心发行版。

保罗

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM