Возникла необходимость построения меню из инфоблока типа:
Раздел 1
- Элемент раздела 1
- Элемент раздела 2
- Подраздел 2
-- Элемент раздела 1
-- Элемент раздела 2
--- Подраздел 2.1
--- Элемент раздела 1
--- Элемент раздела 2
--- Подраздел 2.2
--- Элемент раздела 1
- Подраздел 3
-- Элемент раздела 1
-- Элемент раздела 2
-- Подраздел 1
Раздел 2
-
--
--
Таким образом в меню выводятся все элементы и разделы, проблема на форуме всплывала несколько раз, но понятного и четкого решения мной найдено не было.
Получилось вывести такую структуру следующим кодом при использовании компонента catalog.section.list:
проблема выяснилась в том что я не могу выделить активный на данный момент раздел. свойства SELECTED не могу найти.
Есть ли возможность это свойство как то вывести, или существует решение при помощи другого компонента??
Раздел 1
- Элемент раздела 1
- Элемент раздела 2
- Подраздел 2
-- Элемент раздела 1
-- Элемент раздела 2
--- Подраздел 2.1
--- Элемент раздела 1
--- Элемент раздела 2
--- Подраздел 2.2
--- Элемент раздела 1
- Подраздел 3
-- Элемент раздела 1
-- Элемент раздела 2
-- Подраздел 1
Раздел 2
-
--
--
Таким образом в меню выводятся все элементы и разделы, проблема на форуме всплывала несколько раз, но понятного и четкого решения мной найдено не было.
Получилось вывести такую структуру следующим кодом при использовании компонента catalog.section.list:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED" || B_PROLOG_INCLUDED!==true)die();?> <div class="catalog-section-list"> <? $CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]=1; foreach($arResult["SECTIONS"] as $arSection):?> <? if($CURRENT_DEPTH == $arSection["DEPTH_LEVEL"] //закрываем уровни echo "</ul>"; if($CURRENT_DEPTH > $arSection["DEPTH_LEVEL"] echo "</ul></ul >"; $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"]; //открываем уровень if($CURRENT_DEPTH == 1 && $arSection["SELECTED"] > "0" echo "<ul class=\"list_item active\">"; elseif($CURRENT_DEPTH == 1 && $arSection["SELECTED"] < "1" echo "<ul class=\"list_item\">"; else echo "<ul>"; ?> <?if($CURRENT_DEPTH > 1): //разные стили для разделов первого уровня и подуровней ?> <li> <span class="li_lvl lvl<?echo $arSection["DEPTH_LEVEL"]-1?>" id="<?=$this->GetEditAreaId($arSection['ID']?>"><span class="li_lvl lvl<?echo $arSection["DEPTH_LEVEL"]-1?>"><!--<a href="<?=$arSection["SECTION_PAGE_URL"]?>">--><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]:?> (<?=$arSection["ELEMENT_CNT"]?><?endif;?><!--</a>--></span> <? else:?> <li class="li_lvl lvl<?echo $arSection["DEPTH_LEVEL"]-1?>" id="<?=$this->GetEditAreaId($arSection['ID']?>"><!--<a href="<?=$arSection["SECTION_PAGE_URL"]?>">--><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]:?> (<?=$arSection["ELEMENT_CNT"]?><?endif;?><!--</a>--> <?endif;?> <? if($CURRENT_DEPTH < 2) echo '</li>'; if(CModule::IncludeModule("iblock") //вывод элементов { $items = GetIBlockElementList(4, $arSection["ID"], Array("SORT"=>"date", 100); echo'<ul>'; while($arItem = $items->GetNext()) { echo '<li><a href="'.$arItem["DETAIL_PAGE_URL"].'">'.$arItem["NAME"].'</a></li>'; } echo'</ul>'; } if($CURRENT_DEPTH > 1) echo'</li>'; ?> <?endforeach?> </ul> </div> |
Есть ли возможность это свойство как то вывести, или существует решение при помощи другого компонента??