Следи за нами

ЧПУ компонентов. Добавление динамических правил

Дата создания: г.

(человеко-понятный URL) из себя представляет набор правил составленных с помощью PERL-совместимых регулярных выражений, они расположены в файле urlrewrite.php корня сайта.

ЧПУ

(человеко-понятный URL) из себя представляет набор правил составленных с помощью PERL-совместимых регулярных выражений (почитать о них), они расположены в файле urlrewrite.php корня сайта.

Примерно такого содержания:

$arUrlRewrite=array ( ... array ( 'CONDITION' => '#^/services/#', 'RULE' => '', 'ID' => 'bitrix:catalog', 'PATH' => '/services/index.php', 'SORT' => 100, ), ... );

При добавлении некого правила в параметры компонента в раздел ЧПУ при сохранении у нас обновляется содержимое файла urlrewrite.php. Правила при этом сортируются по длине строки 'CONDITION' (в данном случае #^/services/#), по принципу чем длиннее правило тем раньше оно добавляется, т.к. предполагается, что оно более детальное. Поэтому стоит создавать правила в единообразной форме.

В процессе перехода на сайта по некому адресу (физически которого не существует!), мы практически сразу попадаем на проверку соответствует ли адрес какому-либо правилу в urlrewrite.php, как только находится соответствие выдается соответствующая страница 'PATH'

Через административную панель можно редактировать правила в разделе Настройки > Настройки продукта > Обработка адресов > Правила

Следует помнить, что в случае самостоятельно редактирования urlrewrite.php сортировка не происходит, условия проверяются в той последовательности в которой они записаны.

Более подробно можно почитать о ЧПУ на сайте перейти

Добавление динамических разделов

У разработчиков часто возникает необходимость в создании динамических разделов, т.е. без существующей физической папки на диске, соответствующей данному разделу. Решить эту проблему можно с помощью следующих методов:

  1. Через параметры компонента:

    Стоит просто добавить в массив параметра "SEF_URL_TEMPLATES", передаваемого компоненту, свои разделы: $APPLICATION->IncludeComponent( "bitrix:news", "", Array( ... "SEF_URL_TEMPLATES" => Array( "detail"=>"#ELEMENT_ID#/",//соответствует файлу "detail.php" в папке шаблона компонента "news"=>"",//соответствует файлу "news.php" "rss"=>"rss/",//соответствует файлу "rss.php" "my_section"=>"my/" //соответствует файлу "my_section.php", //"my/" - ЧПУ адрес раздела ... ), … ) );

    После этого стоит создать файл "my_section.php" в папке шаблона компонента, на который мы будем попадать по примерно такому адресу "http://site.ru/my/".

    Следует создать (изменить) в папке шаблона файл ".parameters.php" добавив: $arTemplateParameters['SEF_MODE']["my_section"] = array( "NAME" => "Мой раздел", "DEFAULT" => "my/", "VARIABLES" => array(), );

    Также стоит не забыть добавить уже существующий разделы, т.к. массив $arTemplateParameters['SEF_MODE'] переопределяет существующие значения.

    $arTemplateParameters['SEF_MODE']["news"] = array( "NAME" => "News", "DEFAULT" => "news/", "VARIABLES" => array(), ); $arTemplateParameters['SEF_MODE']["section"] = array( "NAME" => "Разделы", "DEFAULT" => "", "VARIABLES" => array("SECTION_ID"), ); и т.д.

  2. Через добавление правила ЧПУ

    Добавив следующее:

    $APPLICATION->IncludeComponent( "bitrix:news", "", Array( ... "SEF_URL_TEMPLATES" => Array( ... "news"=>"news1/|news2/", //соответствует файлу "news.php" ... ), … ) );

    Мы будем направляться на файл "news.php" со следующих адресов "http://site.ru/news1/" и "http://site.ru/news2/". А далее уже разбирая адрес динамически менять содержимое страницы.

Прикрепить файл

до 50мб