Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


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

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

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

 

 

Источник: http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/8560/

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

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














CAPTCHA