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