Модуль выгрузки Яндекс.Маркет PRO

Версия документации от 02.11.2012

Установка

  1. Выключить кэш. Обязательно
  2. Выключить компиляцию (если включена). Обязательно
  3. Распаковать и скопировать архив модуля в корень сервера.
  4. Произвести начальную настройку модуля.
  5. Включить компиляцию. Не обязательно
  6. Включить кэш. Не обязательно
  7. В карточке товара проставить значения атрибута выгрузки в ЯндексМаркет (Да/Нет)
Внимание! Если после установки модуля на странице настроек вы видите Ошибку 404, вам необходимо обновить права ACL или выйти (logout) и зайти в админ. часть повторно (login).

Настройка Яндекс.Маркет

Настройка модуля Яндекс.Маркет PRO заключается в выборе схемы yml и сопоставления атрибутов товара в магазине, полям в формате yml, а так же установке дополнительных параметров выгрузки.
Например, чтобы сопоставить поле yml name с нужным атрибутом в магазине, необходимо в настройках модуля в поле Name выбрать из выпадающего списка нужный атрибут (обычно, Name, либо любой произвольный). В результате этих действий, при формировании файла yml для ЯМ в поле name yml будет подставляться значение атрибута Name для каждого обрабатываемого товара.

Описание настроек Система - Конфигурация - Яндекс.Маркет PRO

Пункт настройки Назначение
Включен Включение/выключение модуля.
  • Да - включен.
  • Нет - выключен, файл yml не формируется.
Логин Логин для http авторизации (может быть пустым). Если пусто, авторизация не применяется.
Пароль Пароль для http авторизации.
Название магазина Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров). Не должно содержать более 20 символов. Нельзя использовать слова, не имеющие отношения к наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина, должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента. Обязательное поле.
Компания Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации. Обязательное поле.
URL магазина URL-адрес главной страницы магазина, без http://. Обязательное поле.
Основная валюта магазина Основная валюта магазина, для нее будет установлен курс валюты 1. Доступно RUB, UAH, BYR, USD, EUR, KZT.
Local_delivery_cost для всех товаров В элементе local_delivery_cost указывается стоимость доставки для своего региона. Будет применена ко всем товарам у которых не установлен этот параметр.
Схема YML Упрощенная или vendor.model. Схема устанавливается для всех товаров в файле.
Name Название товарного предложения.
Шаблон наименования товара (name)

Позволяет вставлять атрибуты в название товарного предложения с помощью плэйсхолдеров {{}}. Если заполнено, то будет использоваться вместо атрибута Name, name из атрибута будет проигнорировано.

Пример:
Нужно составить название товарного предложения по типу: Набор атрибутов - Название товара - Цвет.
Для этого в поле нужно написать {{attributeSet}} - {{name}} - {{color}}, где attributeSet, name и color - атрибуты обрабатываемого товара, которые будут подставлены.
Если в обрабатываемом товаре атрибут который нужно подставить отсутствует, он будет проигнорирован.
Delivery Элемент позволяет указать возможность доставки соответствующего товара. «false» — товар не может быть доставлен. «true» — товар доставляется на условиях, которые описываются в партнерском интерфейсе Яндекс.Маркет.
Local_delivery_cost Стоимость доставки данного товара в своем регионе.
TypePrefix Группа товаров \ категория.
Vendor Производитель.
VendorCode Код товара (указывается код производителя).
Model Модель.
Description Описание товарного предложения.
Sales_notes Элемент используется для отражения информации о минимальной сумме заказа, минимальной партии товара или необходимости предоплаты, а так же для описания акций, скидок и распродаж. Допустимая длина текста в элементе — 50 символов.
Manufacturer_warranty Элемент предназначен для отметки товаров, имеющих официальную гарантию производителя.
Country_of_origin Элемент предназначен для указания страны производства товара.
Barcode Штрихкод товара, указанный производителем.
Pickup Элемент позволяет указать возможность зарезервировать выбранный товар и забрать его самостоятельно. «false» — возможность «самовывоза» отсутствует. «true» — товар можно забрать самостоятельно.
Store Элемент позволяет указать возможность купить соответствующий товар в розничном магазине. «false» — возможность покупки в розничном магазине отсутствует. «true» — товар можно купить в розничном магазине.
Cron
  • Нет - файл генерируется каждый раз при запросе робота яндекса "на лету".
  • Да - файл yml формируется по вызову адреса site.ru/yml и записывается в корень сервера. Имя формируемого файла по умолчанию - import.yml
Имя файла в который будет выгружаться yml по cron Если заполнено, то yml будет генерироваться в файл с заданным в этом поле именем, иначе import.yml
Имя файла в который будет выгружаться snippet yml по cron Если заполнено, то yml сниппета будет генерироваться в файл с заданным в этом поле именем, иначе import.snippet.yml
Выгружать все картинки товара
  • Нет - выгружается только одна основная картинка товара.
  • Да - выгружаются первые 10 картинок из галереи товара.
Статистика
  • Нет - метки статистики не прикрепляются.
  • Да - к ссылке товарного предложения прикрепляются метки вида utm_source=yandex&utm_medium=market&utm_campaign='.urlencode($name).

