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

Вывод первых N пунктов (верхнего уровня) многоуровневого меню

00 голосов
1
Здравствуйте!
Модифицировала шаблон horizontal_multilevel_menu следующим образом:


Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?if (!empty($arResult)):?>
<ul id="horizontal-multilevel-menu">
<?
$previousLevel = 0;
for ($i=0; $i<10; $i++):?>

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

   <?if ($arResult[$i]["IS_PARENT"]):?>
      <?if ($arResult[$i]["DEPTH_LEVEL"] == 1):?>
         <li><a href="<?=$arResult[$i]["LINK"]?>" class="<?if ($arResult[$i]["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arResult[$i]["TEXT"]?></a>
            <ul>
      <?else:?>
         <li<?if ($arResult[$i]["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arResult[$i]["LINK"]?>" class="parent"><?=$arResult[$i]["TEXT"]?></a>
            <ul>
      <?endif?>
   <?else:?>
      <?if ($arResult[$i]["DEPTH_LEVEL"] == 1):?>
         <li><a href="<?=$arResult[$i]["LINK"]?>" class="<?if ($arResult[$i]["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arResult[$i]["TEXT"]?></a></li>
      <?else:?>
         <li<?if ($arResult[$i]["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arResult[$i]["LINK"]?>"><?=$arResult[$i]["TEXT"]?></a></li>
      <?endif?>
   <?endif?>
   <?$previousLevel = $arResult[$i]["DEPTH_LEVEL"];?>

<?endfor;?>

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


Отображается только первый пункт верхнего уровня, но со всеми дочерними элементами. А мне нужно вывести еще 9 пунктов меню.
Подскажите, пожалуйста, где я ошиблась.
спросил 21 Авг, 13 от Fregat (160 баллов)

1 Ответ

00 голосов
Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?if (!empty($arResult)):?>
<ul id="horizontal-multilevel-menu">

<?
$previousLevel = 0;
$sectionNumber=0;
foreach($arResult as $arItem):?>
   
   <?if ($sectionNumber > 8) break;?>
    <?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
      <?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
   <?endif?>

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

      <?if ($arItem["DEPTH_LEVEL"] == 1):?>
         <li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
            <ul class="child-menu">
      <?else:?>
         <li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
            <ul class="child-menu">
      <?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<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></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"];
   if ($arItem["DEPTH_LEVEL"] == 1) $sectionNumber++;?>
   
<?endforeach?>

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

</ul>
<div class="menu-clear-left"></div>
<?endif?>
 
Только, к сожалению, если последний выводимый пункт имеет дочерние элементы, они не выводятся. (((
ответил 21 Авг, 13 от Fregat (160 баллов)

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

0 голосов
4 ответов
спросил 26 Апр, 13 от EWARw (480 баллов)
0 голосов
3 ответов
0 голосов
3 ответов
спросил 07 Фев, 14 от KiRo (100 баллов)
0 голосов
6 ответов
спросил 01 Июль, 13 от Harror (160 баллов)
0 голосов
3 ответов
спросил 27 Март, 14 от kakashka1 (340 баллов)