1

我想在我新创建的模块中覆盖 prestashop 的默认前台模板和控制器,而不修改 prestashop 的内部代码/结构。

例子 :

我在/modules 文件夹中创建了一个模块,即“mymodule”,我想在其中使用prestashop 的地址形式(address.tpl)。

见:http ://demo-store.prestashop.com/en/address 。

我想通过提供一些额外的字段/功能来增强地址形式,但不改变 prestashop 的核心功能。

那么,如何在我的模块中覆盖其控制器/主题/模板?我在谷歌上搜索了很多关于这个但没有找到任何东西:(

任何帮助,将不胜感激。

4

1 回答 1

1

仅当HOOK内部template/controller有允许您运行自定义功能的模块时,模块才能像您要求的那样工作。通过查看里面显示的列表,看看你是否有机会将你的模块挂在某个地方

backoffice > modules > position

如果我没记错的话,地址控制器没有任何 Hook,所以你有 3 种方法来编辑它的功能:

  1. 通过大量使用 jquery/ajax 调用来执行您需要的操作,进行(恕我直言)可怕的客户端修改。使用一个模块放置代码,该模块仅使用该hookHeader()函数将您的 js 脚本添加到标头中。由于这个钩子总是在所有站点中调用,您可以利用地址模板中缺少的钩子。

  2. 按照以下过程在控制器和模板中添加一个钩子:http: //www.prestashop.com/forums/topic/218291-create-custom-and-new-hook-in-ps-15/

  3. 使用 prestashop 框架惊人的覆盖功能来修改你需要的控制器文件中放置在你的prestashop_root/override/controllers/front/AddressController.php和你的/prestashop_root/themes/my_theme/address.tpl. 这样,您可以在不丢失原始功能的情况下覆盖控制器的任何功能,如果您需要升级您的安装,您只需要检查您在覆盖文件中更改的功能,就像您为您的模块所做的那样。

于 2013-07-13T07:08:05.267 回答