Возникла необходимость построения меню из инфоблока типа:
Раздел 1
- Элемент раздела 1
- Элемент раздела 2
- Подраздел 2
-- Элемент раздела 1
-- Элемент раздела 2
--- Подраздел 2.1
--- Элемент раздела 1
--- Элемент раздела 2
--- Подраздел 2.2
--- Элемент раздела 1
- Подраздел 3
-- Элемент раздела 1
-- Элемент раздела 2
-- Подраздел 1
Раздел 2
-
--
--
Таким образом в меню выводятся все элементы и разделы, проблема на форуме всплывала несколько раз, но понятного и четкого решения мной найдено не было.
Получилось вывести такую структуру следующим кодом при использовании компонента catalog.section.list:
[CODE]<?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>[/CODE]проблема выяснилась в том что я не могу выделить активный на данный момент раздел. свойства SELECTED не могу найти.
Есть ли возможность это свойство как то вывести, или существует решение при помощи другого компонента??