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

Чтобы название хука отвечало его назначению — расположению, назовем хук TOPUNDER. Это будет самая верхняя часть страницы, из которой будет просто и удобно управлять модулями из админпанели.
Как известно, все модули в Prestashop имеют свое будущее положение к которому они могут быть привязаны, и это положение описано в коде файла любого модуля. Но так как все модули в магазине пользуются стандартными хуками, нам понадобится еще и модуль, который будет пользоваться вновь созданным нами хуком TOPUNDER. С создания модуля стоит и начать.
Модуль, который мы создадим, будет самый простой, его задачей будет вывести текст Hello from UNDER TOP HOOK. Назовем его BlockTopUnderHeader.

Для этого создадим папку BlockTopUnderHeader в папке modules и создадим необходимые файлы:
1. Файл модуля blocktopunderheader.php
2. Файл шаблона модуля blocktopunderheader.tpl
3. Файл иконка модуля logo.gif
В файле модуля blocktopunderheader.php неоходимо прописать вот такой код:
if (!defined('_CAN_LOAD_FILES_'))
exit;
class BlockTopUnderHeader extends Module
{
public function __construct()
{
$this->name = 'blocktopunderheader';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'Webproggi.ru';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->l('Block with links at the under top position of the page');
$this->description = $this->l('Displays a block with links such as sitemap, myaccount and others.');
}
public function install()
{
if (!$this->addTopUnderHook() OR !parent::install())
return false;
return true;
}
public function uninstall()
{
return (parent::uninstall() AND $this->removeTopUnderHook());
}
public function hookTopunder($params)
{
return $this->display(__FILE__, 'blocktopunderheader.tpl');
}
private function addTopUnderHook()
{
return Db::getInstance()->Execute('INSERT INTO <code>'._DB_PREFIX_.'hook</code> (<code>name</code>, <code>title</code>, <code>description</code>,
<code>position</code>) VALUES (\'topunder\', \'Hook under top\', \'Display under top hook\', 1)');
}
private function removeTopUnderHook()
{
return Db::getInstance()->Execute('DELETE FROM <code>'._DB_PREFIX_.'hook</code> WHERE <code>name</code> = \'topunder\'');
}
}
Здесь мы создали конструктор и пять дополнительных функций. В конструкторе прописали нужные название, версию, описание и прочую текстовую информацию нашего модуля. Далее идут функции привязки модуля к хуку TOPUNDER, а также установки и удаления модуля. В них создается — записывается хук TOPUNDER в таблицу магазина а также удаляется, при установке или удалении нашего модуля.
Далее необходимо создать blocktopunderheader.tpl — модуль шаблона, в нем прописываем следующий код:
<div class="block_topunderheader">
{l s='Hello from UNDER TOP HOOK' mod='blocktopunderheader'}
</div>
Здесь всё просто и понятно, подключаемый модуль будет выводить надпись Hello from UNDER TOP HOOK, которую затем можно перевести через админпанель.
На этом часть закончена, в следующей части будет показано как подключить и прописать хук непосредственно в код самого магазина.
