Готовые решения для 1С-Битрикс
Карточка решения
База знаний по решению:
Экспорт каталога товаров в Google Merchant

Все часто задаваемые вопросы по решению: Экспорт каталога товаров в Google Merchant

Платформы

Загрузка товаров в VK Реклама

Загрузить фид в VK Рекламу достаточно просто.

1. Первым делом, создаём с помощью решения фид с товарами вашего сайта. При создании, в настройках профиля выгрузки выбираем Тип выгрузки: VK Реклама (видео-инструкция по установке решения и созданию фида)

2. Переходим в Центр коммерции VK Рекламы и нажимаем Создать каталог

Создание каталога VK Реклама

3. Выбираем тип нового каталога "Товары"

Тип каталога VK Реклама


В параметрах каталога в качестве URL-адрес фида указываем ссылку на фид сгенерированный решением, остальные параметры заполняем на ваше усмотрение и нажимаем Создать каталог.

Параметры создания каталога VK Реклама

4. Каталог создастся и VK начнёт загружать ваши товары на платформу. Это может занять продолжительное время

Процесс загрузки каталога VK Реклама

5. После загрузки VK отобразит контентные ошибки фида на вкладке Диагностика. Из можно исправлять редактируя настройки фида, дополняя товары на сайте информацией и т.п.

Контентные ошибки в фиде каталога VK Реклама

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

Период обновления каталога VK Реклама

6. Все загруженные в систему товары можно найти на вкладке Товары

Список загруженных товаров VK Реклама






Загрузка товаров в Google Merchant


Загрузка товаров в Яндекс.Директ

Загрузить фид в Яндекс.Директ достаточно просто.

1. Первым делом, создаём с помощью решения фид с товарами вашего сайта. При создании, в настройках профиля выгрузки выбираем Тип выгрузки: Яндекс.Директ (видео-инструкция по установке решения и созданию фида)

2. Открываем в Яндекс.Директ, в левом меню переходим Библиотека->Фиды и нажимаем Добавить фид

Переход в список фидов яндекс директ

3. После нажатия на добавить фид Директ спросит тип фида - выбираем "Загрузить по ссылке"

Загрузка фида по ссылке яндекс директ

4. В открывшемся окне импорта фида в поле "Ссылка на файл" указываем ссылку на фид сгенерированный решением, Тип бизнеса указываем Розничная торговля, остальные параметры заполняем на ваше усмотрение если это необходимо и нажимаем Сохранить

Параметры загрузки фида в яндекс директ

5. Фид создастся и Яндекс начнёт загружать ваши товары на платформу. Это может занять продолжительное время
 

6. После окончания загрузки статус фида сменится на "Успешно загружен"

Успешно загружен фид

7. Если нажать на название фида мы увидим несколько примеров товаров из фида

Товары загруженные фидом яндекс директ

Загрузка товаров в Facebook / Instagram

Размещение каталога для использования в Instagram* происходит в интерфейсе Facebook*. Разместив каталог и выполнив настройки вы сможете получить доступ к возможностям Instagram* Shopping

Дополнительные советы:



1. При создании магазина в Facebook рекомендуется выбирать Способ оформления заказа - "Оформление заказа на другом сайте".

s1.png

Если вы выбираете "Написать продавцу", обязательно заполняйте поле Запасы (inventory), иначе все товары будут иметь статус "нет в наличии".




Видео инструкция по созданию бизнес страницы на Facebook, вкладки магазин и загрузке каталога из фида:



Автоматическая выгрузка

Для автоматического обновления фида нужно настроить задание для системы, которое будет автоматически запускать выгрузку

Выгрузка по агенту (рекомендуемый способ)


Данный способ более простой и не требует навыков разработки. С его помощью можно быстро настроить автоматическое обновление фида например каждые 8 часов.

Откройте список профилей выгрузки и найдите нужный профиль. Откройте контекстное меню профиля выгрузки и нажмите "Создать агента"


screen1.png

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

screen1.png


Дополнительно: Если вы хотите выполнять агенты на cron необходимо перевести запуск агентов по cron согласно инструкции от 1с-Битрикс. На большинстве проектов данный перевод уже выполнен, т.к. является рекомендуемым.


Через крон-задачу (потребуется помощь разработчика)


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

Шаг 1. Создаём php скрипт генерирующий выгрузку. Ниже пример скрипта

#!/usr/bin/php <?php $_SERVER["DOCUMENT_ROOT"] = "/home/hosting/www"; // В этой переменной укажите корректный DOCUMENT_ROOT $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"]; define('STOP_STATISTICS', true); define('NOT_CHECK_PERMISSIONS', true); define('NO_AGENT_CHECK', true); set_time_limit(0); @ignore_user_abort(true); define("LANG", "s1"); // В этой константе укажите корректный SITE_ID require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); CCatalogExport::PreGenerateExport(1); // вместо 1 укажите корректный айди вашего профиля require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); ?>

