Налаштування фіда для Яндекс.Маркет (товарна реклама) 1С-Бітрікс
Яндекс.Маркет приймає фід у форматі YML (Yandex Market Language) — XML зі своєю схемою. У Бітрікс є вбудований модуль YML-експорту, але для товарної реклами (Performance) вимоги до повноти даних вищі, ніж для простого лістингу. Неповний фід означає, що частина товарів не потрапляє до реклами, а кампанії типу Google Shopping працюють гірше через відсутність атрибутів.
Формат YML для Яндекс.Маркет
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2024-01-15 10:00">
<shop>
<name>Назва магазину</name>
<company>ТОВ «Компанія»</company>
<url>https://your-site.ua</url>
<currencies>
<currency id="UAH" rate="1"/>
</currencies>
<categories>
<category id="1">Електроніка</category>
<category id="2" parentId="1">Смартфони</category>
</categories>
<offers>
<offer id="123" available="true">
<url>https://your-site.ua/catalog/product-123/</url>
<price>14990</price>
<oldprice>17990</oldprice>
<currencyId>UAH</currencyId>
<categoryId>2</categoryId>
<picture>https://your-site.ua/upload/img/product-123.jpg</picture>
<name>Смартфон BrandName Model X 128GB</name>
<vendor>BrandName</vendor>
<vendorCode>MODEL-X-128</vendorCode>
<barcode>4607086560001</barcode>
<description>Опис товару</description>
<sales_notes>Доставка від 100 грн, самовивіз безкоштовно</sales_notes>
<param name="Пам'ять">128 ГБ</param>
<param name="Колір">Чорний</param>
<param name="Гарантія">12 місяців</param>
</offer>
</offers>
</shop>
</yml_catalog>
Вбудований YML-експорт Бітрікс
В адміністративній панелі: Каталог → Експорт → Додати профіль → Яндекс.Маркет (YML).
Налаштування профілю:
- Вибір інфоблоку каталогу
- Маппінг властивостей:
BRAND → vendor,ARTICLE → vendorCode,BARCODE → barcode - Фільтр: тільки активні товари з ненульовим залишком
- Шлях файлу:
/upload/yandex_market.yml
Стандартний експорт не вміє коректно вивантажувати <param> з властивостей інфоблоку без доопрацювання. Параметри товару (Пам'ять, Колір, Розмір) критичні для товарної реклами — за ними Яндекс матчить запити.
Доопрацювання експорту: додавання <param> з властивостей
// /local/php_interface/init.php — хук на генерацію рядка офера
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'catalog',
'OnGetYmlOfferXml',
function (\Bitrix\Main\Event $event) {
$offer = $event->getParameter('OFFER');
$xml = $event->getParameter('XML');
// Додаємо параметри з властивостей інфоблоку
$paramProps = ['COLOR' => 'Колір', 'MEMORY' => 'Пам\'ять', 'SCREEN_SIZE' => 'Діагональ екрана'];
foreach ($paramProps as $propCode => $paramName) {
if (!empty($offer['PROPERTIES'][$propCode]['VALUE'])) {
$xml .= sprintf(
'<param name="%s">%s</param>',
htmlspecialchars($paramName),
htmlspecialchars($offer['PROPERTIES'][$propCode]['VALUE'])
);
}
}
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
['XML' => $xml]
);
}
);
Кастомний генератор YML-фіда
Якщо стандартний експорт не задовольняє — повністю кастомний генератор:
// /local/cron/yandex_market_feed.php
$categories = getIblockSections($IBLOCK_ID);
$tmpFile = tempnam(sys_get_temp_dir(), 'yml_');
$xml = new XMLWriter();
$xml->openUri($tmpFile);
$xml->startDocument('1.0', 'UTF-8');
// ... генерація структури yml_catalog
Генерацію великих каталогів (>50K товарів) виконуємо через XMLWriter з потоковим записом — не накопичуємо DOM у пам'яті.
Часті помилки при завантаженні фіда
-
Невірний формат дати в yml_catalog— дата має бути у форматіYYYY-MM-DD HH:MM -
Дублюючий id офера— якщо торгові пропозиції та основні товари вивантажуються з однаковими ID -
Недопустимий символ у XML— амперсанд&у назві не екранований (&) -
Відсутній обов'язковий тег price— товари без ціни не вивантажуються, Яндекс відхиляє
Терміни налаштування
Налаштування стандартного YML-профілю Бітрікс з маппінгом властивостей і додаванням <param> через хуки — 4–8 годин. Кастомний генератор для складного каталогу з торговими пропозиціями та параметрами — 1–2 робочих дні.







