extra submenu in bitrix
1. add extra param into menu item in file .menu_type.menu.php with key 'SUB_MENU_DATA'
ex: Array(
"Услуги",
"/servicies/",
Array(),
Array(
'SUB_MENU_DATA' => [
'IBLOCK_ID' => SERVICES_IBLOCK_ID
]
),
""
)
2. result_modifier.php of menu template:
$insertPosition = false;
if (!empty($arResult)){
foreach($arResult as $key => $arItem){
if(isset($arItem['PARAMS']['SUB_MENU_DATA'])){
$arResult[$key]['IS_PARENT'] = 'Y';
$arSubMenu = [];
$insertPosition = $key + 1;
$res = getItemsByFilter(
['SORT' => 'ASC'],
['IBLOCK_ID' => $arItem['PARAMS']['SUB_MENU_DATA']['IBLOCK_ID'], 'ACTIVE' => 'Y'],
['NAME', 'DETAIL_PAGE_URL']
);
foreach ($res as $value) {
$arSubMenu[] = [
'TEXT' => $value['NAME'],
'LINK' => $value['DETAIL_PAGE_URL'],
'DEPTH_LEVEL' => 2
];
}
}
}
}
if($insertPosition){
array_splice($arResult, $insertPosition, 0, $arSubMenu);
}
3. getItemsByFilter - function, that obtain items from infoblock and return it as an array