我正在尝试在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
条目。问题是,我没有制作主题特定的挂钩。我正在制作后台挂钩。如何将我的模块连接到它?
答案 0 :(得分:2)
在我看来,您似乎只是在添加自定义钩子后忘记重置模块。有必要在系统中注册您的钩子。或者,也许您没有在方法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!';
}
重置模块以注册新的挂钩。