<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<? if (!empty($arResult)):?>
<? $parentsMap = array(); ?>
<div class="menu-sitemap-tree">
<? $previousLevel = 0;
foreach($arResult as $arItem):
$tmp = split('SECTION_ID=',$arItem["LINK"]);
$thisID = $tmp[1];
if ($previousLevel < $arItem["DEPTH_LEVEL"]) {$parentsMap[$thisID]=$previousID;}
elseif ($previousLevel == $arItem["DEPTH_LEVEL"]) {
$parentsMap[$thisID]=$parentsMap[$previousID];}
else {
$diff = $previousLevel - $arItem["DEPTH_LEVEL"];
$i=0;
$prevParent = $parentsMap[$previousID];
while ($i<$diff) {
$prevParent = $parentsMap[$prevParent];
$i++;}
$parentsMap[$thisID] = $prevParent;
}?>
<? if ($arItem["IS_PARENT"]) $parentID = $thisID;?>
<? if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?=str_repeat("
</li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<? endif?>
<? if ($arItem["IS_PARENT"]):
if (!($arItem["SELECTED"])):?>
<? else:?>
<? endif?>
<div class="folder" onClick="OpenMenuNode(this)" id="FLD<? echo $thisID;?>"></div>
<div class="item-text"><a href="<?=$arItem["LINK"];?>"><?=$arItem["TEXT"]?></a></div>
<? else:?>
<? if ($arItem["PERMISSION"] > "D"):?>
<div class="page"></div>
<div class="item-text"><a href="<?=$arItem["LINK"];?>"><?=$arItem["TEXT"]?></a></div>
</li>
<? endif?>
<? endif?>
<? if ($GLOBALS["SECTION_ID"]==$thisID):?>
<? $cPar = $thisID; $que = array();?>
<? while ($parentsMap[$cPar]) {
$cPar=$parentsMap[$cPar];
$que[]=$cPar;
}
$que = array_reverse($que);
foreach ($que as $elm) {?>
<script>OpenMenuNode(document.getElementById("FLD<?=$elm;?>"));</script>
<?}?>
<? endif?>
<? $previousLevel = $arItem["DEPTH_LEVEL"];?>
<? $previousID = $thisID;?>
<? endforeach?>
<? if ($previousLevel > 1):?>
<?=str_repeat("
</li>", ($previousLevel-1) );?>
</ul>
</div><? endif?>
<? endif?>
Вот создал что-то похожее, но как-то коряво все отображается.
Посмотрите в чем ошибка...
+ вопрос, выставил уровень вложенности 4, а выводит только Инфоблок - Раздел 1 - Раздел 1.1(в виде ссылки)
Т.е. не разворачивает Раздел 1.1
И если можно, приведите свой пример для реализации такого меню.
Необходимо чтобы при нажатии на пункт меню любой вложенности, меню не закрывалось, а только подсветился пункт на который нажали.
[IMG]http://stream-tst.ru/primer.JPG[/IMG]
<? if (!empty($arResult)):?>
<? $parentsMap = array(); ?>
<div class="menu-sitemap-tree">
<? $previousLevel = 0;
foreach($arResult as $arItem):
$tmp = split('SECTION_ID=',$arItem["LINK"]);
$thisID = $tmp[1];
if ($previousLevel < $arItem["DEPTH_LEVEL"]) {$parentsMap[$thisID]=$previousID;}
elseif ($previousLevel == $arItem["DEPTH_LEVEL"]) {
$parentsMap[$thisID]=$parentsMap[$previousID];}
else {
$diff = $previousLevel - $arItem["DEPTH_LEVEL"];
$i=0;
$prevParent = $parentsMap[$previousID];
while ($i<$diff) {
$prevParent = $parentsMap[$prevParent];
$i++;}
$parentsMap[$thisID] = $prevParent;
}?>
<? if ($arItem["IS_PARENT"]) $parentID = $thisID;?>
<? if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?=str_repeat("
</li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<? endif?>
<? if ($arItem["IS_PARENT"]):
if (!($arItem["SELECTED"])):?>
<? else:?>
<? endif?>
<div class="folder" onClick="OpenMenuNode(this)" id="FLD<? echo $thisID;?>"></div>
<div class="item-text"><a href="<?=$arItem["LINK"];?>"><?=$arItem["TEXT"]?></a></div>
<? else:?>
<? if ($arItem["PERMISSION"] > "D"):?>
<div class="page"></div>
<div class="item-text"><a href="<?=$arItem["LINK"];?>"><?=$arItem["TEXT"]?></a></div>
</li>
<? endif?>
<? endif?>
<? if ($GLOBALS["SECTION_ID"]==$thisID):?>
<? $cPar = $thisID; $que = array();?>
<? while ($parentsMap[$cPar]) {
$cPar=$parentsMap[$cPar];
$que[]=$cPar;
}
$que = array_reverse($que);
foreach ($que as $elm) {?>
<script>OpenMenuNode(document.getElementById("FLD<?=$elm;?>"));</script>
<?}?>
<? endif?>
<? $previousLevel = $arItem["DEPTH_LEVEL"];?>
<? $previousID = $thisID;?>
<? endforeach?>
<? if ($previousLevel > 1):?>
<?=str_repeat("
</li>", ($previousLevel-1) );?>
</ul>
</div><? endif?>
<? endif?>
Вот создал что-то похожее, но как-то коряво все отображается.
Посмотрите в чем ошибка...
+ вопрос, выставил уровень вложенности 4, а выводит только Инфоблок - Раздел 1 - Раздел 1.1(в виде ссылки)
Т.е. не разворачивает Раздел 1.1
И если можно, приведите свой пример для реализации такого меню.
Необходимо чтобы при нажатии на пункт меню любой вложенности, меню не закрывалось, а только подсветился пункт на который нажали.
[IMG]http://stream-tst.ru/primer.JPG[/IMG]