Блог

21.03.14

Обмен данными. Часть 3. Экспорт в Яндекс.Маркет

Рассмотрим наиболее типовую задачу обмена данными, которую можно решить самостоятельно - экспорт товаров в Яндекс.Маркет. В решении данных задач будет использоваться только стандартная документация по обмену данными, но на конкретных примерах. В качестве сайта, на котором будет проводиться настройка обмена данными, будет стандартный демо-сайт, версия «Бизнес».

Задачу выгрузки можно разделить на 2 части:

  1. Определение того, что необходимо выгружать
  2. Настройка автоматической выгрузки

Настройка выгружаемых данных

Выгрузка товаров в Яндекс.Маркет осуществляется в модуле «Каталог товаров» - «Обмен данными», закладка «Экспорт», выбираем «Формат данных» - «Yandex Market импорт/экспорт». Все элементы формы интуитивно ясны, исключение составляет поле «тип экспорта».

В Яндекс.Маркет чаще всего используются 2 типа экспорта: standard и vendor.model. Эти типы выгрузки так же называются и в Amiro.CMS. Отличие этих типов экспорта заключаются только в том, что vendor.model предназначен для выгрузки с указанием производителя (бренда), а standard – выгрузка без производителя. Исходя из того, нужен ли в выгрузке производитель, далее настраивается либо выгрузка standard, либо vendor.model.

Настройка выгрузки производителя

Для того, чтобы добавить в выгрузку производителя (vendor.model), необходимо перейти к редактированию шаблонов модуля, что осуществляется кликом на иконку  в верхнем меню. Во всплывающем окне вызываем на редактирование шаблон YandexEshopDriver.tpl. Типу выгрузки vendor.model соответствует сет item_row_vendor_model, который изменяет строку <vendor></vendor> следующим образом: <vendor>##custom_field_13##</vendor>, где 13 — номер поля производителя. Данный номер поля можно получить в модуле «Каталог товаров» - «Описание свойств товаров», столбец «Номер свойства». В итоге получаем сет вида:

<offer id="##id##" type="##type##" available="##availability##">
<url>##url##</url>
<price>##price##</price>
<currencyId>##currency_id##</currencyId>
<categoryId>##category_id##</categoryId>
##IF(picture)##<picture>##picture##</picture>##ENDIF##
<typePrefix></typePrefix>
<vendor>##custom_field_13##</vendor>
<vendorCode></vendorCode>
<model>##model##</model>
<description>##description##</description>
</offer>

Делаем тестовую выгрузку в Яндекс.Маркет в модуле «Обмен данными» с типом выгрузки vendor.model и убеждаемся, что у товаров указан производитель. Пример товара в выгрузке, указан производитель Welly:

<offer id="181" type="vendor.model" available="true">
<url>http://business.amiro.ru/katalog/internet-magazin/dlja-razvlechenija/igrushki/kopii-i/die-cast-lamborghni-murcielago-118?</url>
<price>880</price>
<currencyId>RUR</currencyId>
<categoryId>20094</categoryId>
<picture>http://business.amiro.ru/_mod_files/ce_images/eshop/generated/wl12517mk_200x200_pc.jpg</picture>
 <typePrefix/>
<vendor>Welly</vendor>
<vendorCode/>
<model>LAMBORGHNI MURCIELAGO (1:18)</model>
<description/>
</offer>

Обработка товаров, которых нет в наличии

Второй вопрос, с которым следует определиться при работе с Яндекс.Маркет — как обрабатывать товарные позиции, которых нет в наличии. Приоритетным требованием Яндекс.Маркет является актуальность данных, поэтому во избежание проблем с исключением сайта из Яндекс.Маркета, в выгрузке всегда должны быть актуальные данные.

Существуют 2 типа обработки товаров, которых нет в наличии:

  1. выгружать товары с признаком «нет в наличии»;
  2. не выгружать товары, которых нет в наличии.

Выгрузка товаров с признаком «нет в наличии» осуществляется крайне просто — в настройках модуля «Обмен данными», раздел «Настройки Yandex Market драйвера» указываем для параметра «Определять наличие товара через остаток товара» значение «Определять».

Для того, чтобы вообще убрать из выгрузки товары не в наличии необходимо перейти к редактированию шаблонов модуля. Предположим для определенности, что был выбран тип выгрузки  vendor.model, тогда нужно вызвать на редактирование сет item_row_vendor_model и добавить строки ##IF(rest > 0)## в начало и ##ENDIF## в конец сета. Получаем сет вида:

##IF(rest > 0)##
<offer id="##id##" type="##type##" available="##availability##">
<url>##url##</url>
<price>##price##</price>
<currencyId>##currency_id##</currencyId>
<categoryId>##category_id##</categoryId>
##IF(picture)##<picture>##picture##</picture>##ENDIF##
<typePrefix></typePrefix>
<vendor>##custom_field_13##</vendor>
<vendorCode></vendorCode>
<model>##model##</model>
<description>##description##</description>
</offer>
##ENDIF##

Делаем тестовую выгрузку и убеждаемся, что, например, товар «Мини поезда», у которого остаток в панели управления равен 0, после изменения шаблона вышеуказанным способом, более не попадает в выгрузку.