Шаг 2. Устанавливаем на крон. Ниже пример крон задачи

30 18 * * * /usr/bin/php -f /home/bitrix/www/cron/exportgoogle.php




Гид по фильтрам

Модуль поддерживает фильтрацию товаров, попадающих в файл выгрузки. В этой статье вы сможете найти примеры и подсказки по настройке типовых фильтров.

1. Фильтр товаров по цене

Данный тип поможет выгружать товары в определенном интервале цены. Для настройки нужно открыть профиль выгрузки на редактирование, перейти в детальные настройки на вкладку "Цены и отбор товаров".

gmerchant-filter-price.png

В примере вы можете увидеть фильтр для выгрузки товаров с ценой от 500 до 3000. Валюта фильтра равна валюте выгрузки. Если товары выгружаются в рублях - фильтр так же учитывает цены в рублях.

2. Скрытие товаров Недоступных для покупки / Без картинок / Без описаний / С нулевым доступным количеством

Эти фильтры самые часто используемые, поэтому вынесены в общие настройки профиля

а) Не выгружать недоступные к покупке товары - позволяет не выгружать товары недоступные для покупки (товары у которых Доступное количество = 0 и Разрешить покупку при отсутствии товара = Нет). Для работы опции должен быть включен складской учёт

б) Не выгружать товары без картинок - позволяет скрыть товары у которых нет изображений

в) Не выгружать товары без описаний - позволяет скрыть товары у которых нет описания

г) Не выгружать товары с нулевым доступным количеством - позволяет не выгружать товары у которых количество на складе равно или меньше нуля (Может быть полезна при отключенном складском учёте)

gmerchant-filter-fast.png

3. Фильтр по полям и свойствам товаров

Фильтр по свойствам позволяет формировать более сегментированные выгрузки. Найти данный фильтр можно в детальных настройках, на вкладке "Цены и отбор товаров".

а) Выбрать товары сделанные из хлопка или льна или дерева

example1.png

б) Выбрать товары новинки бренда "Фэшн хаус"

ex2.png

в) Выбрать товары к которых количество комментариев больше 3х

ex3.png



4. Фильтр торговых предложений по свойству

Решение поддерживает стандартный отбор торговых предложений. Найти данный фильтр можно в детальных настройках, на вкладке "Цены и отбор товаров" - для его отображения и заполнения в пункте "Настройка выгрузки торговых предложений" выберите Условие отбора = Отбор по свойству, после чего настройка отбора по торговым предложения

ex4.png


5. Сложные фильтры

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

Справка по полям

<gtin>, <mpn>, <identifier_exists>

Очень часто пользователи сталкиваются с проблемой - Google Merchant отклоняет товары по причине отсутствия gtin.
GTIN - международный идентификатор товара (штрихкод), по правилам он должен быть заполнен. Если по какой то причине у продукции вообще нет штрихкода - то следует указать MPN - код производителя товара.
Политика Google в данном вопросе достаточно жесткая - у загружаемых товаров должен быть указан GTIN или MPN и в большинстве случаев это ограничение не пройти. Без gtin/mpn мерчант пропускает только товары не серийного производства, товары ручной работы и т.п.

Обмануть Мерчант сложно - он использует алгоритмы определяющие по названию товара, возможно ли найти штрихкод у данного товара. И если оказывается, что существует, а у вас он отсуствует - товар будет отклонен, даже если у вас указан аттрибут identifier_exists = no.

identifier_exists
Параметр identifier_exists = no решение проставляет автоматически, если не заполнен ни gtin, ни mpn. Настройка не требуется

Достаточно неплохой сервис для поиска и валидации штрихкодов по названию: https://www.barcodelookup.com/

Настройка <availability>

Атрибут availability используется, чтобы указать, доступен ли товар для покупки и имеет 3 возможных значения: in stock [в наличии], out of stock [нет в наличии], preorder [предзаказ]. Обязательный атрибут

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

Значение по умолчанию

Если в детальных настройках для данного поля не выбрано соответствие - значение availability будет выведено на основе флага битрикса CATALOG_AVAILABLE. Если товар доступен для покупки - in stock, если нет - out of stock


Как поменять значение?

Поменять источник данных для параметра availability можно в детальных настройках профиля. В качестве источника может быть:
- Флаг доступности к покупке битрикса (CATALOG_AVAILABLE)
- Доступное количество товара битрикса (CATALOG_QUANTITY)
- Свойство типа число (при положительном числе в свойстве в фид будет добавлено in stock, в противоположном случае out of stock)
- Свойство типа строка с true/false в значениях (true будет преобразовано in stock, false в out of stock)
- Свойство типа строка с Y/Nв значениях (Y будет преобразовано in stock, N в out of stock)
- Свойство типа строка со значениями in stock / out of stock

