tapok26
7/28/2017 - 12:00 PM

extra submenu in bitrix

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