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

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

我通过在覆盖的模板中键入随机字符串来验证它,并且它成功出现在产品列表中。

之后,我在我的模块中创建了一个自定义钩子:

$this->registerHook('displayModProfit');

我验证了钩子是否已在数据库中注册。是的。ps_hook

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

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

但是,它不起作用。在我想要测试消息显示的位置没有显示任何内容。我检查了数据库,意识到我的模块没有附加到钩子上。我在后台“职位”选项卡中也找不到钩子。

我读了一点,人们建议在文件中添加一个条目。问题是,我不是在做一个特定主题的钩子。我正在制作一个后台钩子。如何将我的模块附加到它?custom_hookstheme.yml


白板的微信
浏览 174回答 1
1回答

翻过高山走不出你

在我看来,您只是忘记在自定义钩子添加后重置模块。有必要在系统中注册您的钩子。或者,您可能没有在方法中添加返回语句。hookDisplayModProfit如果您正确遵循下一个说明,一切都应该像超级按钮一样工作覆盖树枝模板文件。将同名文件放在模块内的正确目录中。在您的情况下,它是 并扩展原始文件 。不要忘记,我们只能扩展原始模板中存在的块。例如: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 %}在您的模块主php文件中添加到安装方法中。$this->registerHook('displayModProfit')public function install() {    return parent::install() && $this->registerHook('displayModProfit'); }在主 php 文件中,添加一个带有 return 语句的方法hookDisplayModProfitpublic function hookDisplayModProfit() {    return 'Hello world!'; }重置模块以注册新挂钩。
打开App,查看更多内容
随时随地看视频慕课网APP