Полный цикл в digital

Разбираемся с шаблоном меню horizontal_multilevel

Массив $arResult состоит из вложенных массивов, соответсвующих пунктам меню. Вложенные массивы содержат ключи:

  1. TEXT текст текущего пункта меню
  2. LINK ссылка текущего пункта меню
  3. SELECTED выбран ли пункт меню в данный момент
  4. PERMISSION доступ на страницу указанную в $LINK, возможны следующие значения:
    D доступ запрещён
    R чтение (право просмотра содержимого файла)
    U документооборот (право на редактирование файла в режиме документооборота)
    W запись (право на прямое редактирование)
    X полный доступ (право на прямое редактирование файла и право на изменение прав доступа на данных файл)
  5. ADDITIONAL_LINKS дополнительные ссылки для подсветки меню
  6. ITEM_TYPE D - директория (если LINK заканчивается на /), иначе P - страница
  7. ITEM_INDEX порядковый номер пункта меню
  8. PARAMS параметры пунктов меню
  9. DEPTH_LEVEL уровень вложенности пункта меню (1 для главного, 2 и далее для вложенных)
  10. IS_PARENT флаг того, что у этого пункта меню будет подменю

Вывод производится вложенными списками вида:

<ul id="horizontal-multilevel-menu">
<li><a>Пункт первого уровня вложенности</a></li>
<li><a>Пункт первого уровня вложенности</a>
<ul>
<li><a>Пункт второго уровня вложенности</a></li>
<li><a>Пункт второго уровня вложенности</a></li>
</ul>
</li>
<li><a>Пункт первого уровня вложенности</a></li>
</ul>
<?// если есть хотя бы 1 пункт меню, можно начинать вывод?>
<?if (!empty($arResult)):?>
<ul id="horizontal-multilevel-menu">
<?
// переменная содержит значение DEPTH_LEVEL предыдущего пункта
$previousLevel = 0; 
// пробегаем по пунктам, $arItem - массив с информацией о текущем пункте
foreach($arResult as $arItem): 
?>
<?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?// если уровень вложенности текущего пункта меню меньше чем у предыдущего, значит "подменю" закончилось и нужно закрыть список?>
<?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<?endif?>
<?
//если пункт содержит подменю, выводим ссылку и начинаем новый список (тег <ul>)
if ($arItem["IS_PARENT"]): 
?>
<?
// если уровень вложенности =1, т.е. это главное меню
if ($arItem["DEPTH_LEVEL"] == 1): 
?>
<?// выводим ссылку и добавляем класс "root-item" если пункт неактивный и "root-item-selected" если активный?>
<li>
<a href="<?=$arItem[" LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
<ul>
<?
// для остальных уровней вложенности
else: 
?>
<?// выводим ссылку и добавляем класс "parent". Если пункт активный, для элемента списка <li> добавляем класс "item-selected"?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem[" LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
<ul>
<?endif?>
<?
// для пунктов, не содержащих подменю
else: 
?>
<?
// проверяем право доступа к пункту
if ($arItem["PERMISSION"] > "D"): 
?>
<?
// если уровень вложенности =1, т.е. это главное меню
if ($arItem["DEPTH_LEVEL"] == 1): 
?>
<?// выводим ссылку и добавляем класс "root-item" если пункт неактивный и "root-item-selected" если активный?>
<li><a href="<?=$arItem[" LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
<?
// для остальных уровней вложенности
else: 
?>
<?// выводим ссылку. Если пункт активный, для элемента списка <li> добавляем класс "item-selected"?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem[" LINK"]?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?
// для пунктов, к которым запрещен доступ
else: 
?>
<?
// если уровень вложенности =1, т.е. это главное меню
if ($arItem["DEPTH_LEVEL"] == 1):
?>
<?// выводим пустую ссылку и добавляем класс "root-item" если пункт неактивный и "root-item-selected" если активный?>
<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: 
?>
<?// выводим пустую ссылку и добавляем класс "denied"?>
<li><a href="" class="denied" title="<?=GetMessage(" MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?endif?>
<?endif?>
<?
// запоминаем уровень вложенности
$previousLevel = $arItem["DEPTH_LEVEL"]; 
?>
<?endforeach?>
<?
// если работа завершилась на пункте меню с уровнем вложенности >1, закрываем вложенные списки
if ($previousLevel > 1):
?>
<?=str_repeat("</ul></li>", ($previousLevel-1) );?>
<?endif?>
</ul>
<?endif?>
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг