Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Иерархическое меню на основе инфоблоков - как сделать ограничение?

00 голосов
4
Есть левое меню, построенное на основе инфоблока Каталога. В нем 3 уровня вложенности. Мне надо сделать ограничение вывода только одного уровня вложенности и я ставлю в настройках  bitrix:menu.sections уровень вложенности: 1, но ничего не меняется.
Если есть вложенность более одного уровня, то в секции нужно активировать горизонтальное меню с пунктами соответствующими последнему уровню вложенности(третьему). Возмножно реализовать такое?
спросил 04 Фев, 14 от Gabrial (120 баллов)

4 Ответы

00 голосов
Зачем же на свой сайт ссылку давать? Выставьте такое же ограничение (1 уровень) у компонента bitrix:menu.
ответил 14 Июнь, 14 от Pomnep (13,960 баллов)
00 голосов
Сделала так как Вы сказали, но ничего не изменилось. Слева меню так и выдает более двух уровней вложенности - образец на скриншоте:
http://clip2net.com/s/1daRQ
а надо так:
http://clip2net.com/s/1db2d
ответил 12 Окт, 14 от Gabrial (120 баллов)
00 голосов
Народ такой же вопрос....кто подскажет как заблокировать уровни вложенности ?
В коде прямой инфы не нашел




Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?if (!empty($arResult)):?>
<ul id="vertical-multilevel-menu">

<?
$previousLevel = 0;
foreach($arResult as $arItem):?>

   <?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
      <?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
   <?endif?>

   <?if ($arItem["IS_PARENT"]):?>

      <?if ($arItem["DEPTH_LEVEL"] == 1):?>
         <li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
            <ul class="root-item">
      <?else:?>
         <li><a href="<?=$arItem["LINK"]?>" class="parent<?if ($arItem["SELECTED"]):?> item-selected<?endif?>"><?=$arItem["TEXT"]?></a>
            <ul>
      <?endif?>

   <?else:?>

      <?if ($arItem["PERMISSION"] > "D"):?>

         <?if ($arItem["DEPTH_LEVEL"] == 1):?>
            <li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
         <?else:?>
            <li><a href="<?=$arItem["LINK"]?>" <?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><?=$arItem["TEXT"]?></a></li>
         <?endif?>

      <?else:?>

         <?if ($arItem["DEPTH_LEVEL"] == 1):?>
            <li><a href="" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
         <?else:?>
            <li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
         <?endif?>

      <?endif?>

   <?endif?>

   <?$previousLevel = $arItem["DEPTH_LEVEL"];?>

<?endforeach?>

<?if ($previousLevel > 1)://close last item tags?>
   <?=str_repeat("</ul></li>", ($previousLevel-1) );?>
<?endif?>

</ul>
<?endif?>
 
ответил 13 Фев, 15 от Milianta (120 баллов)
00 голосов
У компонента bitrix.menu в параметрах есть MAX_LEVEL, который ограничивает "глубину" меню.

У компонента bitrix:menu.section есть параметр DEPTH_LEVEL , который ограничивает "глубину" меню.

В чем проблема, зачем лезть в код?
ответил 24 Май, 15 от Almarea (3,760 баллов)

Похожие вопросы

0 голосов
7 ответов
спросил 14 Июль, 13 от FirstDie (120 баллов)
0 голосов
3 ответов
0 голосов
5 ответов
спросил 18 Сен, 13 от NamiSan (160 баллов)
0 голосов
3 ответов
0 голосов
5 ответов