Skip to content
ms3YandexMarket
ms3YandexMarket
Файл YML для Яндекс Маркета или RSS для Google из товаров MiniShop3
  • MODX 3
  • PHP 8.2
  • miniShop3
  • Vue 3
  1. Extras
  2. ms3YandexMarket
  3. Начало работы
  4. Состав файла

Состав файла ​

Один прайс пишет один файл. Площадку и назначение задайте в карточке. Маркет и Merchant Center забирают файл по URL файла. Компонент в кабинеты сам не ходит.

Корень YML: объявление XML, UTF-8, элемент yml_catalog с датой старта генерации. Корень RSS: канал rss и элементы item.

Яндекс Маркет, каталог ​

Назначение catalog или items создаёт один и тот же набор тегов. Файл пишется из дерева полей, не из JSON-карты полей.

Блок <categories> наполняется только у catalog. У items вкладка Категории есть, но выбранные разделы в YML не пишутся. Пустой список тег categories пропускает.

Теги магазина при создании:

ТегТипИсточник при создании
name, company, urlтекстпусто, тег не попадёт в файл, пока не зададите value: или setting:
categoriesконтейнервыбранные разделы
offersконтейнерпо товару или варианту

Теги каждого offer:

ТегИсточник при создании
namefield:pagetitle
urlpipeline:url
pricedata:price
categoryIdfield:parent
picturepipeline:image
vendorpipeline:vendor
vendorCodedata:article
descriptionfield:introtext, тип «текст без разметки»
barcode, paramпусто
country_of_origindata:made_in

Атрибут id у offer берётся из стратегии идентификатора. Отдельного тега shop-sku нет. Блоков currencies, currencyId, promos и атрибута type профиль не создаёт.

Пустой текст тега в файл не пишется. Предложение без id пропускается.

Яндекс Маркет, размещение ​

У назначения placement вкладки Категории нет, контейнера categories в наборе нет.

На Магазине предупреждение: файл размещения заменяет условия в кабинете Маркета. Список Управляемые поля пишется в managed_fields: price, oldprice, stock, available, delivery, pickup, store, url, categoryId. Пустой список сохранить нельзя. Форма подставляет все девять ключей и пишет, что нужно хотя бы одно поле. Запрос с пустым списком отвечает 422, код invalid_managed_fields. Непустой список оставляет в offer только имена из списка. Имя available из списка пишется атрибутом. Атрибут id пишется всегда.

Теги offer при создании:

ТегИсточник при создании
urlpipeline:url
pricedata:price
oldpricedata:old_price
categoryIdfield:parent
store, delivery, pickupпусто

У store, delivery и pickup источника нет, поэтому их нет в файле, пока не заполните Откуда брать текст.

При skip предложение без остатка или с остатком не выше min_stock в файл не попадает. Подробнее: параметры прайса.

Google RSS 2.0 ​

У площадки google.rss20 назначение не различается: в файл всегда пишется лента товаров.

Дерево тегов при создании выглядит как канал: title, link, description, контейнер items и поля g:id, g:title, g:link, g:price, g:availability, g:image_link, g:description. Запись файла это дерево не читает. Компонент собирает RSS из карточки предложения.

Шапка канала копирует сохранённый текст активных тегов title, link и description. Префиксы value: и setting: здесь не разбираются. Строка value:Магазин попадёт в канал как value:Магазин. Пустой или выключенный тег шапку не заполняет. В канал пишется lastBuildDate со значением date(DATE_RSS) (RFC 822). Так в файле и в предпросмотре.

Каждый item:

ТегОткуда
g:idстратегия идентификатора
g:titlefield:pagetitle из карты полей по умолчанию
g:linkpipeline:url
g:priceцена и код валюты, вид 199.00 RUB
g:availabilityin stock или out of stock
g:image_linkpipeline:image
g:descriptionfield:introtext

Карта полей по умолчанию ещё содержит oldprice, currencyId, categoryId, vendorCode, country_of_origin, vendor. В RSS-элемент они не выводятся.

Когда Google пропускает товар ​

Пустые название, адрес или цена убирают строку из файла и пишут ошибку журнала. Внутри сообщения: g:title is required, g:link is required, g:price is required или g:price must be greater than 0. В журнале строка начинается с Offer resolver: и пробела. Статус запуска становится error, отметка «нужно сгенерировать» не снимается. На пути YML из дерева этих сообщений нет.

Порог остатка тот же, что при записи YML из дерева. Так у нового прайса и когда ключа поведения нет.

ПоведениеСтрока RSS
skip, excludeУбирают молча: нет числа остатка или остаток не выше min_stock
include, outОставляют

g:availability пишется только у оставшейся строки. Нет числа остатка: in stock. Число выше min_stock: in stock. Иначе out of stock.

Тип оффера vendor.model на пути RSS требует непустые производителя и артикул. Иначе строка пропускается. На пути YML из дерева полей это поле атрибут type не ставит.