为了账号安全,请及时绑定邮箱和手机立即绑定

在 Prestashop 1.7 的后台显示自定义挂钩

在 Prestashop 1.7 的后台显示自定义挂钩

PHP
萧十郎 2022-07-22 18:42:29
我正在尝试在 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问题是,我没有制作特定主题的钩子。我正在做一个后台挂钩。如何将我的模块附加到它?
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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

如果您正确遵循下一个说明,那么一切都应该像魅力一样工作

  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')到 install 方法。

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

  3. 在您的主 php 文件中添加一个hookDisplayModProfit带有 return 语句的方法

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

  4. 重置你的模块以注册新的钩子。


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信