Дополнительно в настройках решения есть "Настройки соответствия availability" - для приведения ваших значений к in stock/out of stock

availability_for_merchant.png


Как установить всем товарам значение в наличии?

Для установки значения для всех товаров фида, в настройке соотвествия выберите пункт "Произвольное значение из поля ввода" и введите в появившемся поле "in stock". Данное значение пропишется сразу для всех товаров фида.

all_in_stock.png



Настройка <google_product_category> и <fb_product_category>

Для большего удобства использования модуля, в решение добавлен функционал установки поля <g:google_product_category> для категории каталога. Больше не потребуется заполнять данное поле для каждого товара или использовать общее значение для всех!

Видео-инструкция по настройке google_product_category



Как настроить google_product_category для разделов?


1. Добавить пользовательское поле для раздела

Откройте на изменение любой раздел выгружаемого каталога:


Перейдите на вкладку "Доп. поля" и нажмите "Добавить пользовательское свойство":

scr2.png

При создании укажите следующие значения:
Тип данных = Строка
Код поля = UF_GM_PCATEGORY
Подпись в форме редактирования = Категория Google Merchant

Остальные предложенные поля редактировать не нужно

scr3.png

2. Заполните поле в соответствии со справочником Google

Актуальный справочник Google можно скачать по ссылке. В поле указывайте айди из первой колонки файла.

scr-5.png


3. В настройках профиля обмена в поле "Категория товара в google" выберите "Из настроек раздела"

scr4.png


4. Сохраните настройки и обновите выгрузку

Если всё сделано правильно - в файл подтянется информация из нового поля


- - - - - - - - - - -

Как настроить fb_product_category для разделов?


1. Добавить пользовательское поле для раздела

Откройте на изменение любой раздел выгружаемого каталога:


Перейдите на вкладку "Доп. поля" и нажмите "Добавить пользовательское свойство":

scr2.png

При создании укажите следующие значения:
Тип данных = Строка
Код поля = UF_GM_FPCATEGORY
Подпись в форме редактирования = Категория Facebook

Остальные предложенные поля редактировать не нужно

scr3.png

2. Заполните поле в соответствии со справочником Facebook

Актуальный справочник Facebook можно найти в официальной документации . В поле указывайте category_id из файла.

scr-5.png


3. В настройках профиля обмена в поле "Категория товара в Facebook" выберите "Из настроек раздела"

scr4.png


4. Сохраните настройки и обновите выгрузку

Если всё сделано правильно - в файл подтянется информация из нового поля


Типовые проблемы и их решение

Некорректная ссылка в <link>

Одной из наиболее частых проблем является отсутствие либо неверная ссылка на карточку товара в элементе <link>.

Для решения данной проблемы необходимо правильно настроить шаблоны URL в инфоблоке каталога и торговых предложений. Обратите внимание - данные настройки нужно делать в соовествии с реализацией ЧПУ вашего каталога товаров.


Пример настройки URL детальной страницы в инфоблоке каталога

screen1.png


Пример настройки URL детальной страницы в инфоблоке торговых предложений

screen1.png

Пустой фид без товаров

Переодически пользователи сталкиваются с проблемой. Настройки сделаны, экспорт запущен, файл создался - но в нём нет товаров (тегов <item>). Ниже мы рассмотрим что может влиять на выгрузку в файл конкретных позиций.

1. Цена
Обязательное условие выгрузки товара - наличие цены. Цена должна быть больше нуля. Модуль получает цену автоматически средствами ядра битрикса (CCatalogProduct::GetOptimalPrice)

2. Активность
Товар должен быть активен

3. Опция "Выгружать только доступные к покупке товары"
Проверят признак доступности товара к покупке стандартным функционалом ядра битрикса. Если битрикс считает товар не доступным - товар исключается из выгрузки

4. Опция "Скрыть товары без картинок"
Проверяет наличие картинки у товара. Если картинки нет - товар исключается из выгрузки

5. Опция "Скрыть товары без описаний"
Проверяется наличие описания товара (настраивается в детальных настройках). Если описания нет - товар исключается из выгрузки

6. Опция "Скрыть товары с нулевым Доступным количеством"
Проверяется поле каталога "Доступное количество". Если количество меньше или равно нулю - товар исключается из выгрузки

7. "Выберите группы"
В настройке выгрузки мы выбираем инфоблок и разделы из которых нужно выгружать товары. Выгружаются только товары из разделов, отмеченных галочками.

otbor_grupp.png


8. "Отбор товаров по свойствам" в детальных настройках
Если фильтр настроен, все товары не попадающие под фильтр будут исключены из выгрузки

otbor_svojstva.png


