Как добавить модуль в другой hook в Prestashop 1.6 и выше версии.

Приветствую всех! Простите за мои не столь разжевывающие статьи, пишу как могу и на сколько есть хватает время. Задавайте вопросы если что то не понимаете, постараюсь вам помочь, всегда готов сделать для вас доработку за небольшое вознаграждение.

И так вернемся к нашей теме про добавление модуля в другой, но уже существующий hook. Конечно у кого нет проблем с английским языком, то я бы советовал для начала прочитать официальную документаю здесь:

http://doc.prestashop.com/display/PS16/Managing Hooks

Если ничего не понятно то в кратце:

Нам нужно добавить модуль в конце странице товара, например: HOOK_PRODUCT_FOOTER. Наши действия следующие:

1. Открываем нужный шаблон, в нашем случае product.tpl и проверяем есть ли такая позиция, если нет то позже опишу как добавить новы hook:

{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}

2. Открываем исполнительный(наверное его как раз и называют контроллер) файл модуля модуль.php

В нем ищем код с функцией:

public function install()

В нем добавляем hook в котором собираемся вывести модуль:

$this->registerHook('productFooter') && $this->installFixtures() &&

3. Дальше создаем новую функцию в данном же файле, например для блока гарантии пользователя выглядит так:

public function hookProductFooter($params) </p> <p> { </p> <p> $this->context->controller->addCSS($this->_path.'style.css', 'all'); </p> <p> if (!$this->isCached('blockreinsurance.tpl', $this->getCacheId())) </p> <p> { </p> <p> $infos = $this->getListContent($this->context->language->id); </p> <p> $this->context->smarty->assign(array('infos' => $infos, 'nbblocks' => count($infos))); </p> <p> } </p> <p> return $this->display(__FILE__, 'blockreinsurance.tpl', $this->getCacheId()); </p> <p> }

В данном коде мы указали какой использовать шаблон и что выводить. Обязательно деинсталируйте данный модуль и снова установить, и модуль появится в данном hook-е.

Добавлю, что начиная с версии Престашоп 1.6.0.11 разработчики добавили возможность переопределения (override) файлов ядра модуля. Т.е. теперь не нужно изменять файл Модуль.php и лишаться тем самым возможности его обновления, а достаточно добавить файл с таким же именем в папкуoverride/modules/изменяемыйМодуль/изменяемыйМодуль.php и вносить все необходимые изменения именно туда.

Важно! Файл должен содержать обязательную конструкцию:
Код:

<?php if (!defined('_CAN_LOAD_FILES_')) exit; class BlockSearchOverride extends BlockSearch (здесь заменяете на свое название блока) { ваш код находится здесь }

внутрь которой соответсвенно вставляете свой код

Ну и конечно, после всех изменений, не забыть удалить файл class_index.php из директории /cache

04.04.2015 00:26
4190

Комментарии

Нет комментариев. Ваш будет первым!
Загрузка...