Ответить Новая тема Новый опрос 
 Создание нового хука
Demic
Новичок
Сообщений: 16
Регистрация: 26-02-2012


27-02-2012 00:27
День добрый форумчане.

Возникла сложность с созданием нового хука для раздела категории.
На главной странице выводу разделы, но есть одна категория где нужно вместо перечня подкатегорий с товарами вывести галерею с изображениями.
С этого момента начались сложности. Оказывается все галереи рассчитаны на вывод на главной странице и перетащить методом изменения позиций не удается. Говорит что модуль галереи рассчитан только для главной страницы.

Посоветуйте как обойти данную сложность.

П.С. пробовал создать новый хук. Оказалось что данная найденная мной инструкция по созданию нового хука была написана под версию 1,3.
описание взял с сайта http://look-in.net/2010/03/24/prestashop-template-hook/
Первый пункт в создании нового хука в БД выполнил нормально, но с пунктом 2 вышла сложность ввиду отсутствия в файле footer.php
нужный строк, а именно
$smarty->assign(array(

'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),

'HOOK_FOOTER' => Module::hookExec('footer'),

'content_only' => intval(Tools::getValue('content_only'))));

$smarty->display(_PS_THEME_DIR_.'footer.tpl');

Буду признательный за помощь и советы
БлагоДарю
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Anton


Профессионал
Сообщений: 462
Регистрация: 24-02-2011


27-02-2012 01:11
Хуки для модулей нужны - ваша галерея изображений - это модуль?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Demic
Новичок
Сообщений: 16
Регистрация: 26-02-2012


27-02-2012 06:17
Цитата:( Anton @ 26-02-2012 20:11 Смотреть сообщение )
Хуки для модулей нужны - ваша галерея изображений - это модуль?

естественно иначе зачем мне хук создавать :cold:
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Demic
Новичок
Сообщений: 16
Регистрация: 26-02-2012


01-03-2012 18:21
Тут что люди помогают решить лишь мелкие вопросы, аля поменять запрос к базе?
ЧТо никто не создавал новых хуков?
и не пробовал галерею разместить в один из разделов категорий?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Anton


Профессионал
Сообщений: 462
Регистрация: 24-02-2011


01-03-2012 20:04
В файле 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 вставляете ваш хук - {$имяВашегоХука}
Вот и все.
Только не забудьте перед этим деинсталлировать ваш модуль и заново установить.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Anton


Профессионал
Сообщений: 462
Регистрация: 24-02-2011


01-03-2012 20:32
Извините, забыл сказать, созданный хук PrestaShop не опознает пока во FrontController.php его не обозначите, но файл движка не рекоммендую изменять так как при обновлении изменения в нем слетят. Выход создать модификатор. Добавьте приложенный файл в override/classes.


Вложения:

Вложения FrontController.php( Размер файла: 323Bytes Скачиваний: 281 )
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Demic
Новичок
Сообщений: 16
Регистрация: 26-02-2012


08-03-2012 21:53
Цитата:( Anton @ 01-03-2012 15:04 Смотреть сообщение )
В файле 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 вставляете ваш хук - {$имяВашегоХука}
Вот и все.
Только не забудьте перед этим деинсталлировать ваш модуль и заново установить.




Цитата:( Anton @ 01-03-2012 15:32 Смотреть сообщение )
Извините, забыл сказать, созданный хук 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}

Буду Благодарен за любой совет
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос