Как разместить компонент bitrix:news в корне сайта на 1С-Битрикс: настройка ЧПУ и маршрутизации

6 мин чтения

Комплексный компонент bitrix:news в 1С-Битрикс позволяет организовать раздел новостей, блог, базу статей или другой информационный раздел на базе инфоблоков. Обычно его размещают в отдельном каталоге, например /news/index.php. Однако в некоторых проектах требуется вывести список материалов непосредственно на главной странице, а детальные страницы открывать по адресам относительно корня сайта.

Рассмотрим, как разместить компонент bitrix:news в корне сайта, настроить человекопонятные URL (ЧПУ) и избежать конфликтов с другими разделами.

Особенности размещения bitrix:news в корне сайта

При стандартном размещении компонента в каталоге /news/ параметр SEF_FOLDER имеет значение /news/. Если же компонент размещается в корневом файле /index.php, для настройки адресов относительно корня используется значение /.

При этом необходимо учитывать, что в корне сайта могут располагаться другие компоненты, разделы и отдельные страницы. Слишком общие правила обработки адресов могут перехватывать запросы, не относящиеся к новостям.

В нашем примере используем следующую структуру:

  • / — главная страница со списком новостей;
  • /sections/company/ — страница раздела новостей;
  • /news-example.html — детальная страница новости.

Такой подход позволяет разместить комплексный компонент на главной странице, сохранив отдельные маршруты для разделов и материалов.

1. Подключение компонента bitrix:news в index.php

Откройте файл /index.php, расположенный в корне сайта, и добавьте вызов комплексного компонента. Если файл уже содержит другие элементы главной страницы, предварительно сохраните его резервную копию.

Пример содержимого /index.php:

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

$APPLICATION->SetTitle("Новости");

$APPLICATION->IncludeComponent(
    "bitrix:news",
    ".default",
    array(
        "IBLOCK_TYPE" => "news",
        "IBLOCK_ID" => "1",

        "NEWS_COUNT" => "20",
        "CHECK_DATES" => "Y",

        "USE_SEARCH" => "N",
        "USE_RSS" => "N",
        "USE_FILTER" => "N",

        "SEF_MODE" => "Y",
        "SEF_FOLDER" => "/",

        "SEF_URL_TEMPLATES" => array(
            "news" => "",
            "section" => "sections/#SECTION_CODE_PATH#/",
            "detail" => "news-#ELEMENT_CODE#.html"
        ),

        "AJAX_MODE" => "N",

        "SET_TITLE" => "Y",
        "ADD_SECTIONS_CHAIN" => "Y",
        "ADD_ELEMENT_CHAIN" => "Y",
        "INCLUDE_IBLOCK_INTO_CHAIN" => "N",

        "DISPLAY_NAME" => "Y",
        "LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
        "DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",

        "DISPLAY_TOP_PAGER" => "N",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "PAGER_TITLE" => "Новости",

        "STRICT_SECTION_CHECK" => "N",

        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "36000000",
        "CACHE_FILTER" => "N",
        "CACHE_GROUPS" => "Y",

        "SET_STATUS_404" => "Y",
        "SHOW_404" => "Y"
    ),
    false
);

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
?>

Важно: параметры IBLOCK_TYPE и IBLOCK_ID необходимо заменить на значения используемого инфоблока. Также у элементов должны быть заполнены символьные коды, поскольку они используются для формирования детальных URL.

2. Настройка ЧПУ для новостей в корне сайта

Основные параметры, отвечающие за маршрутизацию комплексного компонента:

  • SEF_MODE — включает режим человекопонятных адресов;
  • SEF_FOLDER — задаёт базовый путь для формирования URL;
  • SEF_URL_TEMPLATES — определяет адреса списка, разделов и детальных страниц.

Для размещения компонента в корне используются следующие настройки:

"SEF_MODE" => "Y",
"SEF_FOLDER" => "/",

"SEF_URL_TEMPLATES" => array(
    "news" => "",
    "section" => "sections/#SECTION_CODE_PATH#/",
    "detail" => "news-#ELEMENT_CODE#.html"
),

Здесь #SECTION_CODE_PATH# заменяется путём раздела, а #ELEMENT_CODE# — символьным кодом элемента.

Префикс news- в адресах детальных страниц используется намеренно. Он позволяет отличать новости от других файлов и страниц, расположенных в корне сайта.

3. Настройка файла urlrewrite.php

