Prestashop: Как создать Hook

Автор Виталий, 09 октября 2013, 15:27:31

« назад - далее »

Виталий

Есть несколько методов, как можно создать хук в 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

Виталий

Функция hookExec () определена в классе Module и может принимать ряд параметров, которые хранятся в переменной $params

Module::hookExec('nameofthehook')

Module::hookExec('nameofthehook', $params_array)
Cоздание интернет сайтов Webstudio UwK

coder

В 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'}

Piterpog

Цитата: coder от 06 марта 2016, 12:40:36


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



Разъясните, пожалуйста, приведённый выше кусок кода.
Не означает ли это, что при вызове функции(т.е. при вызове хука), он в точку вызова воткнёт целый tpl ?

Миколас

Так и есть. В этой точке подключит твой шаблон.