Друзья, поскольку не нашел халявы на эту тему без рукоблудия, то решил поделиться контентом.
Скрипт основан на стандартном шаблоне многоуровневого меню Bitrix
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <?if (!empty($arResult)):?> <div class="list-group"> <? $previousLevel = 0; $parentactive=false; foreach($arResult as $arItem):?> <?if ($arItem["IS_PARENT"] and $arItem["SELECTED"]){ $parentactive=true; $parentforlevel=$arItem["DEPTH_LEVEL"]; $primero=true; } ?> <?if ($arItem["DEPTH_LEVEL"] == 1):?> <a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>list-group-item active<?else:?>list-group-item<?endif?>"><?=$arItem["TEXT"]?></a> <?elseif($parentactive and $arItem["DEPTH_LEVEL"]-$parentforlevel==1 or $arItem["DEPTH_LEVEL"]==$parentforlevel):?> <a href="<?=$arItem["LINK"]?>" class="list-group-item <?if ($arItem["SELECTED"]):?>active<?endif?>"><?=$arItem["TEXT"]?></a> <?endif?> <?$previousLevel = $arItem["DEPTH_LEVEL"];?> <? if (!$primero and $parentforlevel==$previousLevel){$parentactive=false;$parentforlevel=null;}?> <?$primero=false;?> <?endforeach?> </div> <?endif?>
Реализован под Bootstrap, посему без ul li, но нам важно знать концепт :)
Писал это для сайта http://scooterprice.ru/, где можно и взглянуть на него.
Здравствуйте!
попробовал сделать как в вашем примере, но у меня почему то отличается от того, что у вас.
Как сделать отступы у дочерних элементов? Чтобы было визуально приятно. И еще вопрос: как сделать чтобы отображался только активный раздел с подразделами?
Вариант с активным подразделом и его разделами см тут /2019/05/главное-меню-с-ограничением-по-активн/#more-9927
Так что-то типа str_repeat(‘ ‘,$aa) делает отступы в этом примере.