Очень не люблю ЧПУ в адресах страниц. Бессмысленное жертва ради мнимого удобства. Из-за ЧПУ получаются супер-длинные адреса, которыми даже нельзя нормально делиться в некоторых соцсетях/мессенджерах из-за ограничения количества символов. Поэтому приходится переделывать некоторые сайты...
В Битриксе есть инструмент, позволяющий найти 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 коды. Полезно для очень узкого круга задач. Поэтому его часто используют неуместно.
Я бы с превеликим удовольствием забил бы на ЧПУ, более того, наслаждался, когда недавно делал сайт, которому ЧПУ вообще не приснился. Но обычно сразу налетают SEO, эти бастарды в славном семействе айтишников и начинают хрипло каркать, а клыент им верит. 🙁
Полностью согласен! Причём последнее время шум вокруг ЧПУ только усиливается. Написал об этом статью: https://www.alexgur.ru/articles/3811/
Привет! Спасибо за статью, помогло в одном проекте!
У тебя опечатка в "Найти id раздела по коду", ниже по тексту там функция должна быть CIBlockFindTools::GetSectionID
Ой, точно. Спасибо!