9. "Фильтр по цене" в детальных настройках
Если фильтр настроен, все товары не попадающие под фильтр будут исключены из выгрузки

filtr_price.png


10. "Настройка выгрузки торговых предложений" в детальных настройках
Данная настройка влияет на выгрузку торговых предложений для товара, торговые предложения не попавшие под данную настройку так же будут исключены из прайса

otbor_predlozheniy.png



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

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



В детальных настройках нет кнопки "Сохранить"

Данная проблема замечена на серверах, с установленным серверным модулем pagespeed

После установки модуля pagespeed некоторые скрипты ядра битрикса (JavaScript) начинают работать не верно и выдают ошибки.

Данная проблема распространяется не только на мой модуль, но и на весь раздел экспорта, включая стандартные скрипты (к примеру Yandex).

Рекомендация: т.к. после обработки скрипты админки работают не верно, нужно настроить модуль pagespeed таким образом, что бы он не обрабатывал папку /bitrix/ и всё что внутри её, либо отключить его

Формирование и выгрузка цен

Вопрос:
У нас в магазине используется несколько типов цен. В настройках выгрузки мы выбрали определенный тип цен, но в прайс попадает базовая/другая цена.

Ответ:
При разработке функционала разных цен, разработчики им чаще всего используют событие OnGetOptimalPrice влияющее на отдачу цены товара. Это событие влияет на стандартную функцию CCatalogProduct::GetOptimalPrice, с помощью которой модуль получает цену товаров.

Для корректной отдачи цены в прайс обработчик OnGetOptimalPrice должен корректно реагировать на ситуацию, когда заполнен пятый параметр $arPrices (который определяет запрашиваемый тип цен) и выдавать запрошенный тип цены. Либо данный обработчик должен быть отключен в административной части сайта.


Разработчикам

Правильная кастомизация скриптов выгрузки

В разработке решения я стараюсь максимально охватить возможности ядра битрикса, типовые и распространенные реализации и в подавляющем большинстве случаев всё необходимое можно сделать через настройки.

Но под все возможные реализации на разных сайтах подстроиться невозможно. В некоторых случаях возникает необходимость в кастомизации скриптов выгрузки.
Редактировать исходный код решения не запрещено, но важно понимать несколько вещей:
  • Техническая поддержка не распространяется на кастомизированные решения (только информационная)
  • При неправильной кастомизации обновления решения могут затереть ваш измененный код
  • После обновлений решения вам самим необходимо следить за целостностью работы решения

Как правильно кастомизировать скрипт решения формирующий выгрузку?

1. Скопируйте содержимое /bitrix/modules/arturgolubev.gmerchant/load/googlemerchant_run.php в /bitrix/php_interface/include/catalog_export/merchantgl_run.php

2. Проследите что бы в файле /bitrix/php_interface/include/catalog_export/merchantgl_run.php осталась строчка //<title>Google Merchant Center</title>

3. Редактируйте код в файле /bitrix/php_interface/include/catalog_export/merchantgl_run.php - в этом файле можно поменять всё что связано с формированием фида - отбор товаров, состав и значения тегов. При обновлении решения ваши изменения не затрутся

Событие: Изменение фильтров

События представляют собой пользовательский код, позволяющий вносить изменения в логику решения без кастомизации.

Разработчик решения не несёт отвественности, за некорректно настроенные другими разработчиками события.
Настройка пользовательских событий не входит в стандартную техническую поддержку решения.

Решение поддерживает события корректировки фильтра товаров непосредственно перед выполнением запроса. С помощью данных событий можно максимально гибко настроить фильтр, например для сложных выборок.

Для товаров и торговых предложений предусмотрены разные события:

onAfterPrepareProductFilter - событие для корректировки фильтра товаров

onAfterPrepareSkuFilter - событие для корректировки фильтра торговых предложений

События срабатывают когда решение сформировало фильтры по своим правилам и готово переходить к запросу элементов.


Примеры применения событий:


В примере событие смотрит адрес формируемого файла и устанавливает фильтр по количеству доступных товаров.
AddEventHandler('arturgolubev.gmerchant', "onAfterPrepareProductFilter", "onAfterPrepareProductFilterCallback"); function onAfterPrepareProductFilterCallback(&$filter, $options){ if($options["file"] == '/bitrix/catalog_export/google_example.xml'){ $filter[">CATALOG_QUANTITY"] = 0; } } AddEventHandler('arturgolubev.gmerchant', "onAfterPrepareSkuFilter", "onAfterPrepareSkuFilterCallback"); function onAfterPrepareSkuFilterCallback(&$filter, $options){ if($options["file"] == '/bitrix/catalog_export/google_example.xml'){ $filter[">CATALOG_QUANTITY"] = 0; } }



* Meta, которой принадлежит Instagram и Facebook, признана в России экстремистской организацией