Создание сайтов на Laravel, 1С Битрикс и WordPress
ПраймВеб - Студия интернет решений
ПраймВеб
Студия интернет решений
~/bitrix/cache/#SITE_ID#/pr/menu/#HLBLOCK_ID#_#MENU_ID#/Можно удалить при помощи кода (например HighloadBlock в котором создано меню = 5, ID меню = 3):
BXClearCache(true, '/s1/pr/menu/5_3/');
/** * Передается массив * * @param int $hl_id - ID HighloadBlock блока * @param int $menu_id - ID меню * @param array menu_items - массив пунктов меню из базы данных * @return array - должен вернуть массив */Событие должно вернуть такой же массив с вашими правками. Во внимание будет принят только menu_items.
AddEventHandler("pr.menu", "OnBeforeItemsArrayMake", "prOnBeforeItemsArrayMake"); function prOnBeforeItemsArrayMake($data = array()) { \CModule::IncludeModule('iblock'); $hl_id = $data['hl_id']; $menu_id = $data['menu_id']; // для меню ID = 3 из HighloadBlock = 5 if($menu_id == '3' AND $hl_id == '5') { // Выберем нужные разделы из инфоблока $res = \CIBlockSection::GetList(array(), array('IBLOCK_ID' => 6), false, array('ID', 'SECTION_PAGE_URL', 'NAME')); while($arF = $res->GetNext()) { $new_item = array( 'id' => 'section_'.$arF['ID'], // ОБЯЗАТЕЛЬНО добавить префикс к ID, чтобы не смешивать с ID пунктов меню из базы данных 'parent' => '5', // К какому пункту меню добавляем дополнительные элементы 'name' => $arF['NAME'], // название пункта меню 'link' => $arF['SECTION_PAGE_URL'], // ссылка пункта меню 'classes' => 'custom_class', // классы если требуется 'attributes' => 'custom_attr', // атрибуты если требуется ); $data['menu_items'][] = $new_item; // дополним в массив всех пунктов меню новый пункт } } // вернем обратно кастомизированный массив return $data; }Событие OnBeforeItemsArrayMake кешируется вместе с компонентом.