Как заставить баннер Homeslider работать в пользовательском месте хука

Я новичок в Prestashop (знаю Joomla, Virtuemart, Magento и т. д., jQuery HTML CSS)...

Я пытаюсь создать собственный хук и пересадить в него существующий модуль (homeslider). До сих пор мне удалось создать хук и отобразить модуль homelider. Но баннер отображается некорректно (изображения баннеров находятся друг под другом) - видимо неправильно вызываются файлы js и css. Я парился над этим уже пару дней - переназначил некоторые функции, такие как hookdisplayHeader, hookdisplayTopColumn, но все равно получаю тот же результат.

Вот что я сделал до сих пор:

Зарегистрировал хук:

$this->registerHook('MondayTest')

Вызвал крючок:

public function hookMondayTest($params)
{
    if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
        return;

    if (!$this->_prepareHook())
        return false;

    return $this->display(__FILE__, 'homeslider.tpl');
    return "MondayTest5";
}

Вызвал хук в footer.tpl (в целях тестирования):

{hook h="MondayTest"}

Но он работает неправильно... Что я делаю не так?

Пожалуйста помоги! Ваша помощь очень ценится заранее!


person user2381937    schedule 08.06.2015    source источник
comment
Ответы ниже работают :) Примечание для других новичков: когда вы отсоединяете модуль от других «нежелательных» позиций крючка (с целью просто отобразить его в вашей позиции крючка); не не отсоединяйте его от позиции крючка заголовка (doh) - так как это место, где он помещает js / css - не на вашем крючке ... если вы отцепите его от заголовка, модуль будет отображаться, но без css и js.   -  person user2381937    schedule 09.06.2015


Ответы (2)


Самый безопасный способ «переместить» модуль с одного хука на другой пользовательский хук — использовать вызов исходного метода обработчика хука.

Пример:

public function hookMondayTest($params)
{
    return $this->hookDisplayTopColumn($params);
}

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

person unloco    schedule 08.06.2015

Вы должны создать метод в классе модуля, который возвращает то, что вы хотите увидеть.

public function hookMondayTest($params)
{
   return $this->hookDisplayHome($params);
}

затем вам нужно зайти в бэк-офис и пересадить модуль в свой хук модуль-положение-пересадить модуль

person Fil0z0    schedule 09.06.2015