我正在尝试在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
条目。问题是,我没有制作主题特定的挂钩。我正在制作后台挂钩。如何将模块连接到它?
对我来说,您似乎只是在添加自定义钩子之后忘记重置模块。有必要在系统中注册您的钩子。或者,也许您没有在方法hookDisplayModProfit
中添加return语句。
如果正确遵循以下说明,所有内容都应像超级按钮一样工作
覆盖您的树枝模板文件。将具有相同名称的文件放在模块内部的正确目录中。您的情况是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文件中,添加带有返回语句的方法hookDisplayModProfit
public function hookDisplayModProfit()
{
return 'Hello world!';
}
重置您的模块以注册新的挂钩。