Версия для печати
Оригинальная версия ( http://prestadev.ru/forum/tema-340.html )

PrestaShop CMS :: Русская поддержка интернет-магазина PrestaShop > Дизайн, шаблоны > Вопрос по HOOK'ам ({$HOOK_TOP})


Разместил: Virtuose Время: 15-11-2009 18:40
Вопрос такой: в файле header.tpl есть один из хуков: {$HOOK_TOP} в который входят поиск, информация о пользователе, валюта и т.п. Что надо сделать, чтобы, допустим, поиск я мог вставить в любую созданную мною таблицу?
Где и что менять?
P.S. Много работал с другими двигами, с этим сегодня впервый раз столкнулся

Разместил: Алекс Время: 16-11-2009 12:10
Цитата:( Virtuose @ 15-11-2009 19:40 Смотреть сообщение )
Вопрос такой: в файле header.tpl есть один из хуков: {$HOOK_TOP} в который входят поиск, информация о пользователе, валюта и т.п. Что надо сделать, чтобы, допустим, поиск я мог вставить в любую созданную мною таблицу?
Где и что менять?
P.S. Много работал с другими двигами, с этим сегодня впервый раз столкнулся

Что за таблица? в Престашоп менять позицию можно только по хукам их много но основные это:
  • HOOK_HOME (главная станица)
  • HOOK_HEADER (хидер, до боди)
  • HOOK_TOP (хидер сайта)
  • HOOK_FOOTER (футер сайта)
  • HOOK_LEFT_COLUMN (левый блок)
  • HOOK_RIGHT_COLUMN (правый блок)

Изменить позицию нужного модуля можно в Панель Управления >> Модули >> Позиции > Расположить модуль

Разместил: Virtuose Время: 16-11-2009 18:11
Цитата:( Алекс @ 16-11-2009 16:10 Смотреть сообщение )
Цитата:( Virtuose @ 15-11-2009 19:40 Смотреть сообщение )
Вопрос такой: в файле header.tpl есть один из хуков: {$HOOK_TOP} в который входят поиск, информация о пользователе, валюта и т.п. Что надо сделать, чтобы, допустим, поиск я мог вставить в любую созданную мною таблицу?
Где и что менять?
P.S. Много работал с другими двигами, с этим сегодня впервый раз столкнулся
Что за таблица? в Престашоп менять позицию можно только по хукам их много но основные это:

  • HOOK_HOME (главная станица)
  • HOOK_HEADER (хидер, до боди)
  • HOOK_TOP (хидер сайта)
  • HOOK_FOOTER (футер сайта)
  • HOOK_LEFT_COLUMN (левый блок)
  • HOOK_RIGHT_COLUMN (правый блок)

Изменить позицию нужного модуля можно в Панель Управления >> Модули >> Позиции > Расположить модуль

То, что между хуками менять расположение модулей можно, я уже понял.
В процессе вёрстки дизайна возник резонный вопрос: необходимо создать свои хуки, чтобы можно было, допустим, воткнуть поиск в ЛЮБОЕ место сайта.

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

Покурил... нашёл в header.php строки подключения хуков:
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'), и т.д.

..естественно подобным же образом подключил свой, созданный ранее..

Обновил страницу.... нихрена не увидел желаемого результата.

Скажите пожалуйста, кде что не так?

Разместил: Virtuose Время: 16-11-2009 19:10
Всё, разобрался сам.
Надо было, как писал уважаемый Алекс в других постах, привязать модуль к отображению в своём хуке.

Тему можно закрывать.

Разместил: Soronorus Время: 23-03-2010 17:13
подскажи если не сложно, решил создать свой хук
добавил его в таблицу ps_hook
добавил описание в global.css
добавил вызов header.php
заправил через админку в этот хук корзину и 0 на массу. нечего не изменилось

что ещё сделать нужно???

Разместил: Virtuose Время: 24-03-2010 05:23
Тот модуль, который ты переносишь, нужно обязательно удалить из старого хука - это раз.
И второе - в самом модуле в файле .php есть пару строк кода, которые привязывают его к определённым хукам, поэтому нужно ручками дописать свой хук.

Сейчас на работе, под рукой нет двига, чтобы на пальцах показать. Позже отпишусь.

Разместил: Soronorus Время: 24-03-2010 16:57
c переносом козины я разобрался чтобы она была в топе нужно всего навсего в
в blockcart.php который в module добавить строчки
function hookTop($params)
{
return $this->hookRightColumn($params);
}
и корзину мона запихивать в топ.
правда пока не понял как сделать чтобы она была справа

Разместил: vgray Время: 01-04-2010 16:29
Столкнулся с такой же проблемой. Сначала хотел делать свой хук, у престы система модулей написана так что в модуле должно быть прописано на какие хуки он может цепляться. Те пришлось бы не только код престы изменять, но и код модулей. Пошел другим путем.

1) добавляю в файл smarty.config.inc.php код

