Поводом для написания статьи стали многочисленные темы на официальном форуме битрикса. Согласитесь, намного приятнее в адресной строке браузера видеть четко структурированный текст вместо непонятного набора символов.
Не спорю, практически все методы настройки описаны в документации\faq\темах форума. Но, не каждый пользователь проходит курс «Компоненты 2.0» и заходит в документацию для разработчиков. К тому же система поиска форума по слову «ЧПУ» выдает в топ обсуждения 2007-08 года, что на данный момент не очень актуально.
Сейчас я постараюсь просто и понятно описать весь процесс настройки применительно к «чистому» сайту (без demo-данных). Предполагается, что Вы уже умеете создавать инфоблоки:)
Выделим 4 способа организации новостной ленты, и для каждого из них опишем метод создания человеко-понятных-урл:
- использование комплексного компонента и адреса вида /news/1/2/, где новость характеризуют числовые идентификаторы – id раздела (1) и id новости (2)
- совокупное использование компонентов «лента новостей» и «новость детально».
Адреса вида /news/2/, где 2 — id новости. - использование комплексного компонента и адреса вида /news/razdel/novost/, где конкретный элемент характеризуют символические идентификаторы
- совокупное использование компонентов «лента новостей» и «новость детально». Адреса вида /news/novost/
Инструкция к способу №1:
— настраиваем обработчик 404 ошибки (отсутсвие запрашиваемой страницы).
Для этого в файле /.htaccess добавляем запись
ErrorDocument 404 /404.php
Необходимо изменить файл /404.php и добавить в самое начало
include_once($_SERVER['DOCUMENT_ROOT']. '/bitrix/modules/main/include/urlrewrite.php' );
В случае, когда известно что для Apache используется модуль mod_rewrite, в /.htaccess записываем
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] </IfModule>
— создаем тип инфоблока, сам инфоблок для хранения новостей, разделы инфоблока, и собственно добавляем информацию. Важно помнить, что если планируется использовать разделы, то необходимо отметить в качестве обязательного поля привязку к разделам.
— добавляем на необходимую страницу комплексный компонент «новости». В нем указываются необходимые параметры вывода, и, самое необходимое, включается режим ЧПУ.
Для инфоблока с разделами:
Без разделов:
Каталог ЧПУ — как правило указывается каталог где лежит компонент. Но можно использовать и любой другой путь (даже не существующий)
После проделанных несложных манипуляций заработает штатный механизм ЧПУ для комплексного компонента.
Стоит напомнить, что для корректной работы поиска необходимо в настройках инфоблока правильно прописать параметры URL. Для нашего примера они будут такими:
URL страницы информационного блока: #SITE_DIR#/news/
URL страницы раздела: #SITE_DIR#/news/#SECTION_ID#/
URL страницы детального просмотра: #SITE_DIR#/news/#SECTION_ID#/#ELEMENT_ID#/
На сегодня все, подписывайтесь, скоро выйдут остальные части статьи!
Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!
Подписаться в telegram
здравствуйте! на сайте некоторые правила в урлреврайт настроены нестандартно и затираются при каких -либо действиях админа по правке компонентов или настройке модулей.. сталкивались с таким? просто кошмар какой-то (((
С такой проблемой не сталкивался, обратитесь в техподдержку, они точно скажут почему правила затираются.
а можете подсказать как битрикс переводит русскоязычные названия в короткие англоязычные? Пишешь «новости» он сразу «news» делает а не «novosti». Как? И где код который такое проворачивает?
Переводится с помощью гугла. В настройках какого-то из модулей (вроде главного модуля) устанавливается.
Где описание четвертого способа?????????????????????????????????
Подскажите, пожалуйста, в чем может быть еще проблема, что детальная новость не открывается или открывается не корректно
У меня вывод идет в блог,
прописала в инфо-блоке
#SITE_DIR#/blog/
#SITE_DIR#/blog/#ELEMENT_CODE#/
в настройках компонента bitrix:news
/blog/
#ELEMENT_CODE#/
в urlrewrite.php
стоит
13 =>
array (
‘CONDITION’ => ‘#^/blog/#’,
‘RULE’ => »,
‘ID’ => ‘bitrix:news’,
‘PATH’ => ‘/blog/index.php’,
‘SORT’ => 100,
),
в blog/index.php
«SEF_URL_TEMPLATES» => array(
«news» => «»,
«section» => «»,
«detail» => «#ELEMENT_CODE#/»,
«SEF_MODE» => «Y»,
«SEF_FOLDER» => «/blog/»,