Управление хуками
Управление хуками
Хуки — это способ связать ваш код с определенными событиями 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-запрос.