ЧПУ Битрикс

ЧПУ - человеко понятные урлы. То есть задача наша заключается в том чтобы избавится от ?ID= ?SECTION_ID и прочее, а сделать понятные папки и файлы html. Как будто они там существуют.

Разберем пример. Допустим необходимо сделать новости. Подразумевается что у нас есть папка на сервере news, в которой лежит файл list.php, который в свою очередь отображает список новостей, также в этой папке лежит файл detail.php, который отображает детально новость. По умолчанию новости какого - либо раздела будут доступны по адресу

/news/list.php?SECTION_ID=12,

нам необходимо переделать эту сроку в

/news/razdel1/.

Для детального отображения новости соответственно переделываем из

/news/detail.php?ID=23

в

/news/razdel1/novost1.html

Итак. Для начала расскажу о самом принципе построения ЧПУ. Вы в строке браузера будете вводить /news/razdel1/ , естественно такой папки на сервере не существует, поэтому необходимо битриксу объяснить что этот адрес нужно перенаправить на другой скрипт, а именно на /news/list.php , с параметрами GET.

Тем кто знаком с mod_rewrite , будет значительно проще.

Для начала необходимо создать в корне сайта файл urlrewrite.php, если он не создан, примерно такого содержания:

<?
$arUrlRewrite = array(
	array(
		"CONDITION"	=>	"#^/news/([a-z0-9\_]+)/([a-z0-9\_]+).html#",
		"RULE"	=>	"SECTION_CODE=$1&ELEMENT_CODE=$2",
		"PATH"	=>	"/news/detail.php",
	),
	array(
		"CONDITION"	=>	"#^/news/([a-z0-9\_]+)/#",
		"RULE"	=>	"SECTION_CODE=$1",
		"PATH"	=>	"/news/list.php",
	),
);

?>

Каждое правило это массив, состоящий из

  • CONDITION - регулярное выражение адресной строки
  • RULE - GET параметры которые предаются скрипту.
  • PATH - адрес скрипта

Теперь необходимо перейти в настройки инфоблока и ввести корректные пути отображения раздела и детальной новости. Это необходимо для поиска и там где пути выводятся автоматически.

URL страницы раздела: #SITE_DIR#/catalog/#CODE#/

URL страницы детального просмотра: #SITE_DIR#/news/#SECTION_CODE#/#CODE#.html

Стоит понимать что указать можно какие угодно пути, но для нашего примера это будет так.

Все теперь остается в настройках компонентов на наших страницах переделать на отображения элементов в зависимости от кодов а не  ID. (в поле код раздела нужно написать $_REQUEST['SECTION_ID'])

вот и все. Удачи. Задавайте вопросы.

P.S. забыл сказать что у разделов и элементов в поле код должны быть уникальные значения кодов разделов и элементов. Обычно это транслит без пробелов названий.

Запись опубликована в рубрике 1С Битрикс, Веб-программирование. Добавьте в закладки постоянную ссылку.

Комментарии запрещены.