Выводы и замечания:

  1. На этом этапе настройка выгрузки в Яндекс.Маркет должна быть полностью завершена, и можно переходить к следующему этапу — настройка автоматической выгрузки, чему посвящен следующий подраздел.
  2. Настоятельно рекомендуется включить настройку, выгружающую в Яндекс.Маркет цены с учетом скидки. Это делается в настройках модуля, раздел «Настройки Yandex Market драйвера» для параметра «Применять скидку при экспорте» указываем значение «Включено».
  3. Сформированный файл выгрузки можно визуально просматривать любым браузером кроме Internet Explorer, который выдаст ошибку об отсутствии файла стилей (все другие браузеры просто выдадут предупреждение, но позволят просмотр файла).
  4. Для ряда настроек в выгрузке требуется понимание работы с шаблонами Амиро, поэтому рекомендуется ознакомиться с документацией по работе с шаблонами.

Настройка автоматической выгрузки

Для настройки используется только стандартная документация, но с описанием особенностей экспорта на различных площадках.

Формирование ссылки для автоматической выгрузки

Предположим, что необходимо производить выгрузку типа vendor.model на демо-сайте, расположенным на хостинге Амиро. Рассмотрим уже готовую ссылку, которая запускает выгрузку по HTTP протоколу:

http://demo.amiro.ru/_admin/default/eshop_exchange_daemon.php?daemon_username=business&daemon_domain=business.amiro.ru&user_passwd=demo&export_type=vendor.model&exchange_type=export&action=run&export_recipient=00001&export_driver=YandexEshopDriver&export_module[]=eshop_item&export_data_type[]=full&export_save_method=file&export_save_filename=auto_yandex_export.xml

Если открыть данную ссылку в браузере, должен начаться обмен и появиться сообщение о результатах экспорта. Пример страницы результатов успешного экспорта:


Рассмотрим параметры запуска (* - параметры специфические для каждого сайта):

Параметр Комментарий Хостинг Амиро Сторонний хостинг
http://demo.amiro.ru/_admin/default/ * Адрес панели управления Адрес должен содержать _admin/default/ в конце строки Адрес содержит _admin/ в конце строки
daemon_username * Логин главного администратора

daemon_domain * Название домена Название домена Строка «default» (указывать без кавычек)
user_passwd * Пароль

export_type Тип экспорта: vendor.model, standard, Yandex.Direct.CSV, Yandex.Custom

export_save_filename Название файла


После того, как подставлены требуемые значения, следует открыть ссылку в браузере для проверки корректности параметров. Если все параметры настроены верно, будет произведен экспорт, и показаны результаты формирования файла.

Пример ссылки для выгрузки на стороннем сервере, заглавными буквами указаны параметры, которые надо изменить:

http://DOMAIN.RU/_admin/eshop_exchange_daemon.php?daemon_username=ADMIN&daemon_domain=default&user_passwd=PASSWORD&exchange_type=export&action=run&export_recipient=00001&export_driver=YandexEshopDriver&export_module[]=eshop_item&export_data_type[]=full&export_save_method=file&export_save_filename=auto_yandex_export.xml&export_type=vendor.model

Выводы:

  1. Для настройки ссылки запуска в автоматическом режиме чаще всего достаточно указать домен, логин администратора и пароль администратора
  2. Настройки запуска для хостинга Амиро и стороннего хостинга отличаются
  3. Ссылку на результирующий файл следует сохранить — именно данную ссылку следует указать для проверки в Яндекс.Маркет

Запуск автоматической выгрузки

После того, как ссылка сформирована, и экспорт успешно запускается ее открытием в браузере, можно перейти к настройку автоматической выгрузки. Для этого потребуется доступ в панель управления хостингом, чтобы добавить задачу для периодического запуска. Если такая возможность не предоставляется хостингом, достаточно передать в поддержку хостинг-провайдера ссылку, которую необходимо запускать и указать периодичность запуска.

Если панель управления хостингом позволяет добавлять задачи самостоятельно, следует создать задачу для запуска с определенной периодичностью (например, 1 раз в день, в 5 утра) с такой командной строкой:

/usr/bin/wget -o /dev/null -O /dev/null 'ссылка_запуска'

Следует обратить внимание на:

  1. Команда /usr/bin/wget может иметь другой путь. Если автоматический запуск не происходит, адрес команды следует уточнить у хостинг-провайдера
  2. Ссылка запуска — это ссылка, которая была сформирована в предыдущем разделе. Она обязательно должна быть заключена в одинарные кавычки
  3. При использовании домена в кириллическом написании (например, домена в зоне .рф), следует доменное имя преобразовать при помощи любого Punycode-конвертера. Пример Punycode-конвертера.

Выводы:

  1. Результатом добавления задачи в панели управления хостингом будет формирование с указанной периодичностью выгрузки в Яндекс.Маркет
  2. При изменении пароля администратора следует изменить его и в задаче формирования файла выгрузки, иначе файл выгрузки не будет автоматически формироваться
Все записи

Комментарии

Нет комментариев

Правильный угол зрения на природу сайтостроения
(383) 310-63-21

Заказать звонок

ФИО:*
Телефон:*
Комментарий(вопрос):*



* Обязательные поля

Личный кабинет
Каталог модулей
Случайные модули
Популярные модули
Офисы
2,990 руб.

Модуль позволяет осуществлять управление офисами и списком дистрибьюторов компании с их отображением на Яндекс.Картах и удобной фильтрацией.

Заполнение адресов
Бесплатно
Модуль предназначен для автозаполнения полей адреса по базе ФИАС с помощью сервиса kladr-api.ru

Отзывы
Контакты    Карта сайта    Вакансии    Вопрос-ответ    Оплата
Работает на: Amiro CMS