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

09 Октябрь 2013, 15:27:31
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-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
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Функция hookExec () определена в классе Module и может принимать ряд параметров, которые хранятся в переменной $params
Module::hookExec('nameofthehook')

Module::hookExec('nameofthehook', $params_array)
Cоздание интернет сайтов Webstudio UwK
06 Март 2016, 12:40:36
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-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'}
21 Июль 2017, 22:14:58
Ответ #3
  • Новичок
  • *
  • Сообщений: 34
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля

public function hookMyCustomHook($params)
{
    return $this->display(__FILE__, 'mymodule.tpl');
}


Разъясните, пожалуйста, приведённый выше кусок кода.
Не означает ли это, что при вызове функции(т.е. при вызове хука), он в точку вызова воткнёт целый tpl ?
21 Июль 2017, 22:48:29
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Так и есть. В этой точке подключит твой шаблон.