Внимание! При длинных названиях товара возможно превышение допустимаой длины URL и получения предупреждения от Яндекса. В этом случае рекомендуется отключить метки статистики.

Категорию в URL
  • Нет - URL товара без категории.
  • Да - URL товара с путем категории (если категорий у товара несколько, подставляется путь к категории с наибольшим ID).
Использовать минимальную цену товара
  • Нет - выгружается финальная стоимость (FinalPrice).
  • Да - выгружаесть минимальная стоимость (MinPrice).

Настройка сопоставления товара и категории на Яндекс.Маркет <market_category>

Для настройки сопоставления категории Яндекс.Маркет и товара используются атрибуты "Категория Яндекс.Маркет" из настроек категории товара (Каталог - Управление категориями) и из настроек карточки товара (Каталог - Управление товарами - Зайти в товар).
При этом атрибут в товаре имеет приоритет над атрибутом в категории.
То есть, если атрибут "Категория Яндекс.Маркет" установлен и в категории и в карточке товара, он будет взят из карточки. Если установлен только в Категории, то соотв. из категории.

Настройка Яндекс.Маркет Гардероб

Настройка Яндекс.Маркет Гардероб заключается в выборе атрибутов которые будут использоваться для значений цвета/размера.

Выгружаются простые и конфигурируемые товары. Для выгрузки в Гардероб атрибут цвет обязателен.
Все атрибуты должны иметь тип Список.

Пункт настройки Назначение
Включен Включение/выключение модуля.
  • Да - включен.
  • Нет - выключен, товары размеров не формируются.
Атрибуты Цвета Атрибуты использующиеся для указания Цвета. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Обязательный атрибут.
Атрибуты Размера Атрибуты использующиеся для указания Размера. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Обязательный для товаров к которым применимо понятие размерности.
Если атрибут в товаре отсутствует, то соотв. тег param не выгружается.
Юнит Размера (unit) Атрибуты использующиеся для указания Юнита. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Рекомендуемы обозначения размерных сеток в атрибуте unit:

По странам:
  • RU — Россия;
  • EU — Европа;
  • DE — Германия;
  • IT — Италия;
  • FR — Франция;
  • UK — Англия;
  • US — США;
  • AU — Австралия;
  • Japan — Япония;
  • INT — международные обозначения (для одежды: XS, S, M, L, XL, XXL, 2XL и т.д., для бюстгальтеров: AA, A, B, C и т.д.).

По типу измерения:
  • INCH или Дюймы — дюймы;
  • Height или Рост — рост в сантиметрах;
  • Months или Мес. — возраст в месяцах;
  • Years или Лет — возраст в годах;
  • Round или окружность — окружность в сантиметрах.
Подробно про юниты.
Юнит Размера (unit) по умолчанию. Если атрибут юнита не найден в товаре, будет подставлен юнит из этого поля.
Атрибуты Пола Атрибуты использующиеся для указания Пола. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Если атрибут в товаре отсутствует, то соотв. тег param не выгружается.
Атрибуты Возраста Атрибуты использующиеся для указания Возраста. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Если атрибут в товаре отсутствует, то соотв. тег param не выгружается.
Атрибуты Материала Атрибуты использующиеся для указания Материала. Множественный выбор.
В выгрузку будет подставлен первый найденный артибут из списка.
Если атрибут в товаре отсутствует, то соотв. тег param не выгружается.

Внимание!

Если в выпадающем списке атрибутов, вы не нашли нужный атрибут, то вам необходимо его добавить путем выставления в настройках атрибута (Каталог - Атрибуты - Управление атрибутами - Открыть нужный атрибут) значения Использовать в каталоге товаров (Used in Product Listing) - Да и обновить страницу настройки модуля Яндекс.Маркет PRO.

Настройка CRON

  1. Включить крон в настройках модуля (поле Cron).
  2. Указать в поле Имя файла в который будет выгружаться yml по cron (если необходимо).
  3. Настроить выполнение cron на сервере для url http://site.ru/yml (пример команды: wget -O - -q http://site.ru/yml).
  4. После выполнения команды cron, файл yml будет находиться по адресу http://site.ru/import.yml или c назначенным в настройках именем.

Сниппеты в поиске Яндекса

Сниппеты не требуют специальной настройки и для их использования достаточно передать в yandex.webmaster url site.ru/yml/index/snippet/
Будут выгружены все товары магазина с ценами.
Подробно про сниппеты на яндексе.

Ссылки на документацию.

  1. Описание элемента offer Важное!.
  2. Описание полей для Яндекс.Гардероб (одежда и обувь).
  3. Требования к методу передачи данных.

События (Observer)

Обсервер позволяет перехватывать и изменять данные без вмешательства в исходный код модуля (WIKI)
метод свойства
rugento_yml_collection
  • collection
    @var collection Mage_Catalog_Model_Resource_Product_Collection

    Коллекция товаров

  • attribute_filter
    @var attribute_filter Varien_Object

    Объект с кодом и значением фильтра.

    • attribute_filter
      @param (string) attribute_code - код атрибута для фильтрации
      @param (string) attribute_value - значение атрибута для фильтрации

      Если пустой attribute_code, коллекция не фильтруется.

