
В версиях престашоп 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”;