Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Сбрасываем кеш меню при изменении пунктов меню
Раньше так и было - изменили секцию ИБ, которая участвует в построении меню, или (тем более) добавили пункт меню в файл - кеш сбрасывался для всех меню. Что правильно и логично (обратного, по крайней мере, я не встречал). И вот не так давно это убрали, и возвращать не торопятся. Ниже три обработчика, которые вернут логику как было. Просто регистрируем обработчики ниже согласно правилам через AddEventHandler в init.php.
//добавление секции, если она влияет на построение меню
public static function OnAfterIBlockSectionAdd($arFields) {
if ($arFields['IBLOCK_ID'] == CProSet::IB_menu) {
$GLOBALS['CACHE_MANAGER']->CleanDir('menu');
CBitrixComponent::clearComponentCache('bitrix:menu');
}
}
//изменение секции, если она влияет на построение меню
public static function OnAfterIBlockSectionUpdate($arFields) {
if ($arFields['IBLOCK_ID'] == CProSet::IB_menu) {
$GLOBALS['CACHE_MANAGER']->CleanDir('menu');
CBitrixComponent::clearComponentCache('bitrix:menu');
}
}
//изменение файла меню
public static function OnChangeFile($path, $site) {
if (preg_match('/\..*?\.menu\.php/is', $path)) {
$GLOBALS['CACHE_MANAGER']->CleanDir('menu');
CBitrixComponent::clearComponentCache('bitrix:menu');
}
}