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

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-2024, «1С-Битрикс», 2024