Налаштування RSS-стрічки 1С-Бітрікс: від компонента до валідного XML

RSS – формат, до якого підходимо з інженерною скрупульозністю. За статистикою, 70% саморобних RSS-стрічок у Бітрікс не проходять валідатор W3C через банальні помилки: неправильний MIME-тип, відсутність CDATA-обгортки, дати в нестандартному форматі. Наша команда за 7 років налаштувала понад 50 стрічо
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування RSS-стрічки 1С-Бітрікс: від компонента до валідного XML
Простий
~1 день

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1461
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

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 — зв'яжіться з нами, оцінимо ваш проєкт і запропонуємо дорожню карту. Наша команда готова налаштувати стрічку під ваш проєкт — звертайтеся за консультацією.