Не выводить некоторые категории в меню

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Julius123 M
Julius123 M
Репутация: 20
Сообщения: 218
Зарегистрирован: 05.02.2017
С нами: 3 года 11 месяцев

Сообщение #1 Julius123 » 21.07.2018, 17:50

У меня есть подпункты категорий созданные через админку, но их не нужно выводить в меню. Подскажите как правильно скрыть их в меню? Пробовал в цыкле вывода меню сделать проверку на номер категории но все равно оно выводится.

Вот сам код меню:

Код: Выделить всё

<nav id="catalog_menu" class="hidden_small">                 
    {function name=categories_tree}
        {if $categories}
            <ul>
            {foreach $categories as $c}
                {if $c->visible}
                    {if $c->children|count > 1}
                    <li class="parent{if $category->id == $c->id} opened{/if}">
                        <a class="{if $category->id == $c->id} selected{/if}" href="{$lang_link}catalog/{$c->url}">
                          {if $c->image}
                          <i class="cat_icon">
                             <img src="{$c->image|resize:23:23:false:$config->resized_categories_dir}"/>
                          </i>
                    {/if}
                            <span>{$c->name|escape}</span>
                            <i class="angle_icon hidden_small">{include file='svg_sprite.tpl' svgId='angle_icon'}</i>
                        </a>
                        {if $category->id != 44}
                        <i class="cat_switch hidden_lg">{include file='svg_sprite.tpl' svgId='angle_icon'}</i>
                        <div class="submenu{if $c->image} subimage{/if}">
                            {categories_tree categories=$c->subcategories}
                        </div>
                         {/if}
                    </li>
                    {else}
                   <li class="parent{if $category->id == $c->id} opened{/if}">
                        <a class="{if $category->id == $c->id} selected{/if}" href="{$lang_link}catalog/{$c->url}">
                          {if $c->image}
                          <i class="cat_icon">
                             <img src="{$c->image|resize:23:23:false:$config->resized_categories_dir}"/>
                          </i>
                    {/if}
                            <span>{$c->name|escape}</span>
                        </a>
                    </li>
                    {/if}
                {/if}
            {/foreach}
            </ul>
        {/if}
    {/function}
    {categories_tree categories=$categories}
</nav>

Проверку делал через смарти:

Код: Выделить всё

{if $category->id != 44}
и
{if $c->id != 44}

korshunov
korshunov
Репутация: 75
Сообщения: 1264
Зарегистрирован: 03.12.2015
С нами: 5 лет 1 месяц
Skype

Сообщение #2 korshunov » 22.07.2018, 06:28

Пробуйте примерно так:

{foreach $categories as $c}
{if $c->visible && $c->id!=44}

Julius123 M
Julius123 M
Репутация: 20
Сообщения: 218
Зарегистрирован: 05.02.2017
С нами: 3 года 11 месяцев

Сообщение #3 Julius123 » 22.07.2018, 06:45

korshunov писал(а):Пробуйте примерно так:

{foreach $categories as $c}
{if $c->visible && $c->id!=44}
Спасибо, действительно помогло но в меню выводится иерархия там где эти скрытые подкатегории, возможно это скрыть? http://prntscr.com/k9gaf9

korshunov
korshunov
Репутация: 75
Сообщения: 1264
Зарегистрирован: 03.12.2015
С нами: 5 лет 1 месяц
Skype

Сообщение #4 korshunov » 22.07.2018, 06:52

Пробуйте по-своему формировать и использовать параметр has_children_visible, как делается стандартно...

Julius123 M
Julius123 M
Репутация: 20
Сообщения: 218
Зарегистрирован: 05.02.2017
С нами: 3 года 11 месяцев

Сообщение #5 Julius123 » 22.07.2018, 06:55

korshunov писал(а):Пробуйте по-своему формировать и использовать параметр has_children_visible, как делается стандартно...
Уже с этим разобрался, нашел код вывода субменю, и тем же правилом закрыл id основной категории в которой есть скрытые категории. Вопрос остался только в том можно ли как-то более компактно сделать эту проверку? Категорий для скрытия будет около 30 и писать что-то вроде {if $c->visible && $c->id!=44 && $c->id!=45 && $c->id!=46 && $c->id!=47} очень массивно. Можно как-то перечислить id категорий в одном ифе?

korshunov
korshunov
Репутация: 75
Сообщения: 1264
Зарегистрирован: 03.12.2015
С нами: 5 лет 1 месяц
Skype

Сообщение #6 korshunov » 22.07.2018, 07:32

{if $c->visible && !in_array($c->id, array(44,45,47))}

Julius123 M
Julius123 M
Репутация: 20
Сообщения: 218
Зарегистрирован: 05.02.2017
С нами: 3 года 11 месяцев

Сообщение #7 Julius123 » 22.07.2018, 07:48

korshunov писал(а):{if $c->visible && !in_array($c->id, array(44,45,47))}
Большое спасибо. Работает.


Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость