Prestashop:在不修改PHP文件的情况下,在默认模块中使用自定义挂钩


Prestashop : use custom hooks in default modules without modifying their PHP files

我正在做一个基于Prestashop(1.5 RC)最新测试版的项目,因为我需要这个版本中的一些新东西。

在投入生产之前,该网站当然会在发布时更新到稳定的1.5版本,并计划在以下稳定版本中保持最新。

由于设计有点具体,我不得不创建自定义挂钩来放置模块。困扰我的是,我的模块(尤其是Prestashop附带的"默认"模块)在逻辑上没有所需的方法,无法将它们放置在我创建的挂钩上。

我将这些方法添加到了它们的PHP文件中,但当Prestashop(或任何相关模块)更新时,我的更改将被丢弃,我将不得不重新编写。

有没有什么方法可以让这些模块放在我想要的任何钩子上,而不直接修改它们自己的代码?AFAIK您不能覆盖模块的PHP文件,只能使用TPL、CSS和JS。

非常感谢您的帮助。我在Prestashop自己的论坛上搜索了相关主题,这让我觉得你根本做不到。。。

我通过使用智能插件在主题中的任意位置调用模块钩子函数来解决添加钩子的问题。我在博客上写了一篇文章,可能有助于将它们称为Prestashop插件。显然,代码可以扩展为包括传递附加参数等内容。一旦实现,您可以在tpl文件中执行以下操作:

显示(即调用)"主页特色"模块的hookHome功能

{plugin module='homefeatured' hook='home'}

显示设置变量的值(方便保存各处更改的硬编码值!)

{psconfig item='PS_SHOP_PHONE'}

最后(就示例而言)显示CMS页面的内容:

{cmspage id='1'}

对于创意商店开发商来说,可能性是无限的;)