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

К сожалению, просто прописав хук в базе данных и работать с ним — не получится. Чтобы хук появился в header.tpl Prestashop, его нужно туда передать при помощи перезагрузки самого ядра. Как уже писалось О перезагрузке ядра в Prestashop 1.4 чтобы перезагрузить ядро нужно переопределить методы которые отвечают за вывод нужных нам переменных. Но так как мы создаем переменную, то ее нужно просто создать — прописав нужное значение.
За часть вывода информации в нужном нам месте отвечает контроллер FrontController (FrontController.php), его то мы и перезагрузим, но не полностью а только публичную функцию displayHeader, которая отвечает за присвоение переменных шаблонизатору Smarty. Итак все что нужно это вставить в то место где присваиваются все переменные, вот такой код:
'HOOK_TOPUNDER' => Module::hookExec('topunder')
Всё готово, теперь, для того чтобы показать модуль, который создавался в первой части Создание собственного хука (hook) в Prestashop 1.4 (Часть 1) нужно просто зайти в панель администрирования, установить модуль:
Прописать в файле шаблона header.tpl в нужном месте метку {$HOOK_TOPUNDER}. Прикрепить модуль к хуку topunder через административную панель:
В результате мы получим нужный модуль в нужном месте страницы.
Спасибо за хорошую статью. Очень помогли разобраться. Но появился у меня вопрос к Вам. (На примере вашей статьи) Как заставить выводить UNDER TOP HOOK не в файле Header.tpl шаблона, а например в файле http:/localhost/dir/under.tpl, не меняя шаблона. Буду признателен Вам, если ответите на почту.
Был занят немного, поэтому отвечаю как есть:
В дополнение к тому, что я описал, вам придется еще создать дополнительную функцию, которая будет отвечать за вывод новой страницы (under.tpl) — к примеру displayUnder(), и прописать все это в FrontController, и в функции run(), ну и создать сам файл шаблона under.tpl конечно.
К сожалению, просто прописав хук в базе данных и работать с ним – не получится. — все получится — просто в админ панели поставить галочку Показать не позиционируемые hook-и
Спасибо, полезная статья 🙂
Спасибо за статью. Подскажите пожалуйста как можно (модуль текстовый редактор главной страници) содержимое разместить на другой странице шаблона.
Спасибо, очень познавательно.
Только что-то у меня не выводится ничего в модуле.
Может не туда прописываю {$HOOK_TOPUNDER} в header.tpl ?
Чего можно сделать? Presta 1.4.5.1 и 1.4.6.2. Шаблон от 1.5 версии.
Еще раз хочу поблагодарить автора.
Спасибо!
Сам нашёл где лажанулся.
Модуль полностью рабочий.
Спасибо за статью. Я так понимаю это не перевод а ваше личное. Если так то пожалуйста напишите как можно активировать встроенный дебаг если он там есть, что бы видеть что и как куда передается.
И если нет может есть какое то простое решение типа в нужном месте var_dump с нужным объектом вставить
Можно использовать {debug} в шаблонах smarty,
также можно включить для отладки в config.inc.php в папке config
спасибо
Спасибо за труды, но у меня вопрос как прописать {$HOOK_TOPUNDER} в header.tpl для того что бы хук был на вновь созданной странице?
prestashop — классная система для магазина, в отличие от виртумарта для joomla, но в joomla любой модуль можно воткнуть в любую позицию шаблона одним щелчком пальца. жаль, что здесь такая сложная реализация.
У меня в пути «override/classes/» нет файла FrontController.php, в этом каталоге есть только «_FrontController.php»
Что делать?
Создать