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"
Если все сделали правильно у Вас сформируется подменю из элементов инфоблока.