Дата последнего изменения: 13.11.2023
В комплексные компоненты встроена функция генерации ЧПУ. У этих компонентов всегда есть входной параметр SEF_MODE
, который может принимать значения Y
и N
. Если параметр SEF_MODE
равен N
, то компонент работает с физическими ссылками и все параметры передает через стандартные параметры HTTP запроса. Например:
Если параметр SEF_MODE
равен Y
, то компонент генерирует и обрабатывает ссылки на основании шаблонов. Например, он может понять и обработать ссылку:
/fld/cat.php
.
Если параметр SEF_MODE
равен Y
, то у компонента должен так же присутствовать параметр SEF_FOLDER
, который должен содержать путь до папки, с которой работает компонент. Этот путь может как совпадать с физическим путем, так и не совпадать. Например, в компоненте bitrix:catalog, подключенном в файле /fld/cat.php
, могут быть установлены параметры SEF_MODE = Y
и SEF_FOLDER=/catalog/
. Тогда компонент будет отвечать на запросы по пути /catalog/...
. По умолчанию редактор должен устанавливать текущий физический путь к редактируемому файлу.
У комплексного компонента, который может работать в режиме SEF, должен быть определен набор шаблонов путей по умолчанию. Например, в комплексном компоненте bitrix:catalog может быть определен следующий массив:
$arDefaultUrlTemplatesSEF = array( "list" => "index.php", "section" => "section.php?IBLOCK_ID=#IBLOCK_ID#&SECTION_ID=#SECTION_ID#", "element" => "element.php?ELEMENT_ID=#ELEMENT_ID#" );
Эти шаблоны путей могут быть переопределены с помощью входного параметра комплексного компонента SEF_URL_TEMPLATES
, содержащего новый массив всех шаблонов путей или их части.
При сохранении в редакторе страницы с компонентом, работающим в SEF режиме, создается или обновляется запись в системе urlrewrite
. Например, при сохранении файла /fld/cat.php
, в котором лежит компонент bitrix:catalog, переключенный в SEF режиме с параметром SEF_FOLDER=/catalog/
, в системе urlrewrite создается или обновляется запись типа:
array( "CONDITION" => "#^/catalog/#", "ID" => "bitrix:catalog", "PATH" => "/fld/cat.php" ),
CONDITION
записывается значение параметра SEF_FOLDER
, обрамленное символами «#^» и «#»; ID
записывается название компонента; PATH
записывается физический путь к файлу, который сохраняется. Если запись с таким PATH
и ID
уже есть, то она обновляется, если нет – добавляется.
В run-time при запросе физически не существующей страницы механизм urlrewrite производит поиск соответствующей записи по CONDITION
и передает управление на страницу PATH
.
Компонент на странице PATH
на основании шаблонов путей выясняет запрашиваемую страницу и восстанавливает переменные, спрятаные в пути.
То есть, набор шаблонов путей
Список ссылок по теме: