Transformer. Не отображается megamenu с момента установки.

Автор yuazakharov, 16 июня 2016, 15:44:47

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

yuazakharov

Всем привет!

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

В настройках покопался, да без толку. В консоле браузера ни намека об этом. Деинсталлировал и установил. Кэш чистил.
Может кто уже сталкивался?

Adik

В настройках темы можно выбрать подключение модулей на странице.
В модули > расположение блоков в каком хуке находится megamenu?

yuazakharov

Цитата: Adik от 16 июня 2016, 16:00:13
В настройках темы можно выбрать подключение модулей на странице.
В модуле Theme editor ничего не нашел.
В расширенных настройках шаблона тоже.

Цитата: Adik от 16 июня 2016, 16:00:13
В модули > расположение блоков в каком хуке находится megamenu?
Скрин вложил. В Исключениях пусто.

yuazakharov

Оказывается в мобильном виде отображается

Adik

Передвиньте меню выше, пусть первым будет.

yuazakharov

#5
Цитата: Adik от 16 июня 2016, 16:50:57
Передвиньте меню выше, пусть первым будет.
Все равно не отображается.
Если убрать 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
Значит дело в хуке должно быть.
Как отобразить меню в другом хуке?

Adik

В файле "название модуля".php нужно сменить хук в функции install и добавить описание этого хука или изменить существующий.
public function install()
{
        if (!parent::install() ||
           ...
            !$this->registerHook('displayTop') ||

public function hookDisplayTop($param)
{

yuazakharov

Цитата: Adik от 17 июня 2016, 09:59:36
В файле "название модуля".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. Никак не могу найти смену места отображения на сайте.

Mr.Sen

В этой теме свои хуки, смотрите header.tpl в нем будеит название хука в котором выволиться меню. В стандартной теме это displayTop, а в вашей этого хука может и не быть.

yuazakharov

Цитата: Mr.Sen от 17 июня 2016, 11:27:54
В этой теме свои хуки, смотрите 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}

Mr.Sen

displayTopSecondary - так и должно быть.

Включите показ ошибок, может у вас ошибки в коде меню и поэтому его не показывает.

yuazakharov

Цитата: Mr.Sen от 17 июня 2016, 11:41:42
displayTopSecondary - так и должно быть.

Включите показ ошибок, может у вас ошибки в коде меню и поэтому его не показывает.
Включил. Ошибок как вижу нету.
В хуках displayTopSecondary почему-то нету

coder

{if isset($HOOK_MAIN_EMNU_WIDGET)}{$HOOK_MAIN_EMNU_WIDGET}{/if}
{if isset($smarty.capture.displayMainMenuWidget)}{$smarty.capture.displayMainMenuWidget}{/if}
...
{$HOOK_TOP_SECONDARY}

Вот этот код не работает, значит не настроены виджеты в теме.
Смотрите документацию темы как настроить показ виджетов.

yuazakharov

#13
Цитата: coder от 17 июня 2016, 12:34:08
{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

А вообще, что называют виджетом в Престе?

Adik

В prestashop нет виджетов. На виджетах построена ваша тема. С помощью виджетов в ней замещаются стандарные блоки и хуки.
Настраиваться виджеты доджны в настройках темы и модуле виджетов. Должен быть какой-то спец. модуль для этого.