Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Древовидное раскрывающееся меню

00 голосов
1
Добрый день, уважаемые участники форума!

Есть следующий код template.php, который должен выводить древовидное меню на сайте.

Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<script> 
  
  $(document).ready(function(){
 
   $("#vertical-multilevel-menu li div").click(function () {
          var  e = $(this).attr('class'); t = document.getElementById(e); 
        $(t).toggle();
        if (($(this).find('span').attr('class')== 'root-item') || ($(this).find('span').attr('class')== 'parent')) {
        $(this).find('span').removeClass('root-item').addClass('open-root');
        $(this).find('span').removeClass('parent');
        }
        else {
        $(this).find('span').removeClass('open-root').addClass('root-item');
        }
        
    });
       
       
  var elem = document.getElementById('item-selected'); r = elem.className;
  
       document.getElementById(r).style.display='block';
       
  
 
    
  });
 
  </script>
<?if (!empty($arResult)):?>
<ul id="vertical-multilevel-menu">

<?
$previousLevel = 0;
$i=0;
foreach($arResult as $arItem):;?>

   <?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
      <?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
   <?endif?>

   <?if ($arItem["IS_PARENT"]):?>

      <?if ($arItem["DEPTH_LEVEL"] == 1):$i=$i+1?>
         <li><div class="li-<?=$i;?>"><span class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></span></div>
            <ul class="root-item" id="li-<?=$i;?>" <?if ($arItem["SELECTED"]){?> style="display:block;"<?}?>>
      <?else:$i=$i+1?>
         <li><div class="li-in-<?=$i;?>"><span class="parent<?if ($arItem["SELECTED"]):?> item-selected<?endif?>"><?=$arItem["TEXT"]?></span></div>
            <ul id="li-in-<?=$i;?>">
      <?endif?>

   <?else:?>

      <?if ($arItem["PERMISSION"] > "D"):?>

         <?if ($arItem["DEPTH_LEVEL"] == 1):?>
            <li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
         <?else:?>
            <li><a class="li-<?=$i;?>" href="<?=$arItem["LINK"]?>" <?if ($arItem["SELECTED"]):
            ?> id="item-selected"<?endif?>><span class="last"><?=$arItem["TEXT"]?></span></a></li>
         <?endif?>

      <?else:?>

         <?if ($arItem["DEPTH_LEVEL"] == 1):?>
            <li><a href="" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
         <?else:?>
            <li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
         <?endif?>

      <?endif?>

   <?endif?>

   <?$previousLevel = $arItem["DEPTH_LEVEL"];?>

<?endforeach?>

<?if ($previousLevel > 1)://close last item tags?>
   <?=str_repeat("</ul></li>", ($previousLevel-1) );?>
<?endif?>

</ul>
<?endif?>


По задумке разделы меню, которые содержат подразделы, должны ракрываться при нажатии на них (без перехода на новую страницу). Но в результате использования кода, преведённого выше это не происходит. Не могли бы Вы мне подсказать, где ошибка, как сделать, чтобы разделы меню раскрывались?
спросил 30 Ноя, 13 от LoLiTKa (620 баллов)

1 Ответ

00 голосов
Тему можно закрыть.
Код рабочий. Дело в том, что я удалил из шаблона страницы то, что там должно быть, поэтому работало не так как нужно.
ответил 26 Янв, 14 от LoLiTKa (620 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 12 Апр, 14 от Yann (220 баллов)
0 голосов
1 ответ
спросил 09 Март, 14 от Nuts2010 (100 баллов)
0 голосов
3 ответов
спросил 23 Фев, 14 от Anton6 (160 баллов)
0 голосов
5 ответов
спросил 25 Ноя, 13 от Traxexx (900 баллов)
0 голосов
0 ответов
спросил 09 Ноя, 13 от Jagami (100 баллов)