Skip to content

Основная структура 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. Описание структуры оффера в отдельной статье.