Битрикс. Делаем меню из категорий инфоблоков

Битрикс. Делаем меню из категорий инфоблоков
Блог
19.02.2018 08:53:00
В продолжении статьи "Битрикс. Делаем меню из элементов инфоблока", мы рассмотрим, как сделать меню из категорий инфоблока.

Рассмотрим на примере моего сайта

К главному меню под названием "Верхнее горизонтальное меню" к разделу "Блог" мне надо вывести подменю из элементов инфоблока "Мой блог о Web".

1) Если инфоблок уже создан, то в редактирование информационных блоков в административной панели "Контент" - "Инфоблоки" - "Типы инфоблоков"  мы находим нужный Вам инфоблок. 


В моем случае меня интересует инфоблок "Мой блог о web", у которого ID равен 8.

2) Создаем новый тип меню в административном разделе "Настройки" - "Настройки продукта" - "Настройки модулей" - "Управление структурой". Так как это продолжение статьи "Битрикс. Делаем меню из элементов инфоблока", то уже тип меню у меня создан, а Вы можете его создать если нет, так же Вы можете использовать стандартное меню для выпадающего списка "left" (меню раздела).


Создаем тип меню "left_infoblock" с названием "Меню элементов инфоблока", конечно Вы можете указать удобное Вам наименование.

 

3) Теперь в папке, где будет размещаться инфоблок (согласно его настройке) создаем файлы отвечающие за меню. 

P.S. Если Вы решили использовать "меню раздела"(left), то посмотрите, может оно уже создано или тогда создайте его.


Выбираем в типе меню только что нами созданное и нажимаем "Сохранить". 

Меню будет пустое, так как формироваться оно будет на основе инфоблока.


Теперь нам надо создать дополнительный обработчик данного меню. Для этого создается в этой же папке с меню файл под названием ".ваше_меню.menu_ext.php", а в моем случае ".left_infoblock.menu_ext.php".

P.S. Если Вы используете меню раздела (left), то создается в этой же папке с меню файл под названием ".left.menu_ext.php".

В него мы скопируем следующий код:

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
    if(CModule::IncludeModule("iblock"))
    {
		$IBLOCK_ID = 8; //здесь необходимо указать ID Вашего инфоблока
		$itemsSection = GetIBlockSectionList($IBLOCK_ID);
		while($arItem = $itemsSection->GetNext()) { 

		$aMenuLinksExt[] = Array(
                $arItem["NAME"],
                $arItem["SECTION_PAGE_URL"],
                Array(),
                Array(),
                ""
                );
		}
    }   
$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
?>
Нам осталось в коде поправить переменную $IBLOCK_ID, в которой хранится ID нашего инфоблока. У меня ID = 8, следовательно $IBLOCK_ID = 8; 

4) Выводим меню на страницу сайта. 

В настройках меню, проверяем, чтобы были такие параметры: "Тип меню для первого уровня" наше меню со ссылкой на раздел инфоблока, "Уровень вложенности меню" делаем 2 и в "Тип меню для остальных уровней" ставим "Меню элементов инфоблока" (или "меню раздела", если делали его). 

Обязательно должна стоять галочка "Подключать файлы с именами вида .тип_меню.menu_ext.php"


Если все сделали правильно у Вас сформируется подменю из элементов инфоблока.


Что я предлагаю

Создам для Вас -

  • Уникальный адаптивный дизайн
  • Заключение договора

Заполните форму