YML

Эта статья — о структуре YML-файлов. Чтобы узнать, как задать конкретный параметр товара, найдите его в справочнике.

YML (Yandex Market Language) — собственный стандарт Яндекса, основанный на XML. В YML-файлах можно целиком описать каталог магазина в формате, удобном для автоматической генерации.

В этом руководстве описаны все необходимые элементы YML-файлов.

Tip

Если вы пользуетесь популярной CMS, возможно, для нее есть готовый модуль, который умеет генерировать YML-файлы. Список готовых модулей

Файлы для обновления каталога и файлы для управления размещением

С помощью YML-файлов можно решать две задачи:

  • добавлять товары в каталог и обновлять информацию о них;
  • управлять размещением товаров в магазинах.

YML-файлы, решающие разные задачи, отличаются набором обязательных элементов.

Заголовок

Нужен в любом YML-файле.

Пишется так:


                <?xml version="1.0" encoding="UTF-8"?>

Заголовок занимает первую строку и начинается с нулевого символа. Подойдут кодировки UTF-8 и Windows-1251.

Корневой элемент <yml_catalog>

Нужен в любом YML-файле.

В любом XML-документе есть корневой элемент. Формат YML в качестве корневого использует элемент <yml_catalog> с атрибутом date.

В атрибуте укажите дату и время момента, на который актуальны данные в файле. Загружаемая версия каталога должна быть не старше 10 дней.

Дату и время нужно указать согласно стандарту RFC 3339, вот так:


                <yml_catalog date="2022-05-22T14:37+03:00">

Обязательно указывайте часовой пояс. Он отсчитывается от UTC — например, красноярское время записывается так:


                <yml_catalog date="2022-05-22T15:08+07:00">

Дату и время в будущем указывать нельзя.

Если файл долго генерируется, указывайте в атрибуте момент начала генерации. Почему?

Warning

Если вы передаете с помощью YML остатки или цены, атрибут date нужно указывать обязательно.

Элемент <shop>

Нужен в любом YML-файле.

В элемент <yml_catalog> в единственном экземпляре входит элемент <shop> без атрибутов. Он описывает магазин, для которого вы готовите файл.

В него вложены:

Элемент

Тип данных

Смысл

<name>

Текст:
<name>BestSeller</name>

Название вашего магазина

<company>

Текст:
<company>Tne Best inc.</company>

Название вашей компании

<url>

Текст:

<url>http://best.seller.ru</url>

Адрес сайта магазина, записанный согласно стандарту RFC 3986

<platform>

Текст:
<platform>uCoz</platform>

Название системы управления контентом

<categories>

Содержит вложенные элементы <category>

Список категорий товаров, продаваемых в магазине

<offers>

Содержит вложенные элементы <offer>

Список предложений — товаров, продающихся в магазине, с ценами

Элемент <categories>

Tip

Если выбрать значение из списка Маркета, то товар сразу попадет в соответствующую категорию. При указании значения из списка категорий в вашем магазине определение категории товара на Маркете будет автоматическим.

Нужен только в YML-файле, управляющем товарами

Вложен в элемент <shop>, не имеет атрибутов. Помещается перед элементом <offers>. Содержит сколько угодно элементов <category>, каждый из которых описывает одну из категорий доступных в магазине товаров.

При создании категорий следуйте рекомендациям:

  • указывайте конкретные категории — например, набор ножей лучше отнести к категории Столовые приборы, а не просто Посуда;
  • выбирайте категории, которые описывают товар, а не абстрактный признак — например, лучше указать Духи, а не Подарки.

Каждой категории нужно присвоить уникальный идентификатор — целое положительное число длиной до 18 цифр — и записать его в атрибут id. Запись числа не должна начинаться с нуля — например, 055 не подойдет.

Чтобы вложить одну категорию в другую, используйте атрибут parentId.

Получится так:


<categories>
    <category id="1">Книги</category>
    <category id="2" parentId="1">Детективы</category>
    <category id="3" parentId="1">Боевики</category>
    <category id="4">Видео</category>
    <category id="5" parentId="4">Комедии</category>
    <category id="6">Принтеры</category>
    <category id="7">Оргтехника</category>
</categories>

Элемент <offers>

Нужен в любом YML-файле. Содержимое вложенных элементов <offer> зависит от задачи, которую решает YML-файл.

Помещается после элемента <categories>. Не имеет атрибутов. Содержит сколько угодно элементов <offer>, каждый из которых описывает один товар в магазине. У <offer> есть обязательный атрибут id, который содержит ваш SKU товара. Что такое SKU

Warning

Элемент <shop-sku> устарел, его лучше не использовать. Если он есть, значение вашего SKU берется из него, а не из атрибута id элемента <offer>.

Внутри <offer> нужно указать характеристики товара (название, описание, производителя и так далее) или параметры размещения (цену, скидки, остатки и так далее).

Посмотрите справочник.

Он подскажет, какие параметры обязательны и как их задать в YML-файле.

Если YML-файл предназначен для добавления товаров, смотрите таблицу с характеристиками. Если для управления размещением — таблицу с параметрами размещения.

Примеры готовых файлов

Для управления товарами

Скачать

Для управления размещением

Скачать

Если указывать время завершения генерации, можно потерять изменения, внесенные вручную. Допустим, магазин начал генерировать файл в 12:00. В 12:05 вы через кабинет изменили цену товара. В 12:10 магазин сформировал файл, и его скачал Маркет. Если в файле будет стоять время 12:10, Маркет заменит внесенную вами цену на неактуальную из файла. Если же в нем будет стоять 12:00, ваше изменение будет считаться более поздним и никуда не денется.

Значение по умолчанию — это значение, которое используется, если элемента в файле нет. Например, если для элемента element значение по умолчанию true:

Чтобы задать true

Чтобы задать false

Можно не включать элемент в YML-файл. Если удобно, можно его задать явно:

<element>true</element>

Нужно обязательно задать значение в файле:

<element>false</element>