[在Prestashop 1.7的后台中显示自定义钩子

问题描述 投票:0回答:1

我正在尝试在Prestashop的默认产品表中显示一些内容。我已经设法覆盖了树枝模板{% extends 'PrestaShopBundle:Admin/Product/CatalogPage/Lists:list.html.twig' %}

我通过在替代模板中输入随机字符串进行验证,并且该字符串成功出现在产品列表中。

之后,我在模块中使用以下方法创建了一个自定义钩子:

$this->registerHook('displayModProfit');

我已验证该挂钩已在ps_hook数据库中注册。是。

我在模块中添加了一个方法,以显示带有挂钩的测试消息。该方法称为hookDisplayModProfit

然后我在覆盖的{{ renderhook('displayModProfit') }}模板中使用了list.html.twig

但是,它没有用。我希望测试消息出现在什么地方都没有显示。我检查了数据库,并意识到我的模块未连接到挂钩。我也无法在“后台”“位置”选项卡中找到该挂钩。

我阅读了一些,人们建议在custom_hooks文件中添加theme.yml条目。问题是,我没有制作主题特定的挂钩。我正在制作后台挂钩。如何将模块连接到它?

php twig prestashop prestashop-1.7
1个回答
2
投票

对我来说,您似乎只是在添加自定义钩子之后忘记重置模块。有必要在系统中注册您的钩子。或者,也许您没有在方法hookDisplayModProfit中添加return语句。

如果正确遵循以下说明,所有内容都应像超级按钮一样工作

  1. 覆盖您的树枝模板文件。将具有相同名称的文件放在模块内部的正确目录中。您的情况是your_module/views/PrestaShop/Admin/Product/CatalogPage/Lists/list.html.twig,并扩展原始文件{% extends 'PrestaShopBundle:Admin/Product/CatalogPage/Lists:list.html.twig' %}。不要忘记,我们只能扩展原始模板中存在的一个块。例如:

    {% block product_catalog_form_table_row %} {{ renderhook('displayModProfit') }} {% endblock %}

  2. 在您的模块主php文件中,将$this->registerHook('displayModProfit')添加到安装方法。

    public function install() { return parent::install() && $this->registerHook('displayModProfit'); }

  3. 在您的主要php文件中,添加带有返回语句的方法hookDisplayModProfit

    public function hookDisplayModProfit() { return 'Hello world!'; }

  4. 重置您的模块以注册新的挂钩。

© www.soinside.com 2019 - 2024. All rights reserved.