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