Использование хуков в prestashop 1.6.x и 1.7.x — продолжение

В версиях престашоп 1.6 и 1.7 есть возможность регистрации хука в коде создаваемого модуля. Рассмотрим пример — создадим хук, который будет вызываться из Smarty шаблона темы таким простым кодом:
1 |
{hook h='displayPrimerHook' mod='primermodule'} |
где displayPrimerHook — название хука, primermodule — название модуля.
Для такого варианта обработки хука при установке модуля необходимо зарегистрировать хук в коде php:
1 2 3 4 5 6 7 8 |
public function install() { if (parent::install() && $this->registerHook('displayPrimerHook')) { КОД МОДУЛЯ ДЛЯ ПРОДОЛЖЕНИЯ УСТАНОВКИ } return false; } |
Регистрация хука происходит именно здесь:
1 |
$this->registerHook('displayPrimerHook'); |
И создать обработчик функцию хука:
1 2 3 4 |
public function hookdisplayPrimerHook() { КОД ОБРАБОТКИ ХУКА } |
После установки модуля и вызова кода из шаблона Smarty:
1 |
{hook h='displayPrimerHook' mod='primermodule'} |
Будет происходить его обработка, согласно кода функции обработчика.
Вызывать зарегистрированный хук можно и таким динамическим видом из кода php:
1 |
Hook::exec('displayPrimerHook'); |
или из Smarty шаблона:
1 |
{hook h='displayPrimerHook'} |
Код, который вызывается хуком, должен быть также определен в виде функции.
Для версии prestashop 1.7 появилась возможность регистрации хука в файле конфигурации темы theme.yml в блоке hooks. Там же можно прописать модули для этого хука, выглядит всё так:
Для вызова хука из шаблона Smarty применяется такой вид:
1 |
{hook h='displayPrimerHook'} |
Регистрация хука через файл конфигурации, работает при установке темы.
Что такое «код модуля»?
Какой «код обработки хука» нужно писать, просто для того, что бы модуль отображался в новом хуке?
Код модуля – php код.
Код обработки хука – php код, обрабатывающий эту функцию. К примеру echo»Kod obrabotki»;