我创建了一个模块来添加一个 oneToMany 链接Product->artists
。
这在后台(CRUD +表单上的产品链接)上完美运行。
现在我想覆盖 Prestashop 1.6 默认主题,只在产品列表、产品展示和产品弹出窗口的标题下添加艺术家姓名。
我想避免只复制十行 HTML 标签的洞主题......
这样做的最佳和正确的方法是什么?
Prestashop主题系统的工作原理如下:
- 模块或控制器创建模板文件。
- 模块可以覆盖此模板文件。
- 主题可以覆盖此模板文件。
如果您的主题已经在处理此模板文件,您将无法在模块中更改它。
最简单的解决方案是修改主题模板文件。
如果要将数据添加到模板中,可以使用Prestashop Hook系统。在产品页面中有许多钩子:
-
HOOK_EXTRA_LEFT
-
HOOK_EXTRA_RIGHT
-
HOOK_PRODUCT_OOS
-
HOOK_PRODUCT_ACTIONS
-
HOOK_PRODUCT_TAB
-
HOOK_PRODUCT_TAB_CONTENT
-
HOOK_PRODUCT_CONTENT
如果这个钩子中的一个没有方便地放在页面上,请添加一点 JQuery 以根据需要在 DOM 中移动它。
有一个解决方法,但它不是一个干净的解决方案。您可以覆盖产品控制器,而不是$this->setTemplate(_PS_THEME_DIR_.'product.tpl');
模块中声明您自己的模板文件...这真的不是我会考虑的解决方案。