Налаштування фіду для Яндекс.Маркет (товарна реклама) 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування фіду для Яндекс.Маркет (товарна реклама) 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування фіда для Яндекс.Маркет (товарна реклама) 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 — амперсанд & у назві не екранований (&amp;)
  • Відсутній обов'язковий тег price — товари без ціни не вивантажуються, Яндекс відхиляє

Терміни налаштування

Налаштування стандартного YML-профілю Бітрікс з маппінгом властивостей і додаванням <param> через хуки — 4–8 годин. Кастомний генератор для складного каталогу з торговими пропозиціями та параметрами — 1–2 робочих дні.