yandex

Всем привет! Последнее время по работе часто приходили задачи по экспорту XML для разных сервисов, в частности для яндекс маркета и google merchant. Вообще для большинства сторонних решений подойдет YML выгрузка для яндекса, что очень даже приятно.

В битриксе из коробки доступен функционал для экспорта YML файла: Магазин->Настройки->Экспорт данных.

Здесь по дефолту нам доступно несколько обработчиков для создания профилей — один из них yandex, как раз он и отвечает за выгрузку для яндекс маркета. Нам нужно лишь создать профиль, использовав данный обработчик, и настроить его под себя. В большинстве случаев стандартных настроек оказывается достаточно, но иногда необходимо немного кастомизировать саму выгрузку. Как это сделать?

1. Кастомизируем выгрузку для яндекс маркета YML

Конечно же, в битриксе предусмотрена возможность изменения логики для экспорта. Находим файл /bitrix/php_interface/include/catalog_export/yandex_run.php и видим там такое содержимое:

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

Часто возникает ситуация, когда в выгрузку должны попасть товары с каким-то отмеченным свойством. В такой ситуации просто ищем нужный нам GetList внутри yandex_run.php и дописываем в массив фильтра значения для фильтрации. И еще будьте внимательны с кодировкой файла, частенько она в windows-1251.

Кстати XML файлы после экспорта хранятся в этой папке /bitrix/catalog_export. Можно открыть и посмотреть, что у нас выгрузилось.

2. Создаем свой обработчик для экспорта XML данных в bitrix

Для этого достаточно создать 2 файла:

  1. Файл, который формирует сам xml
  2. И файл, отвечающий за настройки в админке

Файлы должны называться следующим образом (имя обработчика)_run.php, и (имя обработчика)_setup.php соответственно. Для примера содержимое файлов для начала можно скопировать из /bitrix/php_interface/include/catalog_export/yandex_simple_setup.php и /bitrix/php_interface/include/catalog_export/yandex_simple_run.php — эти файлы отвечают за обработчик yandex_simple, что означает упрощенную выгрузку для яндекс маркета. Не забывайте, что имя вашего обработчика должно быть уникальным и не повторять других.

Кидаем созданные файлы в папку /bitrix/php_interface/include/catalog_export и правим их как нам надо. После этого наш новый обработчик появится в списке обработчиков в админке сайта:

export

На этом все. Теперь при создании профиля мы можем использовать наш собственный обработчик.

3. Выгрузка для google мерчант в bitrix — готовый вариант

В предыдущей главе я рассказал, как создавать свои обработчики для экспорта. Логично, что для гугл мерчанта нам просто нужно создать свой обработчик. В общем не буду никого долго мучать и выложу готовый вариант для выгрузки в гугл, а именно архив с четырьмя файлами, который нужно распаковать в папку /bitrix/php_interface/include/catalog_export. 

Скачать архив

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

4. Ставим экспорт в яндекс маркет и гугл мерчант на крон в битрикс

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

За исполнение профилей в битриксе отвечает файл /bitrix/php_interface/include/catalog_export/cron_frame.php. То есть его нужно поставить на крон для исполнения, чтобы наши профили выгружались по расписанию. Но для начала его нужно правильно настроить, а именно вписать нужные константы.

Итак, открываем cron_frame.php и редактируем следующие строки.

cron_frame

В первой строке нужно заменить выделенный путь на путь к интерпретатору php на вашем сервере. Возможно он будет такой же как в представленном файле, а возможно нет. Как узнать этот путь? В php скрипте можно узнать с помощью команды

В 9-ой строке нужно вставить свой путь к сайту на сервере. Из под php скрипта узнать его можно так:

В 12-ой строке нужно вписать id своего сайта вместо #SITE_ID# — обычно он равняется «s1» (если сайт один).

C настройкой cron_frame закончили. Теперь разберемся как поставить файл на крон.

Допустим нам нужно поставить профиль под номером 2 на исполнение. Заходим в менюшку и нажимаем «привязать к крону», заполняем необходимые поля и нажимаем ОК. Ниже на скрине это показано подробнее:

cron_1

Кстати внизу есть подсказка о том, как правильно поставить наши профили к крону. После того, как мы установили нужный нам профиль на крон — это еще не все. Это действие лишь записывает команду для крона в конфигурационный файл крона crontab.cfg. Теперь «крону» на сервере нужно показать, чтобы именно этот файл он использовал для команд. Для этого нужно подключиться к сервере через ssh протокол и выполнить следующую команду (указано стрелочкой), которую вы можете найти чуть ниже, на странице списка профилей, в окне подсказки:

cron2

Будьте внимательны, если до этого у вас были поставлены какие-то задачи на крон — они сотрутся. Если вам надо поставить несколько профилей на крон, то привязываем нужный вам профиль через админку, как мы это делали выше. Файл cron_frame настраивать больше не надо, а также выполнять какие-либо команды на сервере. Это надо сделать лишь один раз.

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