Bitrix. Получить id элемента/раздела по коду

Очень не люблю ЧПУ в адресах страниц. Бессмысленное жертва ради мнимого удобства. Из-за ЧПУ получаются супер-длинные адреса, которыми даже нельзя нормально делиться в некоторых соцсетях/мессенджерах из-за ограничения количества символов. Поэтому приходится переделывать некоторые сайты…

В Битриксе есть инструмент, позволяющий найти id элемента/раздела по символьному коду (зачастую совпадает с частью ЧПУ). К сожалению, он не описан в документации. Поэтому о всех его свойствах можно догадаться только посмотрев исходный код в файле:

/bitrix/modules/iblock/classes/general/comp_findtools.php

Найти id элемента по коду

$id = CIBlockFindTools::GetElementID($element_id, $element_code, $section_id, $section_code, $arFilter)

Эта функция вернёт id элемента. Или ноль, если не найдёт элемент. Разберём параметры функции:

$element_id — если передать id элемента, то он и вернётся

$element_code — символьный код элемента

$section_id — id секции, в которой лежит элемент (необязательный)

$section_code — символьный код секции, в которой лежит элемент (необязательный)

$arFilter — массив свойств для фильтрации (необязательный). Для ускорения процесса поиска можно передать id инфоблока, в котором лежит элемент: array(«IBLOCK_ID» => №).

Найти id раздела по коду

Используется похожая функция, что и для поиска элемента:

$id = CIBlockFindTools::GetSectionID($section_id, $section_code, $arFilter)

Параметры:

$section_id — id секции

$section_code — символьный код секции

$arFilter — массив свойств для фильтрации (необязательный). Но для ускорения процесса поиска можно передать id инфоблока, в котором лежит элемент: array(«IBLOCK_ID» => №).

Не страдайте

Товарищи, не страдайте! Не делайте ЧПУ. Ни разу не слышал и не видел оправданного применения ЧПУ.

ЧПУ — это как QR коды. Полезно для очень узкого круга задач. Поэтому его часто используют неуместно.



2017-10-28T17:19:11
Программирование