Комплексные компоненты и SEF-режим
Комплексные компоненты строят целые разделы сайта на базе механизма ЧПУ (SEF) и правил маршрутизации в urlrewrite.php. Класс CComponentEngine сопоставляет текущий URL с шаблонами путей разделов и элементов, после чего подключает соответствующие простые компоненты с передачей контекста $component.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Настройка SEF в компонентах
-
2
Шаблоны SEF-URL
-
3
Символьные коды
Материалы
Официальная документация
-
Структура комплексного компонента Старая дока
Проверь себя
Заказчик жалуется: после переноса каталога из /catalog/ в /shop/ все карточки отдают 404, хотя элементы на месте. Где искать?
В urlrewrite. Запись с CONDITION вида #^/catalog/# и PATH к физическому файлу создаётся при сохранении страницы в редакторе, а при переносе руками остаётся старой. Плюс SEF_FOLDER в параметрах должен совпадать с новым путём — guessComponentPath() сверяет с ним начало запрошенного URL.
Почему два шаблона путей «#SECTION_CODE#/» и «#ELEMENT_CODE#/» в одном компоненте — ошибка, даже если ядро их приняло?
Шаблоны обязаны различаться без учёта переменных. Эти два одинаковы структурно, и CComponentEngine сопоставит запрос первому подходящему: карточка элемента откроется как раздел или наоборот. Нужна различающая часть, например «#SECTION_CODE#/» и «item/#ELEMENT_CODE#/».
Чем комплексный компонент в SEF-режиме отличается от маршрута в /local/routes/web.php?
Комплексный компонент сам разбирает остаток URL после SEF_FOLDER по своим шаблонам, а до него запрос доводит urlrewrite. Роутинг разбирает URL до контроллера или PublicPageController по правилам в файле и не требует комплексного компонента вообще. Для нового раздела документация рекомендует роутинг.
Что делает VARIABLE_ALIASES и когда его трогать?
Задаёт, под какими именами переменные из URL или запроса попадут в arVariables, например SECTION_ID под именем sid. Трогать его нужно только при конфликте имён GET-параметров с другими компонентами на странице.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить