Добрый день!
Подскажите, пожалуйста, как мне сворачивать и разворачивать меню когда заходишь к какой-то внутренний раздел (то есть отображать внутренние <ul>) с помощью компонента catalog.section.list, а остальные разделы, чтобы оставались свернутыми?
Вызываю сам компонент[CODE]<?$APPLICATION->IncludeComponent("bitrix:catalog.section.list", "catalog_menu", Array(
"ADD_SECTIONS_CHAIN" => "N", // Включать раздел в цепочку навигации
"CACHE_GROUPS" => "Y", // Учитывать права доступа
"CACHE_TIME" => "36000000", // Время кеширования (сек.)
"CACHE_TYPE" => "A", // Тип кеширования
"COMPONENT_TEMPLATE" => "tree",
"COUNT_ELEMENTS" => "N", // Показывать количество элементов в разделе
"IBLOCK_ID" => "2", // Инфоблок
"IBLOCK_TYPE" => "catalog", // Тип инфоблока
"SECTION_CODE" => "", // Код раздела
"SECTION_FIELDS" => array( // Поля разделов
0 => "",
1 => "",
),
"SECTION_ID" => $_REQUEST["SECTION_ID"], // ID раздела
"SECTION_URL" => "", // URL, ведущий на страницу с содержимым раздела
"SECTION_USER_FIELDS" => array( // Свойства разделов
0 => "",
1 => "",
),
"SHOW_PARENT_NAME" => "Y",
"TOP_DEPTH" => "3", // Максимальная отображаемая глубина разделов
"VIEW_MODE" => "LINE"
),
false
);?>
[/CODE]
А в шаблоне сравниваю текущий раздел с выбранным и соотсветственно отображаю ul,но показывается только второй уровень вложености, а 3 - ну никак[CODE]<div class="catalog-section-list">
$TOP_DEPTH = $arResult["SECTION"]["DEPTH_LEVEL"];
$CURRENT_DEPTH = $TOP_DEPTH;
var_dump($arResult["SECTIONS"]);
foreach($arResult["SECTIONS"] as $arSection)
{
$this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_EDIT"));
$this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_DELETE"), array("CONFIRM" => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM')));
if($CURRENT_DEPTH < $arSection["DEPTH_LEVEL"])
{
if ($_REQUEST["SECTION_ID"] == $arSection["ID"]) {
echo "\n",str_repeat("\t", $arSection["DEPTH_LEVEL"]-$TOP_DEPTH),"<ul style='display: block;'>";
}
else {
echo "\n",str_repeat("\t", $arSection["DEPTH_LEVEL"]-$TOP_DEPTH),"<ul>";
}
}
elseif($CURRENT_DEPTH == $arSection["DEPTH_LEVEL"])
{
echo "</li>";
}
else
{
while($CURRENT_DEPTH > $arSection["DEPTH_LEVEL"])
{
echo "</li>";
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</ul>","\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH-1);
$CURRENT_DEPTH--;
}
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</li>";
}
$count = $arParams["COUNT_ELEMENTS"] && $arSection["ELEMENT_CNT"] ? " (".$arSection["ELEMENT_CNT"].")" : "";
if ($_REQUEST['SECTION_ID']==$arSection['ID'])
{
$link = '<b>'.$arSection["NAME"].$count.'</b>';
$strTitle = $arSection["NAME"];
}
else
{
$link = '<a href="'.$arSection["SECTION_PAGE_URL"].'">'.$arSection["NAME"].$count.'</a>';
}
echo "\n",str_repeat("\t", $arSection["DEPTH_LEVEL"]-$TOP_DEPTH);
?><li id="<?=$this->GetEditAreaId($arSection['ID']);?>"><?=$link?><?
$CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];
}
while($CURRENT_DEPTH > $TOP_DEPTH)
{
echo "</li>";
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</ul>","\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH-1);
$CURRENT_DEPTH--;
}
?>
</div>
<?=($strTitle?'<br/><h2>'.$strTitle.'</h2>':'')?>
[/CODE]
Должно быть так [URL=http://joxi.ru/krDDZDZS0M6VEr]http://joxi.ru/krDDZDZS0M6VEr[/URL], а получается [URL=http://joxi.ru/a2XQdQdty0djWA]http://joxi.ru/a2XQdQdty0djWA[/URL] - то есть 3 уровень не показывается