Автор Тема: Prestashop: Как создать Hook  (Прочитано 6184 раз)

09 Октября 2013, 15:27:31
  • Ветеран
  • *****
  • Сообщений: 105578
  • Репутация: +39546/-0
    • Просмотр профиля
    • Webstudio UwK
Есть несколько методов, как можно создать хук в prestashop.
Для prestashop 1.5 достаточно объявить хук в создаваемом модуле и создать одноименую функцию.

Для prestashop версии 1.4.
1. Добавить hook в таблицу "ps_hook" .
Можно с помощью phpMyadmin. Откройте свою базу данных и добавьте новый хук:
INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`)
VALUES (NULL, 'myhook', 'Это мой хук', 'Новый хук', '1', '1');

2. Добавить метод для определения нового хука в класс FrontController.
Лучше переопределить этот класс и создать в "override/classes/" файл FrontController.php, где описать новый хук:
class FrontController extends FrontControllerCore {
        public function displayHeader()
        {
        if (!self::$initialized)
            parent::init();
        self::$smarty->assign(array(
                'HOOK_MYHOOK' => Module::hookExec('myhook')
                ));
               return parent::displayHeader();
}
}

После этого можно использовать новый хук в шаблонах и модулях.
Cоздание интернет сайтов Webstudio UwK
22 Апреля 2014, 21:21:53
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 105578
  • Репутация: +39546/-0
    • Просмотр профиля
    • Webstudio UwK
Функция hookExec () определена в классе Module и может принимать ряд параметров, которые хранятся в переменной $params
Module::hookExec('nameofthehook')

Module::hookExec('nameofthehook', $params_array)
Cоздание интернет сайтов Webstudio UwK
06 Марта 2016, 12:40:36
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32999
  • Репутация: +26759/-0
    • Просмотр профиля
В prestashop 1.5 и 1.6.
В модуле добавить хук в install, создать одноименную функцию и создать шаблон tpl.
public function install() {
    if !parent::install() || !$this->registerHook('myCustomHook'))
        return false;
    return true;
}
public function hookMyCustomHook($params)
{
    return $this->display(__FILE__, 'mymodule.tpl');
}

В шаблоне страницы, на которой нужно вывести шаблон модуля, добавить код
{hook h='myCustomHook'}