+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как облегчить кастомизацию многоуровневого меню на «Битрикс»

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

Всякий, кому доводилось настраивать оформление (кастомизировать) меню, знает, насколько это неудобный и трудоемкий процесс. Несколько файлов стилей, несколько скриптов JavaScript, фоновые изображения. Всю эту структуру надо описать, держать в архиве, при каждой модификации меню актуализировать. Нельзя ли упростить процедуру? Можно. И вот каким образом:

1. Сделаем шаблон меню

Для этого используем следующий код PHP:

<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true)die();?>
<?if (!empty($arResult)):?>
   <?foreach($arResult as $i => $arItem):?>
      <a href="<?=$arItem['LINK']?>"><?=$arItem['TEXT']?></a>
   <?endforeach?>
<?endif;?>


2. Вид меню будет определять скрипт-модификатор

Создадим файл result_modifier.php. Его задачей будет трансформировать линейное меню в древовидное.

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

if (!empty($arResult)) {
	$parentID = false;
	$subParentID = false;
	foreach($arResult as $i => $arItem) {
		if ($arItem['DEPTH_LEVEL'] == 1) {
			$parentID = $i;
			$arResult[$i]['ITEMS'] = array();
		} elseif ($arItem['DEPTH_LEVEL']==2 && $parentID!==false) {
			$arResult[$parentID]['ITEMS'][$i] = $arItem;
			$subParentID = $i;
			unset($arResult[$i]);
		} elseif ($arItem['DEPTH_LEVEL']==3 && isset($arResult[$parentID]['ITEMS'][$subParentID])) {
			if (!isset($arResult[$parentID]['ITEMS'][$subParentID]['ITEMS'])) {
				$arResult[$parentID]['ITEMS'][$subParentID]['ITEMS'] = array();
			}
			$arResult[$parentID]['ITEMS'][$subParentID]['ITEMS'][] = $arItem;
			unset($arResult[$i]);
		}
	}
	$arResult = array_values($arResult);
}


3. Настроим динамическое формирование на любом уровне вложенности

Используем для этого следующий код:

$GLOBALS['arResult'] = $arResult;
$countItems = count($arResult); 

function returnSubMenu() {
   global $countItems;
   static $k = 0;
  
   $arSubMenu = array();

   while(1) {



Готово!

Кастомизация трехуровневого меню теперь проста, однозначна и занимает не более 35 минут времени.

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...