Создание собственного хука (hook) в Prestashop 1.4 (Часть 2)

Создание собственного хука (hook) в Prestashop 1.4 (Часть 2)
Итак, после того как хук TOPUNDER создан, теперь необходимо прописать его в самом шаблоне smarty и передать через переменную, назовем ее к примеру, HOOK_TOPUNDER. Эту переменную затем можно использовать в нашем файле шаблона header.tpl просто прописав {$HOOK_TOPUNDER}.


К сожалению, просто прописав хук в базе данных и работать с ним – не получится. Чтобы хук появился в header.tpl Prestashop, его нужно туда передать при помощи перезагрузки самого ядра. Как уже писалось О перезагрузке ядра в Prestashop 1.4 чтобы перезагрузить ядро нужно переопределить методы которые отвечают за вывод нужных нам переменных. Но так как мы создаем переменную, то ее нужно просто создать – прописав нужное значение.

За часть вывода информации в нужном нам месте отвечает контроллер FrontController (FrontController.php), его то мы и перезагрузим, но не полностью а только публичную функцию displayHeader, которая отвечает за присвоение переменных шаблонизатору Smarty. Итак все что нужно это вставить в то место где присваиваются все переменные, вот такой код:

'HOOK_TOPUNDER' => Module::hookExec('topunder')

Всё готово, теперь, для того чтобы показать модуль, который создавался в первой части Создание собственного хука (hook) в Prestashop 1.4 (Часть 1) нужно просто зайти в панель администрирования, установить модуль:

Создание собственного хука (hook) в Prestashop 1.4 - установка модуля

Прописать в файле шаблона header.tpl в нужном месте метку {$HOOK_TOPUNDER}. Прикрепить модуль к хуку topunder через административную панель:

Создание собственного хука (hook) в Prestashop 1.4 - прикрепление модуля

В результате мы получим нужный модуль в нужном месте страницы.


Также Вы можете оставить комментарий:

14 комментариев к записи “Создание собственного хука (hook) в Prestashop 1.4 (Часть 2)”

  1. Виталий:

    Спасибо за хорошую статью. Очень помогли разобраться. Но появился у меня вопрос к Вам. (На примере вашей статьи) Как заставить выводить UNDER TOP HOOK не в файле Header.tpl шаблона, а например в файле http:/localhost/dir/under.tpl, не меняя шаблона. Буду признателен Вам, если ответите на почту.

    • Был занят немного, поэтому отвечаю как есть:
      В дополнение к тому, что я описал, вам придется еще создать дополнительную функцию, которая будет отвечать за вывод новой страницы (under.tpl) – к примеру displayUnder(), и прописать все это в FrontController, и в функции run(), ну и создать сам файл шаблона under.tpl конечно.

  2. Дмитрий:

    К сожалению, просто прописав хук в базе данных и работать с ним – не получится. – все получится – просто в админ панели поставить галочку Показать не позиционируемые hook-и

  3. Баха:

    Спасибо, полезная статья 🙂

  4. Alex:

    Спасибо за статью. Подскажите пожалуйста как можно (модуль текстовый редактор главной страници) содержимое разместить на другой странице шаблона.

  5. Александр:

    Спасибо, очень познавательно.
    Только что-то у меня не выводится ничего в модуле.
    Может не туда прописываю {$HOOK_TOPUNDER} в header.tpl ?
    Чего можно сделать? Presta 1.4.5.1 и 1.4.6.2. Шаблон от 1.5 версии.

    • Александр:

      Еще раз хочу поблагодарить автора.
      Спасибо!
      Сам нашёл где лажанулся.
      Модуль полностью рабочий.

  6. debug:

    Спасибо за статью. Я так понимаю это не перевод а ваше личное. Если так то пожалуйста напишите как можно активировать встроенный дебаг если он там есть, что бы видеть что и как куда передается.

    И если нет может есть какое то простое решение типа в нужном месте var_dump с нужным объектом вставить

  7. Евгений:

    Спасибо за труды, но у меня вопрос как прописать {$HOOK_TOPUNDER} в header.tpl для того что бы хук был на вновь созданной странице?

  8. egor:

    prestashop – классная система для магазина, в отличие от виртумарта для joomla, но в joomla любой модуль можно воткнуть в любую позицию шаблона одним щелчком пальца. жаль, что здесь такая сложная реализация.

  9. Владимир:

    У меня в пути “override/classes/” нет файла FrontController.php, в этом каталоге есть только “_FrontController.php”
    Что делать?

Оставить комментарий

− 2 = семь