首页 > 解决方案 > Prestashop 1.7 - 为子主题添加自定义挂钩

问题描述

如何修改子主题的钩子?我使用经典主题作为父母。

这是子主题的 theme.yml:

parent: classic
name: steel
display_name: steel
version: 1.0.0
assets:
  use_parent_assets: false

global_settings:

  hooks:
    modules_to_hook:

      newHook:
        - ps_languageselector

  image_types:
    cart_default:
      width: 125
      height: 125
      scope: [products]
    small_default:
      width: 98
      height: 98
      scope: [products, categories, manufacturers, suppliers]
    medium_default:
      width: 452
      height: 452
      scope: [products, manufacturers, suppliers]
    home_default:
      width: 250
      height: 250
      scope: [products]
    large_default:
      width: 800
      height: 800
      scope: [products, manufacturers, suppliers]
    category_default:
      width: 141
      height: 180
      scope: [categories]
    stores_default:
      width: 170
      height: 115
      scope: [stores]

如您所见,我已经覆盖了父主题的钩子数组 - 删除了所有默认值并添加了我创建的新主题。我还在 tpl 文件中添加了钩子标签 - {hook h='newHook'}. (顺便说一句,我还必须复制 image_types 数组,否则会出错 - 我也必须复制它吗?有点多余)

问题是 - 模板根本没有改变。在管理面板的“职位”页面中,还列出了所有旧挂钩。

我尝试将商店设置为经典模板,然后将其设置回子模板以“重新加载”它 - 没有帮助。我也用过Reset to defaults按钮。

我也尝试修改父主题的 theme.yml ,也没有改变任何东西。

实现:

我检查了 ps_hook 数据库表,发现有新的钩子。但是正如您在上面的配置中看到的那样,语言选择器应该出现在其中。但事实并非如此。它也出现在位置管理页面上,但只有当我选中“显示不可定位的钩子”时。

而且 - 它不适用于父主题 - 分配给新钩子的任何模块都不会出现。修改旧的钩子效果很好。

标签: prestashopprestashop-1.7

解决方案


我找到了解决方案。

似乎前端显示的每个钩子都需要以 . 开头的名称display。我的不是那样的。


推荐阅读