Автор Тема: Не отображается модуль в новом хуке  (Прочитано 2504 раз)

30 Ноябрь 2014, 01:32:34
Ответ #15
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
30 Ноябрь 2014, 12:44:08
Ответ #16
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Декабрь 2014, 10:09:54
Ответ #17
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за советы. Всё попробовал, но результата нет.

Еще раз повторюсь. Хук у меня создан (уже раз 5й). Пустой созданный модуль в нем отображается.



Проблема именно с модулем доп товаров. Он как будто заточен под то место. И еще раз повторюсь, что он отображается в новом хуке, НО только при условии, что отображается и в хуке ProductFooter. Убираем его отсюда, пропадает и в моем.
01 Декабрь 2014, 11:07:45
Ответ #18
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Это потому что вы не определяете переменные smarty в вашем хуке. Нужно или скопировать все из хука hookProductFooter в хук hookUnderDesc, или сделать так
public function hookUnderDesc($params)
{
return $this->hookProductFooter($params);
}
и в Модули > Расположение блоков удалить модуль из хука hookProductFooter.
01 Декабрь 2014, 11:14:53
Ответ #19
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы имеете ввиду скопировать в php файле модуля? Если да, то я даже создавал модуль клон, где вместо хука ProductFooter вставлял свой, а его совсем удалял.
Также просто копировал всё содержимое ProductFooter в свой и оставлял оба. Всё равно не выходит.

Как вы написали, тоже пробовал.



01 Декабрь 2014, 11:22:03
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Я так делал, делаю и все работает. В prestasop все модули так работают. Почему у вас не работает, не знаю.
01 Декабрь 2014, 11:48:47
Ответ #21
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот и я не знаю. Другие модули отображаются тут, а с этим вообще уже не знаю что делать.

Может где-то еще определяться в каком хуке отображается модуль?

Кстати, как вы написали модуль никогда не отображается. Если так написать

public function hookUndesc($params){

return $this->display(__FILE__, 'productscategory.tpl', $this->getCacheId($cache_id));
   
}

то он отображается, но дубликатом как я уже говорил.
01 Декабрь 2014, 11:54:16
Ответ #22
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Если делать как написал Adik, то модуль выводиться в нужном хуке.
Если как делаете вы, то выдиться шаблон из кеша. А в кеш он помещается из хука hookProductFooter
$this->getCacheId($cache_id)Поэтому удаляя хук hookProductFooter ничего не выводиться.
01 Декабрь 2014, 12:01:39
Ответ #23
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Понял. Переделал - просто скопировал содержимое хука ProductFooter в свой. В инстале мой хук тоже прописан.

В админке в нужном хуке отображается.



Кеш почистил ( в админке и файл удалил, как советовали в самом начале)

Mymodule отображается, товары нет.
01 Декабрь 2014, 12:03:55
Ответ #24
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может еще где-то быть файл, где написано в каких хуках отображать модуль?
01 Декабрь 2014, 12:16:31
Ответ #25
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
Переделал - просто скопировал содержимое хука ProductFooter в свой.
Нельзя просто скопировать, нужно заменять константы, ид кеша, шаблоны на свои.
Где-то была тема как клонировать модуль.
01 Декабрь 2014, 12:18:22
Ответ #26
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik же написал



Я могу и одну строчку написать как он предложил, ток работать всё равно ничего не будет.
01 Декабрь 2014, 12:25:54
Ответ #27
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
1. Определить хук hookProductFooter
Как это уже написано.
2. Добавить этот хук в install
3. Добавить этот хук в конроллер и шаблон
4. После этого добавить код, который написал Adik
5. В админке в Модули > Расположение блоков удалить ProductsCategory из hookProductFooter, оставить только в hookUnderDesc

Вот так делаете и не работает?
01 Декабрь 2014, 12:51:50
Ответ #28
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1) Хук есть. Отображается как в базе, так и в админке.

2) Хук в инсталле

 

3) Давайте здесь подробнее про контроллеры. Хук в шаблоне написан так {hook h='Undesc'}.

Контроллеры. В начале темы MAgency написал, что нужно вставлять код сюда /controllers/front/ProductController.php.

Вот



и вот




Не знал куда вставлять точно.

По ссылке, которую мне дали выше по регистрации нового хука, написано, что код нужно вставлять сюда classes >> controller >> FrontController.php

Вот



и вот

 .

Тоже не знал куда точно вставлять.

4) Код добавлен.

5) В расположении модуля удален из ProductFooter
01 Декабрь 2014, 13:10:04
Ответ #29
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
Полностью удалил модуль "доп товары". Хочу расположить его в самом низу под основным описанием товара.
Для этого не нужно делать свой хук. Это делается проще.
Оставляете модуль "доп товары", открываете шаблон product.tpl, находите код
{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}вырезаете его и вставляете после
{if isset($packItems) && $packItems|@count > 0}
<div id="blockpack">
<h2>{l s='Pack content'}</h2>
{include file="$tpl_dir./product-list.tpl" products=$packItems}
</div>
{/if}
{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.