template.php
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); ?>
<?if (!empty($arResult)) { ?>
<div class="menu-top-toggler"></div>
<ul class="list-simple menu-top d-flex align-items-center justify-content-between">
<? foreach($arResult as $arItem) { ?>
<? if ($arItem["DEPTH_LEVEL"] > 1) continue; ?>
<li class="menu-top-item<?=$arItem["CLASS"];?>">
<a class="menu-top-item-link" href="<?=$arItem["LINK"];?>"<?=$arItem["TARGET"];?>><?=$arItem["TEXT"];?></a>
<? if ($arItem["CHILD_KEYS"]) { ?>
<ul>
<? foreach($arItem["CHILD_KEYS"] as $cKey) { ?>
<? $arSubItem = $arResult[$cKey]; ?>
<li class="<?=$arSubItem["CLASS"];?>">
<a href="<?=$arSubItem["LINK"]?>"<?=$arSubItem["TARGET"];?>><?=$arSubItem["TEXT"]?></a>
</li>
<? } ?>
</ul>
<? } ?>
</li>
<? } ?>
</ul>
<? } ?>
result_modifier.php
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
/*
* Готовлю массив для удобного вывода в шаблоне
*
*/
foreach($arResult as $key => &$arItem){
$nextKey = $key+1;
$next = $arResult[$nextKey];
$childKeys = array();
/*
* Если, за елементом $arItem, идет следующий элемент $next
* с более глубокой вложенностью, добавляю его, и следующиее за ним
* елементы той же вложенности в массив дочерних елементов
*
*/
while( $next['DEPTH_LEVEL'] > $arItem['DEPTH_LEVEL'] ) {
// Только те, что на 1 уровень глубже
if($next['DEPTH_LEVEL'] == $arItem['DEPTH_LEVEL']+1 ) {
$childKeys []= $nextKey;
}
$nextKey++;
$next = $arResult[$nextKey];
}
$arItem['CHILD_KEYS'] = $childKeys;
$arItem["CLASS"] = "";
if ($arItem["SELECTED"]) {
$arItem["CLASS"] .= ' -active';
}
if ($arItem["CHILD_KEYS"]) {
$arItem["CLASS"] .= ' -sub';
}
$arItem["TARGET"] = "";
if ($arItem["PARAMS"]["TARGET"]) {
$arItem["TARGET"] .= $arItem["PARAMS"]["TARGET"];
}
}
?>
Комментарии ()