Не отображается модуль в новом хуке

Автор kulich, 29 ноября 2014, 19:26:12

« назад - далее »

kulich

Я думал так сделать, но у меня в продукт футере еще есть модули и возможно добавятся новые. Они тогда тоже перенесутся.

Хотя сейчас пришла простая мысль, этот хук действительно перенести, а там создать новый, куда запихнуть модули, которые есть сейчас. Надеюсь они будут отображаться :)

kulich

Да, всё так и сделал. 2 минуты делов, а я несколько дней голову ломал.

Как видите, остальные модули я смог запихнуть в новый хук. Дело конкретно в модуле доп товаров. Какой-то он "особенный".

Виталий

Этот модуль обычный, ничего особенного в нем нет. Вы делали что-то не правильно, поэтому и не получалось.
Если все делать так как вам написали:
1. Добавить хук в таблицу ps_hook
INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'underdesc', 'UnderDesc', 'My hook UnderDesc', '1', '0');
2. Добавить хук в /controllers/front/ProductController.php
protected function assignCategory()
{
.......
$this->context->smarty->assign(array(
  'HOOK_PRODUCT_FOOTER' => Hook::exec('displayFooterProduct', array('product' => $this->product, 'category' => $this->category)),
  'HOOK_underDesc' => Hook::exec('underDesc', array('product' => $this->product, 'category' => $this->category))
));
}

3. Добавить вывод хука в шаблон /themes/default/product.tpl
{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_underDesc) && $HOOK_underDesc}{$HOOK_underDesc}{/if}

4. Определить хук в модуле /modules/productscategory/productscategory.php

public function install()
{
Configuration::updateValue('PRODUCTSCATEGORY_DISPLAY_PRICE', 0);
$this->_clearCache('productscategory.tpl');
return (parent::install()
&& $this->registerHook('productfooter')
&& $this->registerHook('header')
&& $this->registerHook('addproduct')
&& $this->registerHook('updateproduct')
&& $this->registerHook('deleteproduct')
&& $this->registerHook('underdesc')
);
}
....
public function hookUnderDesc($params)
{
        return $this->hookProductFooter($params);
}

5. В админке Модули найти модуль Дополнительные товары, нажать Сбросить.
6. В Модули > Расположение блоков найти  Product footer (Техническое имяdisplayFooterProduct) и удалить из него Дополнительные товары.

То в результате модуль будет показан только в новом хуке, ниже описания товара.
Cоздание интернет сайтов Webstudio UwK

Adik

Действительно 2 минуты, если делать как Виталий написал.

kulich

Спасибо, раз у вас получилось, наверное действительно что-то не так делал. В любом случае спасибо.
Получилось неплохое руководство для таких как я :)