在 Prestashop 1.7 的后台显示自定义挂钩
Display a custom hook in the Back Office in Prestashop 1.7
我试图在 Prestashop 的默认产品 table 中显示一些内容。我已经设法覆盖了树枝模板 {% extends 'PrestaShopBundle:Admin/Product/CatalogPage/Lists:list.html.twig' %}
.
我通过在覆盖模板中输入随机字符串进行验证,它成功出现在产品列表中。
之后,我在我的模块中创建了一个自定义挂钩:
$this->registerHook('displayModProfit');
我确认挂钩已在 ps_hook
数据库中注册。是的。
我在我的模块中添加了一个方法来显示带有挂钩的测试消息。该方法称为 hookDisplayModProfit
.
然后我在覆盖的 list.html.twig
模板中使用了 {{ renderhook('displayModProfit') }}
。
然而,它没有用。我希望显示测试消息的地方没有显示任何内容。我检查了数据库,发现我的模块没有挂钩。我在后台 "Positions" 选项卡中也找不到挂钩。
我读了一些这方面的内容,人们建议在 theme.yml
文件中添加一个 custom_hooks
条目。问题是,我没有制作特定于主题的挂钩。我正在做一个后台挂钩。如何将我的模块附加到它?
在我看来,您只是在添加自定义挂钩后忘记了重置模块。有必要在系统中注册您的挂钩。或者您可能没有在方法 hookDisplayModProfit
.
中添加 return 语句
如果您正确地按照接下来的说明进行操作,一切都会顺利进行
覆盖您的 twig 模板文件。将具有相同名称的文件放在模块内的正确目录中。在您的情况下,它是 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 语句
的方法 hookDisplayModProfit
public function hookDisplayModProfit()
{
return 'Hello world!';
}
重置您的模块以注册新挂钩。
我试图在 Prestashop 的默认产品 table 中显示一些内容。我已经设法覆盖了树枝模板 {% extends 'PrestaShopBundle:Admin/Product/CatalogPage/Lists:list.html.twig' %}
.
我通过在覆盖模板中输入随机字符串进行验证,它成功出现在产品列表中。
之后,我在我的模块中创建了一个自定义挂钩:
$this->registerHook('displayModProfit');
我确认挂钩已在 ps_hook
数据库中注册。是的。
我在我的模块中添加了一个方法来显示带有挂钩的测试消息。该方法称为 hookDisplayModProfit
.
然后我在覆盖的 list.html.twig
模板中使用了 {{ renderhook('displayModProfit') }}
。
然而,它没有用。我希望显示测试消息的地方没有显示任何内容。我检查了数据库,发现我的模块没有挂钩。我在后台 "Positions" 选项卡中也找不到挂钩。
我读了一些这方面的内容,人们建议在 theme.yml
文件中添加一个 custom_hooks
条目。问题是,我没有制作特定于主题的挂钩。我正在做一个后台挂钩。如何将我的模块附加到它?
在我看来,您只是在添加自定义挂钩后忘记了重置模块。有必要在系统中注册您的挂钩。或者您可能没有在方法 hookDisplayModProfit
.
如果您正确地按照接下来的说明进行操作,一切都会顺利进行
覆盖您的 twig 模板文件。将具有相同名称的文件放在模块内的正确目录中。在您的情况下,它是
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 语句
的方法hookDisplayModProfit
public function hookDisplayModProfit() { return 'Hello world!'; }
重置您的模块以注册新挂钩。