Prestashop 1.7 中的自定义钩子

Posted

技术标签:

【中文标题】Prestashop 1.7 中的自定义钩子【英文标题】:Custom Hooks in Prestashop 1.7 【发布时间】:2017-05-22 12:24:06 【问题描述】:

我尝试为滑块模块为 Prestashop 1.7.0.3 创建一个自定义 Hook。我插入:

displaySlider: - ps_imageslider

在“钩子”块上的 theme.yml 文件上。 然后插入:

if $page.page_name == 'index' 
   hook h='displaySlider'
/if 

在主题/模板/布局/layout-both-columns.tpl 文件的标题和部分 id=”wrapper” 标签之间。根据这篇文章:Custom Hooks in Prestashop 1.7 一切正常,但是当我尝试从后端更改滑块模块位置时,可用的钩子上没有显示钩子。

【问题讨论】:

【参考方案1】:

所以要清楚。在 Prestashop 中添加新钩子

    在 \themes\yourTheme\config\theme.yml 中添加
自定义钩子: - 名称:displayYourCustomHook - 标题:displayYourCustomHook - 描述:这是一个自定义钩子
    在同一文件中,在 modules_to_hook 部分:
 displayYourCustomHook:
        - ps_moduleIwantoHook
        - ps_anotherModuleIwantToHook

    您想在 .tpl 文件中的任何位置添加挂钩:
... hook h='displayYourCustomHook' ...
    最后,从您的后台,您将当前主题更改为不同的主题,然后保存。之后,您更改为以前的主题(您实际要使用的主题),再次保存,您的钩子应该可见。这样做的目的是“刷新”您的 Prestashop 网站识别的钩子。

这适用于 Prestashop 1.7.7

【讨论】:

【参考方案2】:

我看到我在 2 年前投票给自己接受的解决方案,但现在想出了一个更好的解决方案。 根据Prestashop 1.7 hooks doc,您所要做的就是将您的钩子注册为任何其他正常的钩子,它将自动创建。所以粘贴类似的东西:

$this->registerHook('displayAtSpecificPlace');

在你的模块中 install() 并重新安装模块。

【讨论】:

【参考方案3】:

我花了很多时间寻找为什么我的自定义钩子没有出现在前面,谢谢你的提示。

为了改进流程,您可以在外观 > 主题和徽标中使用重置按钮。

这避免了必须激活另一个主题。

【讨论】:

【参考方案4】:

我今天也在处理同样的问题。

而且我成功让它出现,这可能不是好方法,我希望它不是好方法,因为它很奇怪。

在你的 theme.yml 中你必须像这样设置你的钩子:

global_settings:
  hooks:
    custom_hooks:
      - name: displayFooterBefore
        title: displayFooterBefore
        description: Add a widget area above the footer

如果你想在职位页面中看到你的钩子,你必须切换到另一个模板并返回你的模板。 (有点刷新)

您还可以检查 Prestashop 中的不完整文档: http://developers.prestashop.com/themes/hooks/index.html

我希望有另一种方法来刷新这个页面中的钩子......

【讨论】:

谢谢。是的,我切换到另一个模板,然后回到我的,一切正常。我也相信这不是正确的方式,但正在工作,所以谢谢你的解决方案。 “您必须切换到另一个模板并返回您的模板”听起来您必须切换主题?我相信删除 shop[n].json 文件可以达到同样的效果。唉,对我来说,这些“技巧”都不会显示我的新钩子! :(

以上是关于Prestashop 1.7 中的自定义钩子的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 prestashop 1.7 上的模块在前台创建自定义页面

PRESTASHOP 1.7 ||如何在CSM自定义页面上使用某些参数配置Friendly Url?

prestashop 中的自定义价格计算

Prestashop 1.7在管理产品页面上添加自定义字段

在结帐 prestashop 1.7 中添加字段

Prestashop 1.7 上的 Prestashop1.6 主题