Автор Тема: Отображение подкатегорий в верхнем меню  (Прочитано 405 раз)

06 Апрель 2021, 15:03:24
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. Очень большая структура подкатегорий получается в магазине. Пробовал поставить ограничение до 2 в модуле Горизонтальное меню - не помогает, ноль реакции. Подскажите, пожалуйста, где-то в коде можно как-то ограничить вывод подкатегорий 3 и 4 уровня в верхнем меню? или есть другие способы?
06 Апрель 2021, 16:45:28
Ответ #1
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
да, и версия престы 1.7.7 и шаблон не классический, шаблон другой
06 Апрель 2021, 20:10:52
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 133
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Модуль megemenu поставьте в нем можно создавать разные варианты меню и ограничевать по глубине.
07 Апрель 2021, 10:55:39
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1810
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
07 Апрель 2021, 22:16:30
Ответ #4
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
да, я уже все темы перекопал, но не понял что и куда прописывать. Все написано по другим версиям движка, у меня 1.7.7.2 и нестандартная тема.
У меня файла blocktopmenu.php нету нигде, я его не нашел. Есть ps_mainmenu.tpl с таким содержанием:

 {assign var=_counter value=0}
    {function name="menu" nodes=[] depth=0 parent=null}
    {if $nodes|count}
    <ul class="top-menu" {if $depth==0}id="top-menu" {/if} data-depth="{$depth}">
            {foreach from=$nodes item=node name=node}
        <li class="{$node.type}{if $node.current} current {/if}" id="{$node.page_identifier}">
            {assign var=_counter value=$_counter+1}
            <a class="{if $depth >= 0}dropdown-item{/if}{if $depth === 1} dropdown-submenu{/if}" href="{$node.url}" data-depth="{$depth}" {if $node.open_in_new_window} target="_blank" {/if}>
                {if $depth < 1} {if $smarty.foreach.node.iteration==4} <span class="label-menu-sale">{l s='Sale' d='Shop.Theme.Global'}</span>
                    {/if}
                    {if $smarty.foreach.node.iteration == 6}
                    <span class="label-menu-hot">{l s='Hot' d='Shop.Theme.Global'}</span>
                    {/if}
                    {/if}
                    {if $node.children|count}
                    {* Cannot use page identifier as we can have the same page several times *}
                    {assign var=_expand_id value=10|mt_rand:100000}
                    <span class="float-xs-right hidden-md-up">
                        <span data-target="#top_sub_menu_{$_expand_id}" data-toggle="collapse" class="navbar-toggler collapse-icons">
                            <i class="material-icons add">&#xE313;</i>
                            <i class="material-icons remove">&#xE316;</i>
                        </span>
                    </span>
                    {/if}
                    {$node.label}
            </a>
            {if $node.children|count}
            <div {if $depth===0} class="popover sub-menu js-sub-menu collapse" {else} class="collapse" {/if} id="top_sub_menu_{$_expand_id}">
                {menu nodes=$node.children depth=$node.depth parent=$node}

            </div>

            {/if}
        </li>
        {/foreach}
    </ul>
    {if $depth === 1} {hook h='displayCustomBannerMenu'}{/if}
    {/if}
    {/function}

    <div class="menu js-top-menu position-static hidden-sm-down" id="_desktop_top_menu">
        {menu nodes=$menu.children}
        <div class="clearfix"></div>
    </div>

Вот что и куда здесь вставлять не могу понять.
08 Апрель 2021, 11:41:17
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
depth=$node.depth - уровень категории в меню
08 Апрель 2021, 20:29:22
Ответ #6
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
но там нет никаких цифр, где прописать сами цифры, например, до 3 уровня подкатегорий?
08 Апрель 2021, 22:01:10
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Там не ограничений по уровню, поэтому нет и цифр.
if $node.depth < 3...
11 Апрель 2021, 13:02:13
Ответ #8
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
напишите, пожалуйста, куда это прописать? использовал все варианты, либо страница недоступна, либо меню все съезжает наперекосяк.
11 Апрель 2021, 13:36:50
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В начале вывода меню
{if $depth < 'уровень до которого выводить'}
11 Апрель 2021, 15:15:46
Ответ #10
  • Новичок
  • *
  • Сообщений: 47
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
прописал здесь
 <ul class="top-menu" {if $depth < '3'}id="top-menu" {/if} data-depth="{$depth}">
НО у подкатегорий до 3 уровня просто появились стрелочки вниз, типа при нажатии на них должно выйти подменю, но подкатегории 4 уровня никуда не ушли, так и стоят на месте, никак не скрываются. Может что-то еще надо прописать, добавить, чтобы они скрывались и при нажатии на эти стрелочки выходили?