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

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
Наверх