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

перевод меню в html

00 голосов
4
Помогите мне пожалуйста :|

Мой нынешний уровень: Php не знаю, html и css в процессе освоения. В общем я совсем начинающая.

Осваиваю меню в Битрикс: с вертикальным одноуровневым проблем не возникло. Я из такого кода:
Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?if (!empty($arResult)):?>
<ul class="left-menu">

<?foreach($arResult as $arItem):?>
   <?if($arItem["SELECTED"]):?>
      <li><a href="<?=$arItem["LINK"]?>" class="selected"><?=$arItem["TEXT"]?></a></li>
   <?else:?>
      <li><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
   <?endif?>
   
<?endforeach?>

</ul>
<?endif?>

перевела вот в такой:
Код
<ul class="left-menu">
<li><a href="" class="selected">пункт меню</a></li>
<li><a href="">пункт меню</a></li>
</ul>

и сразу стало понятно как стили редактировать.

А вот с горизонтальным многоуровневым выпадающим просто беда :oops:

Помогите перевести php код в html или подскажите в какую сторону думать, иначе мне не разобраться со стилями(.

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

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

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

<?endforeach?>

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

</ul>
<div class="menu-clear-left"></div>
<?endif?>


Прошу прощения за такой детский вопрос, я уже неделю со стилями бьюсь. :cry:
спросил 20 Дек, 13 от Gremuar (100 баллов)

4 Ответы

00 голосов
Код
 <?if ($arItem["IS_PARENT"]):?> 
Проверка есть ли у конкретного уровня еще вложенность или нету.
Код
 <?if ($arItem["DEPTH_LEVEL"] == 1):?>
Проверка является ли текущий уровень вложенности 1-м (самым верхним) или нет.
Код
 <!-- это коментарий  --> - это коментарий 
<ul id="horizontal-multilevel-menu">
 <li><a href="ссылка" class="root-item-selected">Текст ссылки 1</a></li> <!--данный пункт 1-го уровня и выбран -->
 <li><a href="ссылка" class="root-item">Текст ссылки 2</a></li><!--данный пункт 1-го уровня но НЕ выбран -->
 <li><a href="ссылка" class="root-item">Текст ссылки 3</a>
<ul>
 <li><a href="cылко">текст ссылки</a></li> <! -- данный пункт 2-го уровня, подпункт 3-й ссылки 1-го уровня
</ul>
</li>
</ul> 
<div class="menu-clear-left"></div>

Примерно так.
+ еще в этом шаблоне есть кусок проверки указана ли ссылка у пункта меню или нет.
ответил 06 Март, 14 от Grimmi (2,560 баллов)
00 голосов
Спасибо за ответ.Рисунок

Что я поняла:

root-item-selected - активная ссылка
root-item - просто ссылка

А вот что за такие классы:
parent
denied
item-selected

И для чего они нужны?Рисунок
ответил 26 Июнь, 14 от Gremuar (100 баллов)
00 голосов
item-selected - выбранный подпункт 2-го уровня
denied - будет у элементов которы не имеют ссылки, то есть href="" - будет пустое
parent - у элементов НЕ первого уровня ИМЕЮЩИХ у себя еще один уровень вложенности.

P.S. Самое простое это включить пример и посмотреть код, так гораздо нагляднее получается
ответил 26 Окт, 14 от Grimmi (2,560 баллов)
00 голосов
parent это родитель т.е. ссылка раздела допустим "магазин" в ней подразделы "доставка, оплата" и тд.
denied это если дан доступ к ссылке, т.е. если ссылка открыта не всем
item-selected активная ссылка подраздела (на сколько я понимаю)
ответил 24 Фев, 15 от AlesanaMo (260 баллов)

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

0 голосов
5 ответов
спросил 11 Дек, 13 от IoOI (100 баллов)
0 голосов
2 ответов
0 голосов
1 ответ