Вызывается после формирования коллекции, и перед подстановкой атрибута для фильтрации товаров выгрузки (yml).

Пример использования:
/**
* Меняем код атрибута для фильтрации с yml на my_new_attribute
*/
public function changeAttribute($event)
{
    //получили объект с фильтром
    $attributeFilter = $event->getEvent()->getData('attribute_filter');

    //заменили код атрибута на нужный
    $attributeFilter->setData('attribute_code', 'my_new_attribute');
    return $this;
}
rugento_yml_product_before
  • product
    @var product Mage_Catalog_Model_Product

    Обрабатываемый товар.

  • xml_offers_node
    @var xml_offers_node Varien_Simplexml_Element

    Нода offers. К ней будет прикреплена созданная нода товара offer.

  • product_category_id_before
    @var product_category_id_before String

    ID категории товара.

  • market_category_value_before
    @var market_category_value_before String

    Название категории в Яндекс.Маркет (Подарки, сувениры, цветы/Цветы).

Флаги
  • _noLoadToXml - при установке этого флага в товар в этом обсервере, он не обрабатывается обработкой xml в дальнейшем.
    При самостоятельной обработке или получении xml товара через API, вы обязаны установить этот флаг (см. пример), иначе нода товара будет добавлена дважды.

Вызывается перед передачей товара на обработку.

Пример использования:
/**
* Что-то делаем)
*/
public function fnc($event)
{
    //получили товар
    $product = $event->getEvent()->getData('product');

    //получили ноду offers
    $xml_offers_node = $event->getEvent()->getData('xml_offers_node');

    //получили вычисленный id категории товара
    $product_category_id_before = $event->getEvent()->getData('product_category_id_before');

    //получили категорию маркета
    $market_category_value_before = $event->getEvent()->getData('market_category_value_before');

    //что-то сделали

    //поставили флаг прекращения дальнейшей обработки, если нужно
    $product->setData('_noLoadToXml', true);

    return $this;
}
rugento_yml_market_category
  • category
    @var category Varien_Object

    Объект с категорией ЯМ.

    • category
      @param (string) category - Вычисленная категория ЯМ.
  • product
    @var product Mage_Catalog_Model_Product

    Обрабатываемый товар.

Вызывается перед подстановкой ноды категории ЯМ.

Пример использования:
/**
* Меняем категорию ЯМ
*/
public function changeCategory($event)
{
    //получили объект с категорией
    $category = $event->getEvent()->getData('category');

    //заменили категорию
    $category->setData('category', 'Подарки, сувениры, цветы/Декоративная посуда');
    return $this;
}
rugento_yml_product_xml_out
  • xml_offer
    @var xml_offer Varien_Simplexml_Element

    Сформированная нода offer для товара.

  • product
    @var product Mage_Catalog_Model_Product

    Обрабатываемый товар.

Вызывается после обработки товара и формирования ноды.

Пример использования:
/**
* Добавляем произвольный тег param
* и меняем название товара
*/
public function addParamTag($event)
{
    $_helper = Mage::helper('ymlpro');

    //получили ноду
    $offer = $event->getEvent()->getData('xml_offer');

    //добавляем param
    $param = $offer->addChild('param', $_helper->filterElement('значение_param'));

    //добавляем атрибут для param, если нужно
    $param->addAttribute('название атрибута', $_helper->filterElement('значение_атрибута'));

    //меняем название товара
    $offer->{'name'} = 'Новое название товара';

    return $this;
}

API

API позволяет пользоватся функциями модуля из любого места в коде. Все запросы происходят через хелпер Mage::helper('ymlpro').
Метод Описание
getSimpleXmlProductNode

Создает и прикрепляет к заданной ноде обработанный товар.

  • $product
    @var $product Mage_Catalog_Model_Product

    Обрабатываемый товар.

  • $parentNode
    @var $parentNode Varien_Simplexml_Element

    Нода к которой будет прикреплен созданный элемент.

  • @return Varien_Simplexml_Element || null

    Cозданный элемент.

$xmlNode = Mage::helper('ymlpro')->getSimpleXmlProductNode($product, $parentNode);
getMarketCategoryArray

Возвращает массив всех категорий ЯМ.

  • @return array

    Массив категорий ЯМ.

$yamCategory = Mage::helper('ymlpro')->getMarketCategoryArray();
getValue

Возвращает значение атрибута для заданного товара.

  • $product
    @var $product Mage_Catalog_Model_Product

    Обрабатываемый товар.

  • $attribute
    @var $attribute string

    Код атрибута.

  • @return string || false

    Значение атрибута или false, если значение получить не удалось.

$value = Mage::helper('ymlpro')->getValue($attribute, $product);
filterElement

Фильтрует строку для безопасной подстановки в xml.

  • $string
    @var $string string

    Фильтруемая строка.

  • @return string

    Строка.

$yamCategory = Mage::helper('ymlpro')->filterElement($string);