Интеграция 1С-Битрикс с Яндекс.Дзен
Яндекс.Дзен (с 2023 года — просто «Дзен») принимает контент из внешних источников через RSS-фид. Для интернет-магазина или контентного сайта на Битрикс это означает автоматическую публикацию статей и материалов блога в ленту Дзена без ручного копирования. Технически задача — генерация правильного RSS и поддержание его актуальности.
Формат RSS для Дзена
Дзен поддерживает два вида фидов:
Обычный RSS — контент передаётся в <description> или <content:encoded>. Дзен читает текст, сам формирует страницу. Ограниченный контроль над оформлением.
RSS с нативным Турбо-форматом — расширенный формат с turbo:content, позволяет передавать полноценный HTML с изображениями и разметкой. Рекомендуется для статей с rich-контентом.
Минимальный RSS для Дзена:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:turbo="http://turbo.yandex.ru">
<channel>
<title>Блог магазина</title>
<link>https://example.ru/blog/</link>
<language>ru</language>
<item>
<title>Как выбрать товар X</title>
<link>https://example.ru/blog/kak-vybrat-x/</link>
<pubDate>Fri, 13 Mar 2026 12:00:00 +0300</pubDate>
<author>[email protected] (Редакция)</author>
<turbo:content><![CDATA[
<figure>
<img src="https://example.ru/upload/iblock/abc/cover.jpg" alt="Обложка">
<figcaption>Подпись к фото</figcaption>
</figure>
<p>Основной текст статьи...</p>
<h2>Подзаголовок</h2>
<p>Продолжение текста...</p>
]]></turbo:content>
</item>
</channel>
</rss>
Генерация фида из инфоблока Битрикс
Создаём страницу /dzen-feed.php или кастомный компонент. Пример генерации из инфоблока «Статьи»:
<?php
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
header('Content-Type: application/rss+xml; charset=utf-8');
$iblockId = BLOG_IBLOCK_ID;
$limit = 100; // Дзен рекомендует 50–200 последних публикаций
$cache = \Bitrix\Main\Data\Cache::createInstance();
$cacheKey = 'dzen_feed';
if ($cache->startDataCache(1800, $cacheKey, '/dzen')) {
$items = [];
$res = CIBlockElement::GetList(
['ACTIVE_FROM' => 'DESC'],
['IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y'],
false,
['nTopCount' => $limit],
['ID', 'NAME', 'DETAIL_PAGE_URL', 'DETAIL_TEXT',
'PREVIEW_TEXT', 'DETAIL_PICTURE', 'ACTIVE_FROM', 'TAGS']
);
while ($el = $res->GetNextElement()) {
$fields = $el->GetFields();
$props = $el->GetProperties();
$imgHtml = '';
if ($fields['DETAIL_PICTURE']) {
$file = CFile::GetFileArray($fields['DETAIL_PICTURE']);
if ($file) {
$imgHtml = '<figure><img src="https://' . SITE_SERVER_NAME
. $file['SRC'] . '" alt="'
. htmlspecialchars($fields['NAME']) . '"></figure>';
}
}
$content = $imgHtml . $fields['DETAIL_TEXT'];
$items[] = [
'title' => $fields['NAME'],
'link' => 'https://' . SITE_SERVER_NAME . $fields['DETAIL_PAGE_URL'],
'pubDate' => date('r', MakeTimeStamp($fields['ACTIVE_FROM'])),
'author' => 'editor@' . SITE_SERVER_NAME,
'content' => $content,
];
}
$cache->endDataCache(['items' => $items]);
} else {
$items = $cache->getVars()['items'];
}
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<rss version="2.0"'
. ' xmlns:content="http://purl.org/rss/1.0/modules/content/"'
. ' xmlns:turbo="http://turbo.yandex.ru">';
echo '<channel>';
echo '<title>' . htmlspecialchars(SITE_NAME) . '</title>';
echo '<link>https://' . SITE_SERVER_NAME . '/blog/</link>';
echo '<language>ru</language>';
foreach ($items as $item) {
echo '<item>';
echo '<title>' . htmlspecialchars($item['title']) . '</title>';
echo '<link>' . htmlspecialchars($item['link']) . '</link>';
echo '<pubDate>' . $item['pubDate'] . '</pubDate>';
echo '<author>' . htmlspecialchars($item['author']) . '</author>';
echo '<turbo:content><![CDATA[' . $item['content'] . ']]></turbo:content>';
echo '</item>';
}
echo '</channel></rss>';
Требования к контенту
Дзен предъявляет требования к публикациям:
- Объём: статьи менее 700 символов могут плохо распространяться в ленте
- Изображения: обязательны абсолютные URL, Дзен кеширует изображения на своих серверах
- Уникальность: дублирование контента между публикациями снижает охват
-
Дата: поле
<pubDate>с корректной датой обязательно для корректной сортировки
В DETAIL_TEXT Битрикс хранит HTML-текст, обработанный редактором. В фид он идёт как есть — внутри CDATA теги не экранируются. Если контент содержит ]]> (крайне редко), нужна замена: $content = str_replace(']]>', ']]]]><![CDATA[>', $content).
Подключение канала в Дзене
- Создайте канал на
zen.yandex.ru(илиdzen.ru) через аккаунт Яндекса - В настройках канала → «Источники» → «Добавить источник» → вставьте URL фида
- Дзен проверит фид и начнёт импорт. Первая публикация появляется в течение нескольких часов
- После проверки 10–50 публикаций канал получает возможность монетизации
Мониторинг и автообновление
Дзен обходит фид каждые 15–30 минут. Обновлять pubDate у уже опубликованных материалов не нужно — Дзен не перепубликует их. Новые элементы в начале фида подхватываются при следующем обходе.
Для уведомления Дзена о новом контенте можно отправлять ping-запрос после публикации нового материала через обработчик OnAfterIBlockElementAdd:
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', function(&$fields) {
if ($fields['IBLOCK_ID'] !== BLOG_IBLOCK_ID) return;
// Сбрасываем кеш фида
\Bitrix\Main\Data\Cache::createInstance()->cleanDir('/dzen');
});
Сроки реализации
| Вариант | Состав | Срок |
|---|---|---|
| Простой RSS (без turbo:content) | Страница фида + кеш | 0.5–1 день |
| Turbo-фид с изображениями и структурой | Парсинг DETAIL_TEXT + обработка изображений | 1–2 дня |
| Мультиинфоблочный фид (статьи + новости + товары) | Объединённый фид из нескольких источников | 2–3 дня |







