Иван, день добрый, столкнулся с такой же проблемой как у вас, мне очень помог ваш код:
[CODE]<?
if(CModule::IncludeModule("iblock"))
{
// если $ID не задан или это не число, тогда
// $ID будет =0, выбираем корневые разделы
$SECTION_ID = IntVal($_GET['SECTION_ID']);
$items = GetIBlockSectionList(45, 0, Array("sort"=>"asc"));
while($arItem = $items->GetNext())
{
echo '<a href='.$arItem["SECTION_PAGE_URL"].'>'.$arItem["NAME"].'</a><br>'; // вывод первого уровня
$items22 = GetIBlockSectionList(45, $arItem["ID"], Array("sort"=>"asc")); //секции второго уровня
while($arItem22 = $items22->GetNext())
{
if ($arItem22["ID"] == $SECTION_ID)
$pp = 1; // вводим признак. Если ID секции второго уровня равен $SECTION_ID, то $pp=1 и в таком случае отображаются секции и второго и третьего уровня
}
if ($SECTION_ID == $arItem["ID"] || $pp == 1)
{
$items2 = GetIBlockSectionList(45, $arItem["ID"], Array("sort"=>"asc"));
while($arItem2 = $items2->GetNext())
{
echo ' <a href='.$arItem2["SECTION_PAGE_URL"].'>'.$arItem2["NAME"].'</a><br>'; // вывод второго уровня
if ($SECTION_ID == $arItem2["ID"])
{
$items3 = GetIBlockSectionList(45, $arItem2["ID"], Array("sort"=>"asc"));
while($arItem3 = $items3->GetNext())
{
echo ' <a href='.$arItem3["SECTION_PAGE_URL"].'>'.$arItem3["NAME"].'</a><br>'; // вывод 3-го уровня
}
}
}
$pp = 0; // Убиваем признак, чтобы не выводились секции второго уровня у всех разделов первого уровня
}
}
}
else
ShowError("Модуль не установлен");
?>[/CODE]
Подскажите пожалуйста как можно сделать подсветку активного уровня меню ? заранее благодарю