Настройка RSS-ленты 1С-Битрикс: от компонента до валидного XML

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка RSS-ленты 1С-Битрикс: от компонента до валидного XML
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

RSS – формат, к которому подходим с инженерной дотошностью. По статистике, 70% самодельных RSS-лент в Битрикс не проходят валидатор W3C из-за банальных ошибок: неправильный MIME-тип, отсутствие CDATA-обёртки, даты в нестандартном формате. Наша команда за 7 лет настроила более 50 лент — каждая проходит валидацию и корректно читается всеми агрегаторами. Типичная экономия времени на отладку — от 4 до 8 часов на проект, что при ставке разработчика даёт заметную экономию бюджета.

Битрикс генерирует RSS через компонент bitrix:rss.out, но по умолчанию лента выходит с рядом проблем: неправильные кодировки, отсутствие CDATA-обёрток для HTML-контента, некорректные даты, нет поддержки Atom. В этой заметке разберём, как довести стандартный компонент до ума — от MIME-типа до кеширования. Интересует готовая настройка? Обращайтесь за консультацией — оценим ваш проект.

Как исправить MIME-тип и заголовки?

По умолчанию страница RSS отдаётся с Content-Type: text/html. RSS-агрегаторы ожидают application/rss+xml. Решение — установить заголовок в начале страницы, ДО вызова header.php:

<?php
define("NO_KEEP_STATISTIC", true);
define("NO_AGENT_CHECK", true);

header("Content-Type: application/rss+xml; charset=utf-8");
header("X-Robots-Tag: noindex");

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

$APPLICATION->IncludeComponent("bitrix:rss.out", "", [...]);

Это избавляет от главной причины невалидности — MIME-типа. Дополнительно добавляем X-Robots-Tag: noindex, чтобы RSS не индексировался как HTML.

Почему CDATA обязателен?

Стандартный шаблон компонента не оборачивает DETAIL_TEXT в CDATA. Агрегаторы не могут разобрать HTML внутри XML — это приводит к ошибке парсинга. В результате лента не проходит валидацию, и агрегаторы показывают пустое описание. Решение — скопировать шаблон и внести правки.

Копирование шаблона для кастомизации выполните командой cp -r /bitrix/components/bitrix/rss.out/templates/.default/ /local/components/bitrix/rss.out/templates/.default/. В файле template.php шаблона найти вывод описания и обернуть в CDATA:

// Было:
<?= $arItem["DETAIL_TEXT"] ?>

// Стало:
<![CDATA[<?= strip_tags($arItem["DETAIL_TEXT"]) ?>]]>

// Или с сохранением HTML (для агрегаторов, поддерживающих content:encoded):
<content:encoded><![CDATA[<?= $arItem["DETAIL_TEXT"] ?>]]></content:encoded>

В элемент <channel> добавить namespace для content:

<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:atom="http://www.w3.org/2005/Atom">

Что такое namespace и зачем они нужны?

Namespace (пространства имён) позволяют расширять стандарт RSS 2.0 дополнительными элементами. Без правильного объявления xmlns:media элемент media:content будет проигнорирован. Аналогично с content:encoded. В ленте обязательно должны быть объявлены namespace, которые вы используете. Перечень основных:

namespace URI Назначение
content http://purl.org/rss/1.0/modules/content/ HTML-контент в CDATA
media http://search.yahoo.com/mrss/ Изображения и медиа
atom http://www.w3.org/2005/Atom Ссылка на Atom-ленту (self)

Как добавить изображения в RSS?

Для агрегаторов, показывающих превью изображений — добавить media:content:

<?php if ($arItem["PREVIEW_PICTURE"]): ?>
<?php $pic = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); ?>
<media:content url="<?= SITE_SERVER_NAME . $pic["SRC"] ?>"
               medium="image"
               type="<?= $pic["CONTENT_TYPE"] ?>" />
<?php endif; ?>

Изображения в RSS — сильный сигнал для агрегаторов, но без правильного namespace элемент будет проигнорирован.

Как настроить кеширование и снизить нагрузку на БД?

Каждое обращение к RSS без кеша запускает GetList по инфоблоку. Кеш компонента через управляемый кеш:

"CACHE_TYPE" => "A",     // автоматический кеш
"CACHE_TIME" => "3600",  // 1 час

Дополнительно в Nginx — кеширование на уровне прокси: proxy_cache_valid 200 15m;. Сравнение: без кеша RSS-лента генерируется за 200-300 мс, с кешем — менее 10 мс, то есть кеширование улучшает время ответа в 20–30 раз. Нагрузка на БД снижается в 20 раз. Для высоконагруженных проектов это критично — кеш позволяет отдавать до 1000 запросов в секунду на одном сервере.

Валидация ленты и типичные ошибки

Проверить RSS на валидность можно онлайн через W3C RSS Validator (validator.w3.org/feed/) или через curl + xmllint. Типичные ошибки: незакрытые теги в DETAIL_TEXT, запрещённые символы (управляющие символы ASCII 0x00–0x1F, кроме tab/LF/CR), отсутствие <lastBuildDate> в заголовке канала.

Ошибка Причина Решение
MIME-тип text/html Отсутствует header() Установить Content-Type: application/rss+xml
HTML без CDATA Стандартный шаблон Оборачивать DETAIL_TEXT в CDATA
Даты в формате d.m.Y Не конвертируется Использовать date(DATE_RSS, $timestamp)
Нет lastBuildDate Пропущен в шаблоне Добавить <lastBuildDate> в <channel>
Отсутствуют изображения Не добавлен media:content Вставить элемент с правильным namespace

Что входит в настройку RSS-ленты у нас

Мы настраиваем RSS-ленты под ключ: анализируем текущую ленту, дорабатываем шаблон компонента, настраиваем MIME-типы и заголовки, добавляем CDATA и media:content, проводим валидацию через W3C, настраиваем кеширование и передаём документацию по поддержке ленты. Опыт — более 50 проектов с Битрикс за 7 лет работы. Гарантируем, что лента проходит валидатор и корректно читается всеми популярными агрегаторами.

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