@mprog54
Кокон тыжпрограммиста

Как сделать двухуровневое нижнее меню на Битрикс?

Возникла необходимость сделать обычное (на мой взгляд) двухуровневое нижнее меню в футере. С Битриксом практически никогда не работал, нашел примеры в сети, подправил, но в Битриксе не появилась возможность добавить субэлементы в меню. В некоторых источниках написано что это работает только с левым меню. Если так, что если оно мне тоже нужно по назначению? Не будут ли конфликтовать два одинаковых меню одного типа на странице, но с разными шаблонами?
При переключении типа меню на "Левое меню", шаблон вывода для "Верхнее меню" перестаёт выводить элементы а что там менять, пока ещё не совсем очевидно.

Пример шаблона вывода (в верхнем меню выводит только 1 уровень)

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

<?
$class_root = 'nav-menu collapse';
$class_li = 'nav-menu__item has-dropdown';
?>

<?if (!empty($arResult)): ?>
<ul class="<?=$class_root ?>">
<!-- Sample -->
<!--<li class="<?=$class_li ?>">
     <span class="nav-menu__link">Каталог</span>
     <button class="nav-dropdown__btn"><i class="ti-angle-down"></i></button>
     <div class="nav-dropdown__wrap">
       <ul class="nav-dropdown">
         <li class="nav-menu__item"><a class="nav-menu__link" href="rent.php">Аренда бытовок</a></li>
         <li class="nav-menu__item"><a class="nav-menu__link" href="rent.php">Аренда вагончиков</a></li>
         <li class="nav-menu__item"><a class="nav-menu__link" href="rent.php">Аренда контейнеров</a></li>
         <li class="nav-menu__item"><a class="nav-menu__link" href="rent.php">Аренда модульных зданий</a></li>
        </ul>
      </div>
</li>-->

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

	<?else: // НЕ содержит подменю?>
		<?if ($arItem["PERMISSION"] > "D"): ?>
			<?if ($arItem["DEPTH_LEVEL"] == 1): // главное меню?>
				<li class="<?=$class_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="<?=$class_li?> 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:?>
				<?// выводим пустую ссылку и добавляем класс "denied"?>
				<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):?>
	<?=str_repeat("</ul></li>", ($previousLevel - 1)); ?>
<?endif?>

</ul>

<? endif; ?>

  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы