簡體   English   中英

在 Prestashop 1.7 的后台顯示自定義掛鈎

[英]Display a custom hook in the Back Office in Prestashop 1.7

我正在嘗試在 Prestashop 的默認產品表中顯示一些內容。 我已經設法覆蓋了樹枝模板{% extends 'PrestaShopBundle:Admin/Product/CatalogPage/Lists:list.html.twig' %}

我通過在覆蓋模板中輸入一個隨機字符串來驗證它,它成功地出現在產品列表中。

之后,我在我的模塊中創建了一個自定義鈎子:

$this->registerHook('displayModProfit');

我驗證了鈎子已在ps_hook數據庫中注冊。 它是。

我在我的模塊中添加了一個方法,以便顯示帶有鈎子的測試消息。 該方法稱為hookDisplayModProfit

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

然而,它沒有用。 在我希望出現測試消息的地方沒有顯示任何內容。 我檢查了數據庫並意識到我的模塊沒有連接到鈎子上。 我也無法在后台“職位”選項卡中找到掛鈎。

我對此進行了一些閱讀,人們建議在theme.yml文件中添加一個custom_hooks條目。 問題是,我沒有制作特定於主題的鈎子。 我正在制作一個后台掛鈎。 如何將我的模塊連接到它?

在我看來,您只是在添加自定義鈎子后忘記了重置模塊。 有必要在系統中注冊您的鈎子。 或者,您可能沒有在方法hookDisplayModProfit添加 return 語句。

如果您正確地遵循下一個說明,一切都應該像魅力一樣

  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')到安裝方法中。

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

  3. 在你的主 php 文件中添加一個帶有 return 語句的方法hookDisplayModProfit

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

  4. 重置您的模塊以注冊新的鈎子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM