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"];
	}
}
?>


Комментарии ()