如何在不复制孔 Prestashop 主题的情况下覆盖产品列表/显示名称?

How to override product list / show name without copy the hole Prestashop theme?

我创建了一个模块来添加 oneToMany link Product->artists.

这在后台非常有效(CRUD + 表单上的产品 link)。

现在我想覆盖 Prestashop 1.6 默认主题,只在产品列表、产品展示和产品弹出窗口的标题下添加艺术家姓名。

我想避免仅十行 HTML 标签的孔主题的副本...

执行此操作的最佳和正确方法是什么?

Prestashop 主题系统的工作原理如下:

  1. 模块或控制器创建模板文件。
  2. 模块可以覆盖此模板文件。
  3. 主题可以覆盖此模板文件。

如果您的主题已经在处理这个模板文件,您将无法在模块中更改它。

最简单的解决方案是修改主题模板文件。


如果要向模板添加数据,可以使用 Prestashop Hook system。在产品页面有很多 Hooks:

  • 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'); 在您的模块中声明您自己的模板文件...这真的不是我会考虑的解决方案。