Автор Тема: Transformer. Не отображается megamenu с момента установки.  (Прочитано 2188 раз)

16 Июнь 2016, 15:44:47
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!

Presta 1.6.1.5
Transformer 3.2.8
Сайт http://uluu.ru/

В настройках покопался, да без толку. В консоле браузера ни намека об этом. Деинсталлировал и установил. Кэш чистил.
Может кто уже сталкивался?
16 Июнь 2016, 16:00:13
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В настройках темы можно выбрать подключение модулей на странице.
В модули > расположение блоков в каком хуке находится megamenu?
16 Июнь 2016, 16:11:07
Ответ #2
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В настройках темы можно выбрать подключение модулей на странице.
В модуле Theme editor ничего не нашел.
В расширенных настройках шаблона тоже.

В модули > расположение блоков в каком хуке находится megamenu?
Скрин вложил. В Исключениях пусто.
16 Июнь 2016, 16:20:57
Ответ #3
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Оказывается в мобильном виде отображается
16 Июнь 2016, 16:50:57
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Передвиньте меню выше, пусть первым будет.
17 Июнь 2016, 05:14:53
Ответ #5
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Передвиньте меню выше, пусть первым будет.
Все равно не отображается.
Если убрать IF условия с header.tpl
{if (isset($HOOK_TOP_SECONDARY) && $HOOK_TOP_SECONDARY) || $has_widgets}
            <section id="top_extra" class="main_menu_has_widgets_{$has_widgets}">
            {if !isset($megamenu_width) || !$megamenu_width}<div class="wide_container boxed_advancedmenu">{/if}
<div id="st_advanced_menu_container" class="animated fast">
<div class="container">
            <div class="container_inner clearfix">
           
            <div id="main_menu_widgets" class="clearfix">
            {if isset($HOOK_MAIN_EMNU_WIDGET)}{$HOOK_MAIN_EMNU_WIDGET}{/if}
            {if isset($smarty.capture.displayMainMenuWidget)}{$smarty.capture.displayMainMenuWidget}{/if}
            </div>
           
            {$HOOK_TOP_SECONDARY}
</div>
</div>
</div>
{if !isset($megamenu_width) || !$megamenu_width}</div>{/if}
</section>
            {/if}

<section id="top_extra" class="main_menu_has_widgets_{$has_widgets}">
            <div class="wide_container boxed_advancedmenu">
<div id="st_advanced_menu_container" class="animated fast">
<div class="container">
            <div class="container_inner clearfix">
           
            <div id="main_menu_widgets" class="clearfix">
            {$HOOK_MAIN_EMNU_WIDGET}
            {$smarty.capture.displayMainMenuWidget}
            </div>
           
            {$HOOK_TOP_SECONDARY}
</div>
</div>
</div>
</div>
</section>
то видны некоторые коды в консоле браузера (скрин вложил)


