Переместить модуль к DisplayTop

Автор Виталий_Е, 26 мая 2017, 07:31:48

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

Виталий_Е

Коллеги, доброго времени суток!

Пытаюсь перенести Блок пользовательской информации CMS в DisplayTop над горизонтальным меню, чтобы он был на всех страницах. Если я все правильно понял, то  DisplayTop же отвечает за расположение модуля "на всех" страницах?
В "/presta/public_html/modules/blockcmsinfo/blockcmsinfo.php" в функции public function install() добавил код "$this->registerHook('displayTop') &&",
а также добавил функцию как было написано у коллеги в теме https://prestashop-forum.ru/index.php/topic,1222.msg5750.html#msg5750


public function hookDisplayTop($param)
    {
        return $this->hookDisplayTop();
    }


В админке сайта выбираю модули/расположение/
Удаляю везде Блок пользовательской информации CMS
и нажимаю на кнопку "Расположить модуль": в строке модуль выбираю "Блок пользовательской информации CMS", в строке Прикрепить к появляется новый выбор в виде "DisplayTop". Радостно выбираю, сохраняю.

Обновляю страницу сайта, а там:
502 Bad Gateway
nginx-reuseport/1.11.10
:(
Ссылка на сайт http://papariib.beget.tech/

Что я делаю неправильно? Прошу помочь  :)

Adik

Сначало нужно удалить модуль, потом изменить код и заново установить.
НЕ ОТКЛЮЧАТЬ, удалять!

Виталий_Е

Цитата: Adik от 26 мая 2017, 09:29:07
Сначало нужно удалить модуль, потом изменить код и заново установить.
НЕ ОТКЛЮЧАТЬ, удалять!

т.е. я сейчас должен скопировать модуль в другую папку и там изменить код, а потом удалить его и заново установить со скопированной папки? Не понял как я должен изменить код удаленного модуля ))

DarinSr

Не обязательно перемещать модуль. В админке в модулях выберите модуль и нажмите "Деинсталлировать". После того как появится сообщение, что модуль деинсталлирован можете менять код модуля.

Виталий_Е

Деинсталлировал модуль
Добавил в blockcmsinfo.php
public function install()
{
return parent::install() &&
$this->installDB() &&
$this->registerHook('home') &&
$this->registerHook('displayTop') &&
$this->registerHook('header') &&
$this->installFixtures() &&
    $this->disableDevice(Context::DEVICE_TABLET | Context::DEVICE_MOBILE);
}

    public function hookDisplayTop($param)
    {
        return $this->hookDisplayTop();
    }


1. Заново установил модуль
2. Удалил его в расположениях со всех 3 позиций: хедер, дисплэйтоп, хоум
3. Привязал хук к ДисплайТоп

И опять ошибка  :o

Может надо добавить функции
public function hookDisplayTop($param)
    {
        return $this->hookDisplayTop();
    }

отдельно для хедера и хоум?

DarinSr

public function hookDisplayTop($param)
{
    //здесь код из старого хука
}

Виталий_Е

Цитата: DarinSr от 26 мая 2017, 10:37:48
public function hookDisplayTop($param)
{
    //здесь код из старого хука
}


А так ничего и не было раньше. Значит надо поставить так:
public function hookDisplayTop($param)
{
        return $this->hookDisplayHome();
}

т.к. изначально данный блок был привязан к домашней странице?

Виталий_Е

нет, не получилось :(
Опять же при выборе расположения модуля к дисплэйТоп страница исчезает

Миколас

Скопируй код из hookHome и вставь в hookDisplayTop.
Перемещать модуль не нужно, раз ты сменил хук.

Виталий_Е

#9
Сам сделал грубую ошибку в
public function hookDisplayTop($param)
{
    return $this->hook[color=red][s]Display[/s][/color]Home();
}

Нет хука DisplayHome  :)

Нашел, исправил и все заработало. Напишу тем, кто как и я только начинает изучать престу.

Для добавления Блока пользовательской информации CMS для всех страниц сверху необходимо:
1. в админке престы в разделе о модулях выбрать этот модуль и Деинсталлировать (не удалять). Тогда модуль как бы удаляется с админки (не исчезнет, будет неактивен и его можно потом спокойно там же установить занаво).
2. в public_html/modules/blockcmsinfo/blockcmsinfo.php
в функции "public function install()" добавить $this->registerHook('displayTop') &&

public function install()
{
return parent::install() &&
$this->installDB() &&
$this->registerHook('home') &&
$this->registerHook('displayTop') &&
$this->registerHook('header') &&
$this->installFixtures() &&
    $this->disableDevice(Context::DEVICE_TABLET | Context::DEVICE_MOBILE);
}



3. Установить заново модуль.
4. В Модули/Расположение модулей заново поставить хук модулю.

Все работает. Тема закрыта. Всем большое спасибо и респект!  ;)