Інтеграція 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>uk</language>
<item>
<title>Як вибрати товар X</title>
<link>https://example.ru/blog/yak-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>uk</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 дні |







