Автор Тема: Переместить модуль к DisplayTop  (Прочитано 48 раз)

26 Май 2017, 07:31:48
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Коллеги, доброго времени суток!

Пытаюсь перенести Блок пользовательской информации 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/

Что я делаю неправильно? Прошу помочь  :)
26 Май 2017, 09:29:07
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13818
  • Репутация: +14564/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Сначало нужно удалить модуль, потом изменить код и заново установить.
НЕ ОТКЛЮЧАТЬ, удалять!
26 Май 2017, 09:41:47
Ответ #2
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сначало нужно удалить модуль, потом изменить код и заново установить.
НЕ ОТКЛЮЧАТЬ, удалять!

т.е. я сейчас должен скопировать модуль в другую папку и там изменить код, а потом удалить его и заново установить со скопированной папки? Не понял как я должен изменить код удаленного модуля ))
26 Май 2017, 09:53:24
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86458
  • Репутация: +25418/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не обязательно перемещать модуль. В админке в модулях выберите модуль и нажмите "Деинсталлировать". После того как появится сообщение, что модуль деинсталлирован можете менять код модуля.
26 Май 2017, 10:19:12
Ответ #4
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Деинсталлировал модуль
Добавил в 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();
    }
отдельно для хедера и хоум?
26 Май 2017, 10:37:48
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86458
  • Репутация: +25418/-0
  • Сообщество PrestaShop
    • Просмотр профиля
public function hookDisplayTop($param)
{
    //здесь код из старого хука
}
26 Май 2017, 10:46:53
Ответ #6
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
public function hookDisplayTop($param)
{
    //здесь код из старого хука
}

А так ничего и не было раньше. Значит надо поставить так:
public function hookDisplayTop($param)
{
        return $this->hookDisplayHome();
}
т.к. изначально данный блок был привязан к домашней странице?
26 Май 2017, 10:49:06
Ответ #7
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
нет, не получилось :(
Опять же при выборе расположения модуля к дисплэйТоп страница исчезает
26 Май 2017, 11:16:53
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 2863
  • Репутация: +67/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Скопируй код из hookHome и вставь в hookDisplayTop.
Перемещать модуль не нужно, раз ты сменил хук.
26 Май 2017, 11:46:25
Ответ #9
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сам сделал грубую ошибку в
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. В Модули/Расположение модулей заново поставить хук модулю.

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