+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Сбрасываем кеш меню при изменении пунктов меню

Раньше так и было - изменили секцию ИБ, которая участвует в построении меню, или (тем более) добавили пункт меню в файл - кеш сбрасывался для всех меню. Что правильно и логично (обратного, по крайней мере, я не встречал). И вот не так давно это убрали, и возвращать не торопятся. Ниже три обработчика, которые вернут логику как было.

Просто регистрируем обработчики ниже согласно правилам через 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');
   }
}


Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA