YML-фид Яндекса
Выгрузка каталога OpenCart 4 в формате YML: категории, товары с ценами, скидками, наличием, картинками, производителем, артикулом и характеристиками — по адресу, который указывают в кабинете площадки.
Назначение и совместимость
YML (Yandex Market Language) — формат, который принимают сервисы Яндекса для загрузки каталога: Яндекс Маркет, Яндекс Товары (через Вебмастер), Яндекс Директ (товарные кампании), а также совместимые площадки. Формат у них один; различаются только формат даты в атрибуте date и набор необязательных тегов — это задаётся в настройках. В OpenCart 4.1.0.4 фидов нет; модуль строит фид прямо из базы магазина по запросу и хранит готовый результат в кэше.
Проверено на OpenCart 4.1.0.4 и PHP 8.2. Другие версии OpenCart 4 не проверялись. Ядро не меняется: модуль — расширение типа «Каналы» со своим адресом на витрине.
Установка
- Расширения → Установщик → «Загрузить», файл
yml_feed_oc4.ocmod.zip(имя не менять: OpenCart 4 берёт из него код расширения). - В строке «YML-фид Яндекса» — зелёная кнопка «Установить».
- Расширения → Расширения, тип «Каналы» → «Установить» у «YML-фид Яндекса».
- Обновите страницу: в разделе «Маркетинг» появился пункт «YML-фид Яндекса». Фид уже работает со значениями по умолчанию (все категории, валюта и группа покупателей магазина).
Права получает группа пользователя, который нажал «Установить». Другим группам — Система → Пользователи → Группы пользователей, маршрут extension/yml_feed_oc4/feed/yml (в сборке OCM Store модуль уже установлен и виден в Расширения → Расширения → Каналы; группы «Администратор» и «Менеджер магазина» получают права на него и на страницу настроек extension/yml_feed_oc4/yml_feed/page при установке магазина).
Адрес фида
Адрес показан вверху страницы настроек: https://ваш-домен/index.php?route=extension/yml_feed_oc4/feed/yml. Его указывают в кабинете площадки как источник данных (площадка сама скачивает фид по расписанию). Чтобы получить фид на другом языке магазина, добавьте &language=код (например, en-gb). При нескольких магазинах фид каждого магазина открывается по тому же адресу на его домене.
Настройки
Маркетинг → YML-фид Яндекса (или Расширения → Расширения → Каналы → YML-фид Яндекса → Редактировать).
| Настройка | По умолчанию | Смысл |
|---|---|---|
| Статус | включено | Выключенный фид отдаёт страницу «не найдено» |
| Название магазина, Компания | пусто — из настроек магазина | Теги name (не больше 20 знаков по правилам площадки) и company |
| Валюта фида | валюта магазина | Цены пересчитываются по курсам магазина; рубль выгружается с кодом RUR (справка Яндекса принимает и RUR, и RUB; валюта должна совпадать с настройками кабинета) |
| Цены для группы покупателей | группа по умолчанию | Цены, скидки и акции этой группы |
| Категории | ничего не отмечено — все | Товары выгружаются из отмеченных категорий; их родительские категории попадают в список категорий фида автоматически. Подкатегории нужно отмечать отдельно |
| Не выгружать отсутствующие | выключено | Включено — товары с количеством 0 не выгружаются; выключено — выгружаются с available="false" |
| Описание товара | текст без разметки | Не выгружать; текст до 3000 знаков; с простой разметкой (абзацы, списки, выделение) в CDATA |
| Картинок на товар | 5 | От 0 до 20: основное изображение и дополнительные по порядку |
| Характеристики | включено | Атрибуты товара как теги param |
| Артикул из поля «Модель» | включено | Поле «Модель» в тег vendorCode; производитель всегда в vendor |
| Штрихкод | не выгружать | Какой идентификатор товара (Каталог → Идентификаторы, например EAN) выгружать в тег barcode |
| Вес и габариты | включено | weight в килограммах и dimensions в сантиметрах (длина/ширина/высота), если заполнены у товара; пересчёт из классов веса и длины магазина |
| Доставка, Самовывоз | включено | Теги delivery и pickup для всех предложений; условия доставки задаются в кабинете площадки |
| Условия продажи | пусто | Тег sales_notes, не больше 50 знаков |
| Формат даты фида | RFC 3339 с часовым поясом | Атрибут date: RFC 3339 — для Маркета и Товаров; ГГГГ-ММ-ДД чч:мм — как описано в требованиях Директа |
| Кэш, минут | 60 | Готовый фид в кэше магазина; 0 — без кэша. Сохранение настроек и кнопка «Очистить кэш» сбрасывают кэш |
Что выгружается
- Магазин:
name,company,url, платформа и версия, валюта фида с курсом 1. - Категории:
id,parentId(если родитель тоже в фиде) и название на языке фида; родители всегда идут раньше потомков. - Предложения (
offer): включённые товары с наступившей датой доступности, привязанные к магазину, из отобранных категорий, с ценой больше нуля.id— номер товара,available— есть ли остаток;url;price— цена с учётом акции (и скидки группы),oldprice— цена до акции;categoryId— категория предложения (см. ниже);picture;delivery,pickup;name;vendor;vendorCode;barcode;description;sales_notes;param;weight;dimensions. - Цены считаются так же, как на витрине для выбранной группы покупателей: акция, затем скидка на 1 штуку, с налогом, если магазин показывает цены с налогом.
- Категория предложения: главная категория товара из модуля «SEO-поля» (если она выгружается), иначе первая по номеру из выгружаемых категорий товара.
Связь с модулем «SEO-поля»
Если установлен и включён модуль «SEO-поля» (в сборке OCM Store — всегда): товары с выключенной «Индексацией» в фид не попадают; категория предложения — главная категория товара; при включённой настройке «Канонический адрес с главной категорией» ссылка на товар строится с путём главной категории — тот же адрес, что в теге canonical страницы товара. Без модуля «SEO-поля» фид работает как обычно.
Удаление
Расширения → Расширения → Каналы → «Удалить» у «YML-фид Яндекса», затем Расширения → Установщик → удалить пакет. Настройки и пункт меню удаляются, кэш фида очищается.
Типовые вопросы
- Площадка сообщает об ошибке фида. Откройте адрес фида в браузере: он должен отдавать XML. Проверьте, что название магазина не длиннее 20 знаков, а у товаров заполнены название и цена.
- Товара нет в фиде. Проверьте статус, дату доступности, привязку к магазину и категории, цену больше нуля, настройку «Не выгружать отсутствующие» и индексацию в «SEO-полях»; после правок нажмите «Очистить кэш».
- Описание с картинками или таблицами. В режиме «с простой разметкой» остаются абзацы, списки и выделение; остальные теги убираются — так требует формат.
- Нужны разные фиды для разных категорий. В этой версии фид один на магазин; отбор — списком категорий в настройках.