function smartyDirectModuleCall($params, &$smarty) {
$output = '';
$moduleInstance = Module::getInstanceByName($params['name']);

if (!$moduleInstance) return $output;
if ( is_callable(array($moduleInstance, 'hook'.$params['hook'])))
$output .= call_user_func(array($moduleInstance, 'hook'.$params['hook']));

return $output;
}

$smarty->register_function('dmc', 'smartyDirectModuleCall');

2) в нужном месте шаблона пишу
{dmc name='blockuserinfo' hook='Top'}

Разместил: sanya160 Время: 29-05-2010 13:58
Подскажите где находятся файлы самого Хука, что бы можно было править сам Хук, меня интересует непосредственно {HOOK TOP}, хочу поменять иконки, ссылки, и так далее.
Но на будущее можно и узнать где все остальные Хуки

Разместил: YellowDuck Время: 03-06-2010 03:13
Подскажите, плиз., как скрыть модули из правого и левого хука? Например, когда покупатель оформляет заказ.

Разместил: Алекс Время: 03-06-2010 13:03
Цитата:( YellowDuck @ 03-06-2010 04:13 Смотреть сообщение )
Подскажите, плиз., как скрыть модули из правого и левого хука? Например, когда покупатель оформляет заказ.

1. Панель Управления >> Модули >> Позиции
2. Выбираем модуль > Редактировать
3. В Исключения добавляем order.php и тп. (смотрим по переходам)

Можно через шаблоны, пример:
Код:
{if $page_name !== 'order'}здесь шаблон скрываемого блока{/if}

Разместил: YellowDuck Время: 03-06-2010 13:46
Алекс, спасибо большое, как все просто оказывается, недоглядел в админке

Разместил: Dimension Время: 12-09-2010 17:34
Цитата:( vgray @ 01-04-2010 17:29 Смотреть сообщение )
Столкнулся с такой же проблемой. Сначала хотел делать свой хук, у престы система модулей написана так что в модуле должно быть прописано на какие хуки он может цепляться. Те пришлось бы не только код престы изменять, но и код модулей.  Пошел другим путем.

1) добавляю в файл smarty.config.inc.php код

function smartyDirectModuleCall($params, &$smarty) {
        $output = '';
        $moduleInstance = Module::getInstanceByName($params['name']);

        if (!$moduleInstance) return $output;
        if ( is_callable(array($moduleInstance, 'hook'.$params['hook'])))
                $output .= call_user_func(array($moduleInstance, 'hook'.$params['hook']));

                return $output;
}

$smarty->register_function('dmc', 'smartyDirectModuleCall');   

2) в нужном месте шаблона пишу
{dmc name='blockuserinfo' hook='Top'}


Не работает. Версия 0.9 (1.3.1)
Пытался ради примера рекламный блок поставить в футер - не выходит.
<div id="header_new">{dmc name='blockadvertising' hook='Footer'}</div>
В настройках позиционирования модуля расположил тамже, шаблон header.tpl

Подскажите что нужно в самом модуле прописывать?
Пользовался этой инструкцией http://www.mirsaytov.net/cms/prestashop/sozdanie-novogo-xuka-hook-ili-poziciya-v-shablonax-prestashop.html


Сообщение отредактировано Dimension 12-09-2010 18:35 ...

Разместил: Dimension Время: 12-09-2010 18:53
Такого модуля случаем нет ни у кого?
http://www.catalogo-onlinersi.com.ar/templates-12/112-theme-and-template-editor.html

Разместил: Dimension Время: 12-09-2010 22:18
Вот по этой инструкции ещё делал
http://ardianys.com/64_how-to-add-new-hook-prestashop-engine-modification-tutorial-series.html/comment-page-1#comment-480
С поправкой, огворенной там в коментариях
Результат - белый экран вместо сайта
(После добавления {$HOOK_CENTER} в header.tpl)
В сам модуль вписал, всё по инструкции. Убил день, подскажите сколько ещё мучиться ((

Разместил: careres Время: 08-11-2010 15:31
Кто поможет разместить Блокskype в heder

Разместил: derun Время: 04-03-2011 08:27
Подскажите, как привязать модуль blockcurrencies к отображению в своём хуке?

например хук {$HOOK_FOOTRE} - это вставил в footer.tpl

'HOOK_FOOTRE' => Module::hookExec('footre'), - это вставил в footer.php

Разместил: solt Время: 04-03-2011 19:30
В самом модуле находишь эти строчки и заменяешь на свой хук
Код:
if (!$this->registerHook('top')) / function hookTop($params)
получаеться так
Код:
if (!$this->registerHook('footre')) / function hookfootre($params)



Сообщение отредактировано solt 04-03-2011 20:36 ...

Разместил: solt Время: 04-03-2011 20:10
Цитата:( careres @ 08-11-2010 16:31 Смотреть сообщение )
Кто поможет разместить Блокskype в heder

Пропишите для модуля стиль в global.css и опубликуйте его.

Разместил: meccep Время: 19-03-2011 23:07
подскажите. не получается всунуть модуль JBX_menu в свой HOOK

собственно алгоритм как делаю:
1) header.php добавляю строчку
'HOOK_JBX_MENU' => Module::hookExec('jbx'),
2) делаю инсерт в таблицу ps_hook
INSERT INTO ps_hook (`name` ,`title` ,`description` ,`position`)
VALUES ('jbx', 'jbx menu ', NULL , '1');
3) в header.tpl вставляю в нужное место {$HOOK_JBX_MENU}
4) в jbx_menu.php( я так понимаю главный файл модуля) в функцию install добавляю
!$this->registerHook('jbx') ||
5) туда же добавляю такую функцию
function hookJBX($params)
{
return $this->hookheader($params);
}
6) в "Модули >> Позиции" удаляю модуль отовсюду и вставляю в блок jbx menu.

