В файле php вашего модуля в функции установки:
Код:
public function install()
{
if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` (`name`, `title`, `description`, `position`, `live_edit`)
VALUES(\''.pSQL('имяВашегоХука').'\', \''.pSQL('Описание вашего хука').'\', \''.pSQL('Описание вашего хука.').'\', \''.pSQL(1).'\', \''.pSQL(0).'\')'))
return false;
return true;
}
Затем объявляете в конце функцию для смарти вашего хука
Код:
public function имяВашегоХука($params)
{
ваш код
}
Ну и в файле смарти .tpl вставляете ваш хук - {$имяВашегоХука}
Вот и все.
Только не забудьте перед этим деинсталлировать ваш модуль и заново установить.
Извините, забыл сказать, созданный хук PrestaShop не опознает пока во FrontController.php его не обозначите, но файл движка не рекоммендую изменять так как при обновлении изменения в нем слетят. Выход создать модификатор. Добавьте приложенный файл в override/classes.
БлагоДарю за ответ.
что я мог сделать не так, дайте совет....
Делаю как сказано пошагово для модуля editorial (галерея)
1. правлю файл editorial.пхп
Код:
function install()
{
if (!parent::install())
return false;
// Trunk file if already exists with contents
/*
if (!$fd = @fopen(dirname(__FILE__).'/editorial.xml', 'w'))
return false;
@fclose($fd);
*/
return $this->registerHook('cat');
}
Код:
function hookcat($params)
{
if (file_exists('modules/editorial/editorial.xml'))
{
if ($xml = simplexml_load_file('modules/editorial/editorial.xml'))
{
global $cookie, $smarty;
$smarty->assign(array(
'xml' => $xml,
'homepage_logo' => file_exists('modules/editorial/homepage_logo.jpg'),
'logo_subheading' => 'logo_subheading_'.$cookie->id_lang,
'title' => 'title_'.$cookie->id_lang,
'subheading' => 'subheading_'.$cookie->id_lang,
'paragraph' => 'paragraph_'.$cookie->id_lang,
'this_path' => $this->_path
));
return $this->display(__FILE__, 'editorial.tpl');
}
2. Перед этим удалил модуль и перед установкой скопировал файл FrontController.php и отредактировал его
Код:
<?php
class FrontController extends FrontControllerCore
{
public function displayHeader()
{
if (!self::$initialized)
$this->init();
self::$smarty->assign(array
('HOOK_TOP_MENU' => Module::hookExec('cat')));
parent::displayHeader();
}
}
Возник вопрос вставлять с названием файл "FrontController.php" или "_FrontController.php" ??
Сделал первый вариант все установилось нормально.
Но в Позициях хуков не вижу этого модуля и на сайте не нахожу
3. Так же добавил в файл category.tpl
два хука так как не был уверен в точном названии
{$HOOK_CAT}
{$HOOKCAT}
Буду Благодарен за любой совет