Документация для разработчиков
Темная тема

onBlockGetRepository

Событие позволяет повлиять на массив блоков, отдаваемых из репозитория. Например, удалить некоторые при определенных условиях.

Параметры

:
Параметр Описание С версии
blocks Массив блоков.

Важно! Событие не подходит для добавления новых блоков (см. инструкцию по добавлению). Только для корректировки (например, категории) или удаления существующих.

Пример

В абстрактном примере мы пробегаемся по массиву блоков и при некорректной версии блока удаляем его из выдачи.

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('landing', 'onBlockGetRepository',
   function(\Bitrix\Main\Event $event)
   {
      $result = new \Bitrix\Main\Entity\EventResult;
      $blocks = $event->getParameter('blocks');

      foreach ($blocks as $secCode => &$section)
      {
         foreach ($section['items'] as $blockCode => &$block)
         {
            if (isset($block['manifest']['block']['version']))
            {
               $blockVersion = $block['manifest']['block']['version'];
               if (version_compare('15.0.0', $blockVersion) < 0)
               {
                  unset($section['items'][$blockCode]);
               }
            }
         }
         unset($block);
      }
      unset($section);

      $result->modifyFields(array(
         'blocks' => $blocks
      ));

      return $result;
   }
);


© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх