Управление хуками

Опубликовано Опубликовано в рубрике prestashop, Руководство разработчика PrestaShop, Русская документация PrestaShop 1.6

Управление хуками

Управление хуками

Хуки — это способ связать ваш код с определенными событиями PrestaShop.

В большинстве случаев они используются для вставки содержимого на страницу.

Например, домашняя страница темы по умолчанию для PrestaShop имеет следующие хуки:

Hook name
Description
displayHeader Displays the content in the page’s header area.
displayTop Displays the content in the page’s top area.
displayLeftColumn Displays the content in the page’s left column.
displayHome Displays the content in the page’s central area.
displayRightColumn Displays the content in the page’s right column.
displayFooter Displays the content in the page’s footer area.

Хуки также могут использоваться для выполнения определенных действий при определенных обстоятельствах (т. е. отправки электронной почты клиенту).

Вы можете получить полный список хуков, доступных в PrestaShop 1.6, в главе «Хуки в PrestaShop 1.6» Руководства для разработчиков. (ХЗ где это. По идее это и есть эта глава)

Использование хуков

…в контроллере

Легко вызвать хук внутри контроллера: вам просто нужно использовать его имя с помощью hookExec() метода: Module::hookExec('NameOfHook');

Например:

$this->context->smarty->assign('HOOK_LEFT_COLUMN', Module::hookExec('displayLeftColumn'));

…в модуле

Чтобы прикрепить свой код к хуку, вы должны создать не статический общедоступный метод, начинающийся с «hook» ключевого слова, за которым следует либо «display» или «action«, и имя хука, который вы хотите использовать.

Этот метод получает один (и только один) аргумент: массив контекстной информации, отправленной в хук.

public function hookDisplayNameOfHook($params)
{
    // Your code.
}

Чтобы модуль реагировал на вызов хука, хук должен быть зарегистрирован в PrestaShop. Регистрация хука выполняется с использованием registerHook() метода. Регистрация обычно выполняется во время установки модуля.

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

…в теме

Легко вызвать хук из файла шаблона (.tpl): вам просто нужно использовать его имя с помощью функции hook. Вы можете добавить имя модуля, который вы хотите выполнить.

Например:

{hook h='displayLeftColumn' mod='blockcart'}

Создание собственных хуков

Вы можете создать новые хуки PrestaShop, добавив новую запись в таблицу ps_hook в базе данных MySQL. Вы можете сделать это трудным путем:

INSERT INTO `ps_hook` (`name`, `title`, `description`) VALUES ('nameOfHook''The name of your hook''This is a custom hook!');

…но PrestaShop позволяет сделать это легким путем:

$this->registerHook('NameOfHook');

Если хук «NameOfHook» не существует, PrestaShop создаст его для вас. Больше не нужно выполнять SQL-запрос.