Appearance
Основная структура YML файла и его отличия от стандарта Яндекс.Маркет
Основные элементы
| Элемент | Обязательность | Описание |
|---|---|---|
xml | обязательно | Стандартный XML-заголовок. Должен начинаться с первой строки и нулевого символа в строке. |
yml_catalog | обязательно | Корневой элемент XML-документа товарной выгрузки. |
shop | обязательно | Основной элемент товарной выгрузки, содержащий описание магазина и товаров. |
Элемент xml
Доступные атрибуты:
| Атрибут | Обязательность | Описание |
|---|---|---|
version | обязательно | Версия языка XML-документа. Необходимо использовать версию "1.0". |
encoding | обязательно | Кодировка, используемая в XML-документе (UTF-8). |
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>Элемент yml_catalog
Доступные атрибуты:
| Атрибут | Обязательность | Описание |
|---|---|---|
date | обязательно | Дата создания (генерации) XML-документа в формате YYYY-MM-DD hh:mm. |
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2019-05-16 17:19">
...
</yml_catalog>Важно
Если вы генерируете файл на лету, не указывайте в этом поле текущую дату. Указывайте дату последнего обновления самого последнего обновленного товара. Это позволит не парсить файл каждый раз, даже если в нем ничего не изменилось. Пример SQL-запроса на получение такой даты:
sql
SELECT MAX(updated_at) FROM products;Элемент yml_catalog > shop
Дочерние элементы shop:
| Элемент | Обязательность | Описание |
|---|---|---|
name | обязательно | Краткое название магазина. |
company | обязательно | Наименование компании, владеющей магазином. |
url | обязательно | Ссылка на главную страницу магазина. |
currencies | обязательно | Список курсов валют магазина. |
categories | обязательно | Список категорий магазина. |
locations | не обязательно | Список локаций, в которых представлен магазин. |
offers | обязательно | Список товаров магазина. |
Базовые элементы yml_catalog > shop > *
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2019-05-16 17:19">
<shop>
<name>Мой магазин</name>
<company>Компания моего магазина</company>
<url>https://my-store.com</url>
...
</shop>
</yml_catalog>Элемент yml_catalog > shop > currencies
INFO
Редко, когда в каталоге содержатся цены товаров в разных валютах. Поэтому проще всего указывать вашу основную валюту и не передавать другие.
Элемент currencies задает список курсов валют магазина. Каждая из валют описывается отдельным элементом currency.
Доступные атрибуты элемента currency:
| Атрибут | Обязательность | Описание |
|---|---|---|
id | обязательно | Код валюты. |
rate | обязательно | Курс валюты по отношению к основной валюте. Значение данного атрибута для основной валюты должно быть равно 1 (rate="1"). В качестве десятичного разделителя может использоваться только символ точки. |
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2019-05-16 17:19">
<shop>
<name>Мой магазин</name>
<company>Компания моего магазина</company>
<url>https://my-store.com</url>
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="64.45"/>
<currency id="EUR" rate="72.03"/>
...
</currencies>
...
</shop>
</yml_catalog>Элемент yml_catalog > shop > categories
Элемент categories содержит список категорий магазина. Каждая категория описывается отдельным элементом category.
Доступные атрибуты элемента category:
| Атрибут | Обязательность | Описание |
|---|---|---|
id | обязательно | Идентификатор категории. |
parentId | не обязательно | Идентификатор родительской категории. |
url | не обязательно | Ссылка на страницу категории. |
alias | не обязательно | Словесный идентификатор категории. |
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2019-05-16 17:19">
<shop>
<name>Мой магазин</name>
<company>Компания моего магазина</company>
<url>https://my-store.com</url>
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="64.45"/>
<currency id="EUR" rate="72.03"/>
...
</currencies>
<categories>
<category id="2" url="http://my-store.com/categories/discount/">Распродажа</category>
<category id="8" url="http://my-store.com/categories/men/">Мужчинам</category>
<category id="13" parentId="8" url="http://my-store.com/categories/men/shoes/">Shoes</category>
<category id="97" parentId="13" alias="men/shoes/leather" url="http://my-store.com/categories/men/shoes/leather">Leather Shoes</category>
...
</categories>
...
</shop>
</yml_catalog>Элемент yml_catalog > shop > locations
Элемент locations содержит список локаций магазина. Каждая локация описывается отдельным элементом location.
Доступные атрибуты элемента location:
| Атрибут | Обязательность | Описание |
|---|---|---|
id | обязательно | Идентификатор локации. |
name | обязательно | Название локации. |
parentId | не обязательно | Идентификатор родительской локации. |
type | не обязательно | Тип локации. Доступные значения: state, city, store. |
group | не обязательно | Признак группировки нескольких локаций в определенную группу. Любое строковое значение. Пример: ХолодныеРегионы. |
search_level_up | не обязательно | Атрибут определяет возможность расширения поиска вверх по иерархии родительских локаций. Если значение равно 0, поиск не пойдёт выше. Если значение больше ноля, повторный поиск производится в родительских локациях, но будет ограничен существующей иерархией. |
Иерархия локаций
search_level_up работает только с иерархией локаций, заданной в товарном фиде при помощи атрибута parentId. Корректное выстраивание иерархии является ответственностью товарного фида. Если цепочка parentId задана некорректно или обрывается, расширение поиска не выполняется.
То есть, если товар отсутствует в конкретной торговой точке, поиск не будет автоматически выполняться по всему городу или региону без явно заданной иерархии.
Пример:
xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2019-05-16 17:19">
<shop>
<name>Мой магазин</name>
<company>Компания моего магазина</company>
<url>https://my-store.com</url>
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="64.45"/>
<currency id="EUR" rate="72.03"/>
...
</currencies>
<categories>
<category id="2" url="http://my-store.com/categories/discount/">Распродажа</category>
<category id="8" url="http://my-store.com/categories/men/">Мужчинам</category>
<category id="13" parentId="8" url="http://my-store.com/categories/men/shoes/">Shoes</category>
<category id="97" parentId="13" alias="men/shoes/leather" url="http://my-store.com/categories/men/shoes/leather">Leather Shoes</category>
...
</categories>
<locations>
<location id="1" type="city" name="Москва" group="ДенежныеГорода" />
<location id="2" type="city" name="Санкт-Петербург" group="ДенежныеГорода" />
<location id="145" parentId="1" type="store" name="Пункт выдачи на Арбате" search_level_up="1" />
...
</locations>
...
</shop>
</yml_catalog>Элемент yml_catalog > shop > offers
Элемент offers содержит список товаров магазина. Каждый товар описывается отдельным элементом offer. Описание структуры оффера в отдельной статье.