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

resolveComponentEngine

string public static CIBlockFindTools::resolveComponentEngine(
	CComponentEngine $engine,
	array $pageCandidates,
	array &$arVariables
);

Метод выбирает подходящую страницу комплексного компонента по набору кандидатов ЧПУ и заполняет массив переменных $arVariables. Метод статический.

Метод используется как callback для CComponentEngine::setResolveCallback, когда нужно проверить существование раздела или элемента информационного блока перед выбором страницы компонента.

Параметры вызова

Параметр Описание
$engine Объект CComponentEngine, который разбирает ЧПУ-адрес комплексного компонента.
$pageCandidates Массив кандидатов страниц. Ключ массива - идентификатор страницы компонента, значение - набор переменных, полученных из URL.
$arVariables Массив переменных выбранной страницы. Передается по ссылке и заполняется после определения подходящего кандидата.

Возвращаемое значение

Метод возвращает идентификатор выбранной страницы компонента. Если элемент или раздел не удалось определить по кандидатам, метод возвращает первого кандидата и его переменные.

Особенности

  • Метод получает ID инфоблока из параметра компонента IBLOCK_ID.
  • Для детальной страницы с путем раздела метод сначала пытается проверить элемент через CIBlockFindTools::checkElement.
  • Для страницы раздела с SECTION_CODE_PATH метод проверяет раздел через CIBlockFindTools::checkSection.
  • Результат определения страницы кешируется в области iblock_find.

Примеры

Подключение callback в комплексном компоненте:

use Bitrix\Main\Loader;

if (Loader::includeModule('iblock'))
{
    $engine = new CComponentEngine($this);
    $engine->addGreedyPart('#SECTION_CODE_PATH#');
    $engine->addGreedyPart('#SMART_FILTER_PATH#');
    $engine->setResolveCallback(array('CIBlockFindTools', 'resolveComponentEngine'));

    $arVariables = array();
    $componentPage = $engine->guessComponentPath(
        $arParams['SEF_FOLDER'],
        $arUrlTemplates,
        $arVariables
    );
}


© «Битрикс», 2001-2026, «1С-Битрикс», 2026