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>
без атрибутов. Он описывает магазин, для которого вы готовите файл.
В него вложены:
Элемент |
Тип данных |
Смысл |
|
Текст: |
Название вашего магазина |
|
Текст: |
Название вашей компании |
|
Текст:
|
Адрес сайта магазина, записанный согласно стандарту RFC 3986 |
|
Текст: |
Название системы управления контентом |
Содержит вложенные элементы |
Список категорий товаров, продаваемых в магазине |
|
Содержит вложенные элементы |
Список предложений — товаров, продающихся в магазине, с ценами |
<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-файл. Если удобно, можно его задать явно:
|
Нужно обязательно задать значение в файле:
|