P.S. Другие 2 модуля с этого хука тоже не отображаются, если выбрать SHOPW ON: Page Top Secondary
Значит дело в хуке должно быть.
Как отобразить меню в другом хуке?
17 Июнь 2016, 09:59:36
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В файле "название модуля".php нужно сменить хук в функции install и добавить описание этого хука или изменить существующий.
public function install()
{
        if (!parent::install() ||
           ...
            !$this->registerHook('displayTop') ||

public function hookDisplayTop($param)
{
17 Июнь 2016, 10:39:05
Ответ #7
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле "название модуля".php нужно сменить хук в функции install и добавить описание этого хука или изменить существующий.
public function install()
{
        if (!parent::install() ||
           ...
            !$this->registerHook('displayTop') ||

public function hookDisplayTop($param)
{
public function install()
{
    $res = $this->installDB() &&
            parent::install() &&
$this->registerHook('displayHeader') &&
            $this->registerHook('displayTopSecondary') &&
            $this->registerHook('displayLeftColumn') &&
            $this->registerHook('displayMobileMenu') &&
            $this->registerHook('displaySideBar') &&
$this->registerHook('actionObjectCategoryUpdateAfter') &&
$this->registerHook('actionObjectCategoryDeleteAfter') &&
$this->registerHook('actionObjectCmsUpdateAfter') &&
$this->registerHook('actionObjectCmsDeleteAfter') &&
$this->registerHook('actionObjectSupplierUpdateAfter') &&
$this->registerHook('actionObjectSupplierDeleteAfter') &&
$this->registerHook('actionObjectManufacturerUpdateAfter') &&
$this->registerHook('actionObjectManufacturerDeleteAfter') &&
$this->registerHook('actionObjectProductUpdateAfter') &&
$this->registerHook('actionObjectProductDeleteAfter') &&
$this->registerHook('categoryUpdate') &&
$this->registerHook('actionCategoryAdd') &&
$this->registerHook('actionCategoryDelete') &&
$this->registerHook('actionCategoryUpdate') &&
$this->registerHook('actionProductDelete') &&
$this->registerHook('actionProductAdd') &&
$this->registerHook('actionProductUpdate') &&
            $this->registerHook('actionShopDataDuplication');
if ($res)
foreach(Shop::getShops(false) as $shop)
$res &= $this->sampleData($shop['id_shop']);
        $this->clearStAdvancedmenuCache();
return $res;
}
Много где установлен, но почему-то отображается (должно быть отображено) на displayTopSecondary. Никак не могу найти смену места отображения на сайте.
17 Июнь 2016, 11:27:54
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В этой теме свои хуки, смотрите header.tpl в нем будеит название хука в котором выволиться меню. В стандартной теме это displayTop, а в вашей этого хука может и не быть.
17 Июнь 2016, 11:33:12
Ответ #9
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этой теме свои хуки, смотрите header.tpl в нем будеит название хука в котором выволиться меню. В стандартной теме это displayTop, а в вашей этого хука может и не быть.
В своем хуке не отображается {$HOOK_TOP_SECONDARY}. Ничего что в расположении блоков называется displayTopSecondary?
{if (isset($HOOK_TOP_SECONDARY) && $HOOK_TOP_SECONDARY) || $has_widgets}
            <section id="top_extra" class="main_menu_has_widgets_{$has_widgets}">
            {if !isset($megamenu_width) || !$megamenu_width}<div class="wide_container boxed_advancedmenu">{/if}
<div id="st_advanced_menu_container" class="animated fast">
<div class="container">
            <div class="container_inner clearfix">
           
            <div id="main_menu_widgets" class="clearfix">
            {if isset($HOOK_MAIN_EMNU_WIDGET)}{$HOOK_MAIN_EMNU_WIDGET}{/if}
            {if isset($smarty.capture.displayMainMenuWidget)}{$smarty.capture.displayMainMenuWidget}{/if}
            </div>
           
            [b]{$HOOK_TOP_SECONDARY}[/b]
</div>
</div>
</div>
{if !isset($megamenu_width) || !$megamenu_width}</div>{/if}
</section>
            {/if}
17 Июнь 2016, 11:41:42
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
displayTopSecondary - так и должно быть.

Включите показ ошибок, может у вас ошибки в коде меню и поэтому его не показывает.
17 Июнь 2016, 12:01:18
Ответ #11
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
displayTopSecondary - так и должно быть.

Включите показ ошибок, может у вас ошибки в коде меню и поэтому его не показывает.
Включил. Ошибок как вижу нету.
В хуках displayTopSecondary почему-то нету
17 Июнь 2016, 12:34:08
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
{if isset($HOOK_MAIN_EMNU_WIDGET)}{$HOOK_MAIN_EMNU_WIDGET}{/if}
{if isset($smarty.capture.displayMainMenuWidget)}{$smarty.capture.displayMainMenuWidget}{/if}
...
{$HOOK_TOP_SECONDARY}
Вот этот код не работает, значит не настроены виджеты в теме.
Смотрите документацию темы как настроить показ виджетов.
17 Июнь 2016, 13:18:25
Ответ #13
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
{if isset($HOOK_MAIN_EMNU_WIDGET)}{$HOOK_MAIN_EMNU_WIDGET}{/if}
{if isset($smarty.capture.displayMainMenuWidget)}{$smarty.capture.displayMainMenuWidget}{/if}
...
{$HOOK_TOP_SECONDARY}
Вот этот код не работает, значит не настроены виджеты в теме.
Смотрите документацию темы как настроить показ виджетов.
Узнал что displayMainMenuWidget это и есть $HOOK_MAIN_EMNU_WIDGET, а в "Расположении блоков" хука "displayMainMenuWidget" нету.
Скрины вложил.

P.S.  В файле "название модуля".php в функции install нету displayMainMenuWidget

А вообще, что называют виджетом в Престе?
17 Июнь 2016, 15:31:09
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop нет виджетов. На виджетах построена ваша тема. С помощью виджетов в ней замещаются стандарные блоки и хуки.
Настраиваться виджеты доджны в настройках темы и модуле виджетов. Должен быть какой-то спец. модуль для этого.