После включения ЧПУ необходимо проверить правила обработки адресов в файле /urlrewrite.php.

При работе комплексного компонента из корня сайта особенно важно не использовать универсальное условие #^/# без необходимости. Такое правило потенциально подходит практически под любой адрес и может конфликтовать с маршрутизацией других компонентов.

Для нашего примера достаточно добавить в массив $arUrlRewrite два отдельных правила:

array(
    "CONDITION" => "#^/sections/#",
    "RULE" => "",
    "ID" => "bitrix:news",
    "PATH" => "/index.php",
    "SORT" => 100,
),

array(
    "CONDITION" => "#^/news-[a-z0-9_-]+\.html$#",
    "RULE" => "",
    "ID" => "bitrix:news",
    "PATH" => "/index.php",
    "SORT" => 100,
),

Обратите внимание: приведённые записи необходимо добавить внутрь существующего массива правил, а не заменять ими содержимое файла целиком.

Первое правило обрабатывает запросы к разделам новостей, второе — к детальным страницам с префиксом news-. В обоих случаях запрос передаётся в корневой /index.php, где компонент определяет нужную страницу по URL.

Если компонент автоматически зарегистрировал более широкое правило для корня сайта, его также необходимо проверить и при необходимости заменить адресными условиями. При этом остальные правила обработки URL должны сохраниться.

4. Настройка ссылок в инфоблоке

Для корректной работы новостей рекомендуется проверить настройки адресов в самом инфоблоке.

В административной панели перейдите в настройки используемого инфоблока и проверьте шаблоны URL разделов и элементов.

Для рассматриваемой структуры можно использовать:

URL страницы раздела:

#SITE_DIR#sections/#SECTION_CODE_PATH#/

URL страницы детального просмотра:

#SITE_DIR#news-#ELEMENT_CODE#.html

Эти адреса должны соответствовать структуре маршрутов, настроенной в компоненте.

Если применяется собственный шаблон news.list, дополнительно проверьте формирование ссылок. Обычно для перехода на детальную страницу следует использовать готовое значение $arItem["DETAIL_PAGE_URL"], не добавляя к нему вручную дополнительные каталоги или префиксы.

5. Проверка работы компонента

После настройки проверьте следующие сценарии:

  1. При открытии главной страницы / отображается список новостей из нужного инфоблока.
  2. Переход по адресу /sections/company/ открывает соответствующий раздел.
  3. Адрес вида /news-example.html открывает детальную страницу элемента.
  4. Другие разделы сайта, например /catalog/ или /contacts/, продолжают работать.
  5. При обращении к несуществующей новости возвращается корректный HTTP-статус 404.

Если детальная страница не открывается, проверьте символьный код элемента, настройки ЧПУ, содержимое urlrewrite.php и работу серверной обработки человекопонятных адресов.

Если вместо новости отображается главная страница либо другой компонент, следует проверить пересечения условий и порядок обработки правил маршрутизации.

6. Распространённые ошибки

Все адреса сайта обрабатываются компонентом news

Чаще всего причина заключается в слишком широком регулярном выражении в urlrewrite.php. Для комплексного компонента, размещённого в корне, рекомендуется использовать отдельные префиксы URL и максимально конкретные условия маршрутизации.

Детальная страница возвращает ошибку 404

Проверьте совпадение шаблона detail с фактическим URL, наличие символьного кода у элемента и правило маршрутизации. Также убедитесь, что элемент активен и доступен на текущем сайте.

Ссылки ведут в каталог /news/, хотя компонент находится в корне

Причиной могут быть старые настройки SEF_FOLDER, адреса в инфоблоке либо собственный шаблон компонента, в котором путь к новости прописан вручную.

После изменения ЧПУ продолжают открываться старые страницы

Проверьте актуальность правил маршрутизации, очистите кеш компонентов и убедитесь, что на сайте не используются дополнительные редиректы, формирующие прежние адреса.

Заключение

Разместить комплексный компонент bitrix:news непосредственно в корне сайта 1С-Битрикс можно без изменения его стандартной логики. Достаточно подключить компонент в /index.php, настроить SEF_FOLDER и шаблоны адресов, а также добавить необходимые правила в urlrewrite.php.

Основная сложность заключается не в подключении компонента, а в корректном распределении URL между новостями и остальными страницами сайта. Использование понятных префиксов и отдельных правил маршрутизации позволяет избежать конфликтов и сохранить удобную структуру адресов.

Вернуться к блогу