Требования к каталогу товаров
Каталог товаров загружается в формате YML.
::: tip Вы можете использовать готовые модули CMS для генерации YML каталога. Смотрите список поддерживаемых CMS на сайте Яндекса. :::
Для описания товарных предложений (офферов) необходимо использовать произвольный тип описания предложений.
Обязательные элементы и атрибуты:
Переменная | Тип | Обязательно | Описание |
---|---|---|---|
id | String | Да | Идентификатор предложения |
url | String | Да | URL страницы товара на сайте магазина |
type | String | Да | Тип предложения. Всегда vendor.model |
price | String | Нет | Цена |
categoryId | String | Да | Идентификатор категории |
picture | String | Да | Ссылка на изображение товара |
name | String | Да1 | Название товара |
typePrefix | String | Да1 | Тип/категория товара |
vendor | String | Да1 | Бренд/производитель/вендор |
model | String | Да1 | Модель товара |
Подробнее читайте в документации Яндекс.Маркета
Пример 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.