Показать пользовательский крючок в бэк-офисе в Prestashop 1.7 - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь отобразить некоторый контент в таблице продуктов по умолчанию 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. Проблема в том, что я не делаю тему, определяющую c hook Я делаю крючок для бэк-офиса. Как я могу прикрепить к нему свой модуль?

1 Ответ

2 голосов
/ 18 января 2020

Мне кажется, что вы просто забыли сбросить настройки модуля после добавления пользовательских хуков. Необходимо зарегистрировать свой хук в системе. Или, может быть, вы не добавили оператор возврата в свой метод hookDisplayModProfit.

Если вы правильно выполните следующие инструкции, все должно работать как шарм

  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 добавьте метод hookDisplayModProfit с оператором возврата

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

  4. Сбросьте ваш модуль, чтобы зарегистрировать новый хук.

...