все

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

Разместил: rurox Время: 20-09-2011 18:32
собсно sanya160 спрашивал:

"Подскажите где находятся файлы самого Хука, что бы можно было править сам Хук, меня интересует непосредственно {HOOK TOP}, хочу поменять иконки, ссылки, и так далее.
Но на будущее можно и узнать где все остальные Хуки"

Тот же вопрос.
Цель:
Надо убрать НАДПИСИ - контакты, карта сайта, обратная связь, Но оставить картинки
Валюту разместить под корзину в хедере.

для этого надо просто отредактировать хук - как это сделать?

Разместил: Anton Время: 20-09-2011 19:39
Да это просто html обычный, при чем тут хук?

Разместил: rurox Время: 20-09-2011 20:30
простой...
например есть div_header_right - так вон он находится в хуке. и мне нужно его откорректировать...

Разместил: Anton Время: 20-09-2011 20:42
Не, вы ошибаетесь, это хук находится в div_header_right.
<div id="header_right">
{$HOOK_TOP}
</div>

Разместил: rurox Время: 20-09-2011 20:46
блин, ну что сложного в моих сообщениях?

может будет проще если посмотрите....

Для достижения этой цели. мне нужно в ручную зайти в хук, и откорректировать его. добавить валюту, добавить определенным образом текст. - все же врподе ясно спросил.


Сообщение отредактировано rurox 20-09-2011 21:47 ...

Разместил: Anton Время: 20-09-2011 20:52
Как это зайти в хук? Тут просто верстка нужна, да и все. За вас верстать я не буду.

Разместил: rurox Время: 20-09-2011 21:27
КАК Я МОГУ СВЕРСТАТЬ HOOK_TOP если ктоме этой надписи НИЧЕГО НЕТ!!!

я привык к простому пониманию

код модуля php в html формах, и в таком варианте можно верстать. как в joomle например.

Я понимаю что можно свертать код который имеет вид

<div>
<div>
<?php
MODULE 1 - "ваш аккуант
?>
</div>
<div>
<?php
MODULE 2 - "корзина"
?>
</div>
<div>
<?php
MODULE 3 - "дВАЛЮТА"
?>
</div>
</div>


это можно сверстать... а как сверстать ОДНУ ЗАПИСЬ!!!! HOOK_TOP


Разместил: Anton Время: 20-09-2011 21:33
Так никак! :) Вам нужно верстать те блоки, которые добавляются в этот хук, смотрите в modules/вашмодуль/вашмодуль.tpl

Разместил: Zoom Время: 25-10-2011 17:52
Подскажите, пожалуйста, где нужно редактировать код, чтобы сделать модуль постоянных ссылок (карта сайта, контакты, в закладки) и модуль пользователя (Учетная запись, корзина) ГОРИЗОНТАЛЬНО НА ОДНОМ УРОВНЕ.
Пробывал менять позиции в админке они, просто меняются местами, но все равно один под другим. А в modules/вашмодуль/вашмодуль.tpl можно редактировать сам отдельновзятый модуль, но где редактируется их взаимное расположение? :eek:

В header.tpl эти оба модуля выводятся одной строкой {$HOOK_TOP} :cray:

Разместил: e_v_medvedev Время: 25-10-2011 21:51
Для начала - хук это не файл. Это группировочный признак для модулей. В Престе есть механизм, который позволяет объединить модули в группу и запустить на исполнение всю группу получив в результате строку, содержащую HTML код результата исполнения всех модулей этой группы, который и подставляется в шаблон смарти указанным образом. В принципе подобный механизм с некоторыми вариациями используется практически во всех развитых CMS.

Разместил: Zoom Время: 25-10-2011 23:01
e_v_medvedev, спасибо за ответ!
Оказалось все очень просто, эти 2 модуля входят в блок #header_right в global.css, и просто нужно было увеичить его ширину до 100%, и они расположились по горизонтали на одном уровне, под логотипом.

www.prestadev.ru