Динамичное меню в Битрикс

При разработке кастомного интернет-магазина на Битрикс: Управление сайтом, почти всегда необходимо меню, в котором пункты создаются динамически на основе создаваемых инфоблоков.

Во вновь созданном меню, в его настройках включаем галку:

Заходим в папку в разделе, в котором создали меню и находим файл меню, например это файл .catalog_test.menu.php

Создаем в этой же директории доп. файл с именем .catalog_test.menu_ext.php

В нем прописываем такой код:

<? 
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array(
"IS_SEF" => "Y",
"SEF_BASE_URL" => "/catalog/",
"SECTION_PAGE_URL" => "#SECTION_CODE_PATH#/",
"DETAIL_PAGE_URL" => "#SECTION_CODE_PATH#/#ELEMENT_CODE#.php",
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "4",
"DEPTH_LEVEL" => "3",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000"
),
false
);
$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
?>

Где:

«SEF_BASE_URL» => «/catalog/», — каталог товаров инфоблока на сайте (ссылка на физическую страницу на сайте)
«IBLOCK_ID» => — подставляем ID целевого инфоблока
«DETAIL_PAGE_URL» => «#SECTION_CODE_PATH#/#ELEMENT_CODE#.PHP», — полный путь к элементу инфоблока
«IBLOCK_TYPE» => «catalog», — ID типа инфоблока из которого выводим:

«IBLOCK_ID» => «4», ID инфоблока из которого выводим:


«DEPTH_LEVEL» => «3», уровень вложенности, этой цифрой можно выводить подразделы разделов если иерархия многоуровневая

Код компонента для вывода на странице:

                <?$APPLICATION->IncludeComponent(
"bitrix:menu",
"vertical_multilevel",
Array(
"ALLOW_MULTI_SELECT" => "N",
"CHILD_MENU_TYPE" => "section_test",
"COMPOSITE_FRAME_MODE" => "A",
"COMPOSITE_FRAME_TYPE" => "AUTO",
"DELAY" => "N",
"MAX_LEVEL" => "2",
"MENU_CACHE_GET_VARS" => array(""),
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_TYPE" => "N",
"MENU_CACHE_USE_GROUPS" => "Y",
"ROOT_MENU_TYPE" => "catalog_test",
"USE_EXT" => "Y"
)
);?>
Поделись, если оказалось полезно :)
Tags:
Нет комментариев

Написать