我想在我新创建的模块中覆盖prestashop的默认前台模板和控制器,而不修改prestashop的内部代码/结构。
示例:
我在/ modules文件夹中创建了一个模块,即“mymodule”,我想使用prestashop的地址格式(address.tpl)。
见:http://demo-store.prestashop.com/en/address。
我希望通过提供一些额外的字段/功能来增强地址形式,但不会改变prestashop的核心功能。
那么,我如何覆盖模块中的控制器/主题/模板?我在google上搜索了很多关于这个但没有找到任何东西:(
任何帮助都将不胜感激。
答案 0 :(得分:1)
只有在HOOK
内有template/controller
允许您运行自定义功能的情况下,模块才能正常工作。看看你是否有可能通过在里面显示的列表中看到你的模块。
backoffice > modules > position
如果我记得很好,地址控制器没有任何钩子,所以你有3种方法来编辑它的功能:
通过大量使用jquery / ajax调用来执行(imho)可怕的客户端修改,以执行您需要的操作。使用仅使用hookHeader()
函数在标头中添加js脚本的模块放置代码。由于这个钩子总是在所有站点中调用,因此可以利用地址模板中缺少的钩子。
按照以下步骤在Controller和模板中添加一个钩子:http://www.prestashop.com/forums/topic/218291-create-custom-and-new-hook-in-ps-15/
使用prestashop框架的惊人覆盖功能来修改位于prestashop_root/override/controllers/front/AddressController.php
内和/prestashop_root/themes/my_theme/address.tpl
内的Controller文件中所需的内容。通过这种方式,您可以在不丢失原始功能的情况下取消控制器的任何功能,如果您需要升级安装,则只需要检查您在覆盖文件中更改的功能,就像对模块一样。< / p>