Перейти к основному содержимому

Требования к каталогу товаров

Каталог товаров загружается в формате YML.

::: tip Вы можете использовать готовые модули CMS для генерации YML каталога. Смотрите список поддерживаемых CMS на сайте Яндекса. :::

Для описания товарных предложений (офферов) необходимо использовать произвольный тип описания предложений.

Обязательные элементы и атрибуты:

ПеременнаяТипОбязательноОписание
idStringДаИдентификатор предложения
urlStringДаURL страницы товара на сайте магазина
typeStringДаТип предложения. Всегда vendor.model
priceStringНетЦена
categoryIdStringДаИдентификатор категории
pictureStringДаСсылка на изображение товара
nameStringДа1Название товара
typePrefixStringДа1Тип/категория товара
vendorStringДа1Бренд/производитель/вендор
modelStringДа1Модель товара
1 — имя товара при импорте формируется из полей `typePrefix`, `vendor` и `model`. Если эти поля отсутствуют, то используется поле `name`.

Подробнее читайте в документации Яндекс.Маркета

Пример YML файла:

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2020-11-01 17:22">
<shop>
<name>ACME Shop</name>
<company>Tne ACME inc.</company>
<url>http://best.seller.ru</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1">Телефоны</category>
<category id="10" parentId="1">Смартфоны</category>
</categories>
<offers>
<offer id="100" type="vendor.model">
<url>https://www.abc.ru/158.html</url>
<price>55690</price>
<categoryId>10</categoryId>
<picture>https://www.abc.ru/1580.jpg</picture>
<picture>https://www.abc.ru/1581.jpg</picture>
<picture>https://www.abc.ru/1582.jpg</picture>
<picture>https://www.abc.ru/1583.jpg</picture>
<name>Смартфон Apple iPhone 7 128gb Space Gray</name>
<vendor>Apple</vendor>
<model>iPhone 7 128gb Space Gray</model>
<description>iPhone 7 — непременный спутник любого успешного человека и оттого
обязателен к покупке. Успей оформить кредит!</description>
</offer>
</offers>
</shop>
</yml_catalog>

Вы можете скачать пример каталога.

Объединение товаров в группы

Если у вас имеется один и тот же товар в разных вариантах (например, iPhone 11 black/white) и вы хотите делить отзывы между ними, то такие товары необходимо объединить в одну группу. Для этого в фид нужно выгружать варианты товара и задать им общий атрибут group_id. Пример:

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2020-11-01 17:22">
<shop>
<name>ACME Shop</name>
<company>Tne ACME inc.</company>
<url>http://best.seller.ru</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1">Телефоны</category>
<category id="10" parentId="1">Смартфоны</category>
</categories>
<offers>
<offer id="100" group_id="1000" type="vendor.model">
<url>https://www.abc.ru/100.html</url>
<price>55690</price>
<categoryId>10</categoryId>
<picture>https://www.abc.ru/1580.jpg</picture>
<picture>https://www.abc.ru/1581.jpg</picture>
<picture>https://www.abc.ru/1582.jpg</picture>
<picture>https://www.abc.ru/1583.jpg</picture>
<name>Смартфон Apple iPhone 7 128gb Space Gray</name>
<vendor>Apple</vendor>
<model>iPhone 7 128gb Space Gray</model>
<description>iPhone 7 — непременный спутник любого успешного человека и оттого
обязателен к покупке. Успей оформить кредит!</description>
</offer>
<offer id="101" group_id="1000" type="vendor.model">
<url>https://www.abc.ru/101.html</url>
<price>55690</price>
<categoryId>10</categoryId>
<picture>https://www.abc.ru/1580.jpg</picture>
<picture>https://www.abc.ru/1581.jpg</picture>
<picture>https://www.abc.ru/1582.jpg</picture>
<picture>https://www.abc.ru/1583.jpg</picture>
<name>Смартфон Apple iPhone 7 64gb Space Gray</name>
<vendor>Apple</vendor>
<model>iPhone 7 64gb Space Gray</model>
<description>iPhone 7 — непременный спутник любого успешного человека и оттого
обязателен к покупке. Успей оформить кредит!</description>
</offer>
</offers>
</shop>
</yml_catalog>

Поступайте аналогично, если вы работает в фэшн сегменте и продаете товары разного размера/цвета. Пример:

<offers>
<offer id="100" group_id="1000" type="vendor.model">
<url>https://www.abc.ru/100.html</url>
<name>Футболка белая DENIS S размер</name>

</offer>
<offer id="101" group_id="1000" type="vendor.model">
<url>https://www.abc.ru/101.html</url>
<name>Футболка белая DENIS M размер</name>

</offer>
</offers>

Таким образом импортируются 2 товара, но при публикации виджетов отзывы на эти товары будут автоматически объединены.

::: warning Мы поддерживаем 3 написания данного атрибута: group_id, group-id, groupId. Но при использовании 2-х последних вы можете получить предупреждения в валидаторе YML файла, поэтому можете игнорировать их. :::

Карточка Яндекс Маркета

Если у вас подключена услуга синдикации отзывов с Яндекс.Маркет и вы знаете идентификатор модели на Яндекс.Маркете, то можете добавить атрибут model_id. Пример:

<offer id="101" model_id="14206636">
<name>Apple iPhone 7 32Gb</name>
</offer>

::: warning Данный атрибут не является валидным с точки зрения валидатора Яндекс.Маркета, поэтому можете игнорировать предупреждения валиадатора. :::

Пользовательские атрибуты

Иногда при импорте к товару необходимо добавить нестандартные атрибуты, это можно сделать через элемент <custom_attributes>...</custom_attributes>.

Содержимым будет JSON документ, обернутый в секцию CDATA. Документ может содержать только один уровень вложенности аттрибутов.

Пример:

<offer id="1">
<custom_attributes>
<![CDATA[
{
"available_msk": true,
"available_spb": true
}
]]>
</custom_attributes>
</offer>
<offer id="2">
<custom_attributes>
<![CDATA[
{
"available_msk": true,
"available_spb": false
}
]]>
</custom_attributes>
</offer>

Проверка валидности

Для проверки валидности файла можно воспользоваться утилитой xmllint из пакета libxml2-utils. Также необходимо скачать XML Schema с нашего сайта.

Пример для Ubuntu:

# Install xmllint & curl
apt-get install libxml2-utils curl

# Download XML Schema
curl -O https://aplaut.com/static/catalog.xsd

# Validate catalog.xml
xmllint --schema catalog.xsd catalog.xml --noout
# Install xmllint & curl
brew install libxml2 curl

# Download XML Schema
curl -O https://aplaut.com/static/catalog.xsd

# Validate catalog.xml
xmllint --schema catalog.xsd catalog.xml --noout

После выполнения всех команд, следуйте дальнейшим указаниям утилиты xmllint.