Показывать вложенные подразделы только для активного раздела Bitrix

Друзья, поскольку не нашел халявы на эту тему без рукоблудия, то решил поделиться контентом.

Скрипт основан на стандартном шаблоне многоуровневого меню 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/, где можно и взглянуть на него.

Показывать вложенные подразделы только для активного раздела Bitrix: 4 комментария

  1. Здравствуйте!
    попробовал сделать как в вашем примере, но у меня почему то отличается от того, что у вас.
    Как сделать отступы у дочерних элементов? Чтобы было визуально приятно. И еще вопрос: как сделать чтобы отображался только активный раздел с подразделами?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *