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

Древовидное меню

00 голосов
1
была задача создать древовидное меню, только чтобы выводились поддеревья выбранной категории, глубина макс 2
(для большей глубины надо будет чуть поправить)
здесь на форуме не нашел, хотя долго и не искал...
поправил в шаблоне чуть и все норм работает...
это лишь пример, попрошу строго не судить, изучаю эту CMS всего лишь несколько дней.
Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if (!empty($arResult)):?>
<ul id="vertical-multilevel-menu">
<?
$previousLevel = 0;
///////////////////////////////////////////
$sl=false;//является ли родитель выбранным
foreach($arResult as $arItem):?>
   <?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel && $sl==true)://также не выводим лишних тэгов?>
      <?=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">
            <?if ($arItem["SELECTED"])$sl=true; else $sl=false;//если парент и глубина первая то значит идущие следом подменю будут выводится... иначе небудет... ?>
      <?elseif($arItem["SELECTED"]):?>
         <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>
         <?elseif($sl==true)://если разрешено и глубина не равна 1 то проверяем можно ли выводить?>
            <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?>
спросил 01 Май, 13 от turok5 (120 баллов)

1 Ответ

00 голосов
А зачем, если в битриксе есть компонент меню и его шаблон horizontal_multilevel , либо vertical_multilevel , в настройках компонента выбираете вложенность от 1 и выше
ответил 16 Дек, 15 от hd-it.ru (640 баллов)

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

0 голосов
1 ответ
спросил 09 Март, 14 от Nuts2010 (100 баллов)
0 голосов
3 ответов
спросил 23 Фев, 14 от Anton6 (160 баллов)
0 голосов
1 ответ
спросил 30 Ноя, 13 от LoLiTKa (620 баллов)
0 голосов
5 ответов
спросил 25 Ноя, 13 от Traxexx (900 баллов)
0 голосов
0 ответов
спросил 09 Ноя, 13 от Jagami (100 баллов)