Как сделать экспорт в Google merchant битрикс?
Выгрузки на торговые площадки. Инструкция для программиста 1С-Битрикс
- Сравнение выгрузок на различные Торговые площадки
- Часть 1 – Яндекс.Маркет
- Часть 2 – Как работает стандартная выгрузка
- Часть 3 – Нам подходит выгрузка для Яндекс.Маркета», говорили они…
Про пользу размещения товаров на различных торговых площадках и их принципиальные отличия читайте в нашей предыдущей статье .
Сравнение выгрузок на различные Торговые площадки
Часть 1 – Яндекс.Маркет
Первое, что приходит в голову, если вспоминать о торговых площадках – это Яндекс.Маркет. И, что приятно, по объёму и подробности документации его превосходит разве что Google Merchant Center.
Итак, с чего начать?
Проверим то, что уже есть в Битриксе.
Зайдя в административную часть Битрикса в меню Магазин -> Экспорт данных, мы с радостью обнаруживаем заветную строчку Yandex.
Переходим в раздел, начинаем заполнять поля.
Первое препятствие. Какой тип описания выбрать – vendor.model или упрощённый? Покопавшись в документации, приходим к выводу, что vendorCode нет в требованиях Яндекса, поэтому выбираем упрощенный вариант.
Запускаем Экспорт в Битриксе. Выгрузка есть, но она не подходит, так как нет многих пунктов, обязательных для раздела Одежды (Яндекс.Гардероб).
Например:
- Нельзя задать категорию в Яндекс.Маркете, которой соответствует данный товар;
- Если ваше свойство статичное (например, пол Женский) и, соответственно, нигде явным образом не задаётся – то и в выгрузке вы его не получите;
- Нет вывода «старой цены»;
- Цены можно выбирать только из тех, что доступны неавторизованному пользователю;
- Нельзя поменять название параметра;
- Нельзя выгружать товары только в наличии или только с фото;
- Нельзя устанавливать ставки на различные категории товаров;
- И много другое.
Итак, стандартная выгрузка нас не устраивает. Какие остаются варианты?
Вариант А. Купить приложение на Маркетплейсе.
Вариант Б. Кастомизировать выгрузку.
Вариант А подходит, если у вас нет никаких сверхъестественных взаимодействий в вашем каталоге.
Например, в магазине из примера была особенность – фотографии товара были только у одного торгового предложения для определённого цвета (причём это предложение могло быть в нулевом количестве). То есть, у вас есть платье синего и зелёного цвета, каждый цвет есть для размеров 44 и 46. Только вот картинки для зелёного есть только у размера 44 (которого нет в наличии), а для синего – у 46. Шанс, что покупной модуль умеет правильно обрабатывать подобную ситуацию довольно мал. И не потому, что модуль плохой, а потому что таких ситуаций – тысячи, и каждая индивидуальна для отдельно взятого сайта. Но если ваш сайт всё же остался стандартным — устанавливайте себе пробную версию, проверяйте – возможно, вам повезёт и никаких лишних трудозатрат не будет.
Но это не наш случай. Значит, останавливаемся на варианте Б. Возникает вопрос – и сколько времени придётся потратить, чтобы кастомизировать эту выгрузку? Вопрос хороший и во многом зависит от программиста. Но если вы один раз действительно хорошо её кастомизируете – так, что можно будет менять набор параметров изменением парой строк – то переделывание выгрузки на другие магазины, сайты или типы выгрузок будет занимать у вас всего пару часов, а то и меньше.
Часть 2 – Как работает стандартная выгрузка
Буквально в первых строчках Google приносит вот эту ссылку . Исходя из неё, можно смело начинать – идти в /bitrix/php_interface/include/catalog_export/ и копировать файлы yandex_run и yandex_setup, заменив «yandex» на то, что нужно. Содержимое этих файлов нужно скопировать из модуля catalog (адрес прописан в самих файлах, например, /bitrix/modules/catalog/load/yandex_run.php ).
В setup-файле содержатся настройки, которые открываются при редактировании профиля. Если кратко – можно добавлять свои вкладки и поля, значения которых будут передаваться в файл, непосредственно производящий выгрузку.
Добавлять вкладки можно, добавив в конец файла код
$tabControl->BeginNextTab();
// код
$tabControl->EndTab();
Но, честно говоря, вижу в этом смысл, только если вы собираетесь продавать ваш модуль. Если нет – то велик шанс потратить на это больше времени, чем потом получить пользы.
Кроме того, стандартная выгрузка имеет большой недостаток: при количестве товаров более 3000 начинает есть настолько много памяти на сервере, что сама выгрузка умирает.
Перейдём к главному блюду. Это run-файл – собственно, именно он создаёт результирующий файл выгрузки.
В начале файла идёт Название выгрзки — именно это название будет высвечиваться в списке экспортов.
Далее идут всякие вспомогательные вызовы. Из интересного можно отметить функции
yandex_replace_special – заменяет спецсимволы на их символы-мнемоники
yandex_text2xml – также убирает или заменяет лишние спецсимволы
yandex_get_value – получает значения параметров из свойств товаров
Далее идут проверки свойств, полученных из настроек профиля – что, конечно, полезно, но нас особо не интересует
Смысловая часть начинается с @fwrite – запись в наш новый файл. Первой строкой задаётся тип и кодировка файла, затем идёт уже непосредственно xml-структура. Можно оставить как есть, можно прописать какие-то параметры вручную.
Не буду распространяться о подробной структуре YML, о которой можно прочитать здесь ( https://help.yandex.ru/partnermarket/yml/about-yml.xml ), коснусь лишь принципиальных моментов.
Разделы каталога/categories.
(часть кода начинается с $intMaxSection > Здесь создаётся массив категорий товаров на сайте. Если вы решили задавать у разделов пользовательское поле, в котором будете задавать категорию Яндекс.Маркета, то получать его можно как раз в этом месте.
Тип каталога
Каталог на сайте может быть 4 типов:
D — инфоблок является торговым каталогом
O — инфоблок содержит торговые предложения (SKU)
P — инфоблок товаров, имеющих торговые предложения, но сам торговым каталогом не является
X — инфоблок товаров, имеющих торговые предложения, при это сам инфоблок тоже является торговым каталогом.
То есть, для D и О – это каталог в одном ИБ, P и X – каталог в двух ИБ: товаров и торговых предложений.
Один и тот же код составления offer’а написан 4 раза в каждой ветке. Что довольно странно и неудобно для изменений. Особенно если ваш каталог X-типа: выгрузка будет проходить по веткам 2 и 4 или 3 и 4 (2 или 3 — в зависимости от типа цен). То есть, любые изменения придётся делать минимум в двух местах. Поэтому, если уж всё равно браться переписывать – то лучше все повторяющиеся части вынести в отдельные функции. Такие как: вычисление цены, поиск картинок, вывод названия и описания и так далее.
Название и описание товара
Здесь всё предсказуемо – название берётся из названия, описание – из описания. Но есть нюанс – в название – из названия торгового предложения, а описание – из анонса, при этом обрезается до 255 символов.
Цены
Цены берутся с помощью GetOptimalPrice() для группы пользователей 2 – то есть, неавторизованных. Код во всех 4 ветках кода одинаков, поэтому можно смело выносить его в функцию и передавать нужные значения в качестве параметров.
Параметры
Это самая интересная часть. Стандартная выгрузка вполне неплохо справляется с извлеканием значений из битриксовых свойств с помощью функции yandex_get_value() , передавая ей в качестве параметров массив из свойств торгового предложения и товара. И возвращая на выходе строки вида
Значения свойства через запятую
), в одном параметре может сочетаться несколько свойств, например:
Где STR содержит шаблон строки с заглушками, которые подставляются из соответствующих свойств из PROPS, при этом данная строка записывается, только если срабатывает CONDITION (если массив – то идёт сравнение, если строка – запускается функция с данным названием), применяя функцию-модификатор из MODIFICATION для значения.
Далее пишем функцию, которая принимает на вход свойства товара и торгового предложения (в этот массив можно добавить и цены, названия и всё, что ещё нужно), проходит через наш массив параметров и применяет их к этим свойствам.Конечно, это не панацея, и наверняка может найтись ситуация, когда нужно будет дописывать костыли. Но бОльшую часть вышеперечисленных проблем она вполне решает. Разве что с картинками нужно будет ещё немного повозиться, но это решается достаточно просто.
Часть 3 – Нам подходит выгрузка для Яндекс.Маркета», говорили они…
Что касается других площадок – то они так или иначе похожи на один из вышеперечисленных вариантов, с точностью до названия тегов.
Но, конечно, у всех есть свои особенности, потому что только сам Яндекс.Маркет знает, как обрабатывать свою выгрузку, а остальные – кто во что горазд. Поэтому к фразе «нам подходит выгрузка для Яндекс.Маркета» стоит относится скептически и заранее предполагать, что придётся долго и мучительно выдавливать информацию из менеджеров этой площадки. Или включать свой «третий глаз» и догадываться об их проблемах с выгрузкой по получившемуся каталогу.
Куда мы выгружали:
- Яндекс.Маркет – всё, что можно было, сказано выше.
- Товары@Mail.Ru – документация похуже Яндекса, но в целом удобоваримо. Гораздо меньше возможных параметров. Основное отличие описано выше.
- Google Merchant Center – хорошая подробная документация, принцип построения как на Яндексе, никаких принципиальных проблем возникнуть не должно, разве что теперь картинки делятся на «главную» и «дополнительные»
- ТопШоп – в начале утверждали, что выгрузка для Яндекс.Маркета им подходит. После нескольких пробных выгрузок оказалось, что не совсем – нужно было вносить изменение, описанное выше. И дописывать возможные размеры в описание товара.
- Madina.ru – подходит выгрузка для Яндекса. В нашем случае вынесена в отдельную выгрузку, так как нужно было использовать другой тип цен.
- WikiMart – хоть выгрузка для Яндекса им действительно подходит, зато у них не совсем тривиальный способ объединения торговых предложений товара. А именно – по названию. То есть, ваши торгвые предложения могут оказаться «слепленными» с другими магазинами. Если у ваших товаров одинаковое название – это один товар. Если name вашего товара начинается со «знакомых» магазину слов (юбка, платье, блузка и т.д.) – они обрежутся. И добавится название категории. Только вот слова «блуза» он не знал, из-за чего возникли товары с названиями «блузка блуза». А также названия «Валери» и «Валерия» для него являются одинаковыми.
Все выгрузки работают и приносят стабильные заказы какие-то в большей степени, какие-то в меньшей.
Мы можем сделать для вас выгрузку на любые торговые площадки, и заниматься их ведением. Для этого заполните форму ниже.
www.intervolga.ru
Выгрузка в Google Merchant
Технические данные
Модуль «Выгрузка в Google Merchant» позволяет создавать ХML-файл для выгрузки товаров в Google Merchant. Модуль подходит для любых интернет-магазинов, с любой структурой и товарным ассортиментом.
Отлично подойдет для решения практически всех задач, связанных с экспортом товаров на Google Merchant благодаря богатым и гибким возможностям экспорта в единый XML-файл для Google Merchant.
Преимущества модуля:
- Работает на любых редакциях 1С-Битрикс, в том числе «Старт»
- Поддерживает торговые предложения (SKU)
- Понимает фильтры, в результате чего появляется возможность гибко настраивать формирование списка выгружаемых товаров по нужным условиям
- Может конвертировать цены в нужную вам валюту, понимает скидки, цены с диапазонами
- Умеет устанавливать статусы доступности товара, например: «в наличии» или «под заказ»
- Может брать фотографии и название товаров из выбранных свойств
- Строит дерево категорий по любой структуре каталога: типы инфоблоков, инфоблоки, разделы, подразделы и т.д.
- Позволяет выбирать общую стоимость доставки для своего региона
- NEW! Добавилась возможность сохранять выгрузку в файл. Можно повесить формирование выгрузки на событие/агента или планировщик задач (cron)
- NEW! Исправлена ошибка, возникающая при автоматической загрузке фида с сайтов с кодировкой Windows-1251
- NEW! 1.0.4: Добавилось автоматическое создание агента по чекбоксу
- NEW! 1.0.6: Добавилась функция поэтапной выгрузки для каталогов, содержащих большое количество товаров
- NEW! 1.0.7: Добавился чекбокс «Округлять цены»
Помощь по функции создания агента
При отмеченном чекбоксе «Создать агента» будет создан агент, который раз в сутки будет обновлять файл выгрузки.
Если нужно, чтобы агент обновлял выгрузку чаще, необходимо зайти в список агентов сайта, который находится в административной части сайта по пути:
Настройки -> Настройки продукта -> Агенты
и найти созданного агента — в столбце «Функция агента» у него будет указано: wfGmerchantAgent();. В его настройках по умолчанию указан интервал срабатывания — 86400 секунд (1 сутки). Изменив этот параметр, можно скорректировать время срабатывания агента.
Убрав чекбокс «Создать агента», вы автоматически удалите созданного агента.
Помощь по обновлению 1.0.6 — Поэтапная выгрузка
Функцию поэтапной выгрузки стоит использовать в случае, если ваш каталог содержит большое количество товаров, и сервер обрубает скрипт. Для использования функционала поэтапной выгрузки отметьте чекбокс » Сохранять выгрузку в файл» и введите количество товаров, выгружаемых за один проход скрипта в поле «По сколько товаров выгружать» .
Типичные примеры использования фильтров выгрузки
Задача. Отметить галочкой каждый товар, который нужно выгружать
1. В настройках информационного блока создаем новое свойство инфоблока, например, WF_SALE. Тип свойства — список, в настройках свойства ставим внешний вид — Флажки и значение Y.
2. На странице вызова компонента, перед вызовом размещаем код:
3. Отмечаем галочкой те товары, которые хотим выгрузить.
Задача. Если нужно сделать наоборот — отметить галочкой товары, которые НЕ НАДО выгружать — просто немного меняем условие
marketplace.1c-bitrix.ru
Экспорт товаров в Google Merchant Center
Технические данные
Совместимые редакции
1. После установки модуль появится в Магазин -> Экспорт в Гугл Мерчант;
2. Перейдите в модуль и создайте новый профиль;
3. Выберите инфоблок для экспорта после чего появятся группы товаров;
4. Отметьте нужные Вам группы товаров;
5. Нажмите кнопку Настроить;
6. В настройках укажите Условие отбора. Например: Все продложения товара;
7. Введите Доменное имя и Имя профиля;
8. Нажмите Сохранить;
9. После сохранения нажмите на имя профиля;
10. После нажатия на имя профиля появится ссылка на файл экспорта в Гугл Мерчант.
Запуск через cron:
Помимо автоматического через меню настроек профиля, можно запускать задачу в ручном режиме. Для этого в файле bitrix/php_interface/include/vsfr.merchant/cron_frame.php нужно заменить #PHP_PATH# на путь к php (строка вида /user/bin/php) и realpath(dirname(__FILE__).’/../../../../’) на путь до корневой папки сайта (строка вида «/home/a/test/public_html/»).
Запустить ssh и в консоли открыть крон для записи командой: crontab -e
После этого прописать в нем строку:
00 00 * * * php -f /home/a/test/public_html/bitrix/php_interface/include/vsfr.merchant/cron_frame.php 2
00 00 * * * — указывается для запуска скрипта в 12 часов ночи ежедневно
php -f указывается для php скрипта
Строку /home/a/test/public_html/ нужно заменить на свой путь до корневой папки сайта
Аргумент 2 в конце строки — нужно заменить на номер id профиля выгрузки. Если агрумент не будет указан, в скрипте будет использован профиль под номером 1
Обращение в техподдержку можно написать по адресу: http://vsfr.ru/contact
Модуль был сделан на основе стандартного модуля выгрузки в Яндекс.Маркет, поэтому унаследовал все его достоинства и недостатки. Также при создании модуля был использован модуль http://delovsaite.ru/blog/ready-solutions/yandex-market-for-tires-solution/
Установите этот модуль прямо сейчас!
www.acrit-studio.ru
Экспорт товаров в Google Merchant Center
Технические данные
IN-Ajour 40 3 antilope
IN-Ajour 40 4 nero
Здесь в name взято из торгового предложения IN-Ajour 40 3 antilope один товар, а в описании description взято другое торговое предложение, а не описание товара из карточки товара. Как это настроить правильно.
Оптимально было бы для вас снять несколько роликов с примерами настроек для разных групп (типов) товаров и выложить на YouTube. Ваш оборот и рейтинг вырос бы в РАЗЫ!
О лишних настройках. Лишние настройки для Merchant Center нужны именно под стандарты Google!
Модуль простой и понятный, лишних настроек нет. В более дорогом модуле настроек гораздо больше, но по факту российским магазинам они не нужны. Для интеграции с Adwords этого модуля вполне достаточно.
Поддержка отвечает оперативно.
Пользуемся несколько месяцев.
Здравствуйте.
По умолчанию такой возможности нет, но можно доработать выгрузку.
Нужное свойство можно вытащить методом CIBlockElement::GetProperty
Например:
$znach_svoistva = CIBlockElement::GetProperty($IBLOCK_ID, $row[«ID»], array(«sort» => «asc»), Array(«CODE»=>»ZAGOLOVOK»));
Только вместо ZAGOLOVOK нужно указать код нужного свойства, если инфоблок отличается от стандартного вместо $IBLOCK_ >».yandex_text2xml($znach_svoistva, true).» n»; в файл /bitrix/modules/vsfr.merchant/load/yandex_run.php по аналогии с другими свойствами.
Что бы при обновлении файл не затирался, можно дорабатывать по аналогии со стандартной выгрузкой в яндекс маркет. Т.е. нужно скопировать из папки /bitrix/modules/vsfr.merchant/load файлы yandex_run.php и yandex_setup.php, и перенести их в папку /bitrix/php_interface/include/vsfr.merchant при этом изменив первую часть названия файлов, например, test_run.php и test_setup.php. После этого все изменения нужно будет вносить в файл test_run.php, так изменения не будут затираться. При создании нового профиля нужно будет выбирать тип не yandex, а test.
1.3.1 (18.03.2019) | Исправление model в типе merchant |
1.3.0 (21.02.2019) | Добавлена возможность выбора дополнительных свойств |
1.2.9 (18.02.2019) | Исправлен вывод спецсимволов |
1.2.8 (19.06.2018) | Изменения для сайтов с небольшим количеством оперативной памяти |
1.2.7 (19.03.2018) | Исправлены проблемы с последней версией FireFox |
1.2.6 (14.03.2018) | Изменен вывод базовой валюты |
1.2.5 (02.03.2018) | Добавлен тег g:custom_label_0 Теперь в каждом фиде формируется тег с названием файла файла выгрузки. Тег нужен для разделения фидов по разным кампаниям |
1.2.4 (30.01.2018) | Добавлен тег g:sale_price для товаров со скидками |
1.2.3 (20.10.2017) | Исправлен вывод id для торговых предложений |
1.2.2 (13.09.2017) | Дополнительные правки для автоматической выгрузки через cron |
1.2.1 (13.09.2017) | Правки для автоматической выгрузки через cron |
1.2.0 (23.08.2017) | Добавлена пошаговая выгрузка, изменен способ выбора данных |
1.1.2 (28.06.2017) | Изменен вывод тега для редких настроек каталога |
1.1.1 (16.06.2017) | Изменения для тега Теперь значение тега берется в начале из анонса товара, если его нет, то из подробного описания, если нет и подробного описания, то берется значение meta description. |
1.1.0 (07.06.2017) | Добавления возможность отключить выгрузку недоступных к покупке товаров Добавлен id товара к адресу для торговых предложений |
1.0.9 (05.06.2017) | Изменен протокол выгрузки |
1.0.8 (05.06.2017) | Убраны лишние параметры настроек |
1.0.7 (22.05.2017) | Исправлены проблемы со статусом доступности товаров |
1.0.6 (22.05.2017) | Подправленны ссылки выгрузки |
1.0.5 (15.05.2017) | Исправлена инструкци cron |
1.0.3 (24.10.2016) | Исправления для вывода наличия товаров. |
1. После установки модуль появится в Магазин -> Экспорт в Гугл Мерчант;
2. Перейдите в модуль и создайте новый профиль;
3. Выберите инфоблок для экспорта после чего появятся группы товаров;
4. Отметьте нужные Вам группы товаров;
5. Нажмите кнопку Настроить;
6. В настройках укажите Условие отбора. Например: Все продложения товара;
7. Введите Доменное имя и Имя профиля;
8. Нажмите Сохранить;
9. После сохранения нажмите на имя профиля;
10. После нажатия на имя профиля появится ссылка на файл экспорта в Гугл Мерчант.
Запуск через cron:
Помимо автоматического через меню настроек профиля, можно запускать задачу в ручном режиме. Для этого в файле bitrix/php_interface/include/vsfr.merchant/cron_frame.php нужно заменить #PHP_PATH# на путь к php (строка вида /user/bin/php) и realpath(dirname(__FILE__).’/../../../../’) на путь до корневой папки сайта (строка вида «/home/a/test/public_html/»).
Запустить ssh и в консоли открыть крон для записи командой: crontab -e
После этого прописать в нем строку:
00 00 * * * php -f /home/a/test/public_html/bitrix/php_interface/include/vsfr.merchant/cron_frame.php 2
00 00 * * * — указывается для запуска скрипта в 12 часов ночи ежедневно
php -f указывается для php скрипта
Строку /home/a/test/public_html/ нужно заменить на свой путь до корневой папки сайта
Аргумент 2 в конце строки — нужно заменить на номер id профиля выгрузки. Если агрумент не будет указан, в скрипте будет использован профиль под номером 1
marketplace.1c-bitrix.ru