Готовые решения для 1С-Битрикс
Карточка модуля

Выгрузка каталога товаров в YML

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

Платформы

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

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

1. Первым делом, создаём с помощью решения фид с товарами вашего сайта.

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

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

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

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

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

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

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

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

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

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

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

Загрузка товаров в Яндекс Товары

Загрузить товары через фид в Яндекс Товары можно следующим образом.

1. Создаём фид с товарами с помощью решения.

2. Для загрузки каталога в Яндекс Товары ваш сайт должен быть зарегистрирован в Яндекс Вебмастер.

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

Выбор сайта в вебмастере и переход к яндекс товарам

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

Ошибка сайт не интернет магазин

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

4. Если с точки зрения яндекса сайт является интернет-магазином, требования не нарушены откроется интерфейс Яндекс Товаров.

Переходим в Товары, открываем вкладку Фиды и нажимаем Добавить 

Куда загружать фид в яндекс товарах


5. После нажатия откроется окно добавления фида, заполните данные, нажмите добавить.

Добавление фида

6. После добавления яндекс загрузит информацию из фид. Появится информация что фид на проверке.

Фид на проверке
Перед добавлением товаров в сервис, Яндекс проверяет интернет магазины. Будьте готовы к проверкам:
  • на сайте должна быть возможность добавить товары в корзину и купить
  • телефоны на сайте должны отвечать
  • ассортимент должен быть реальным
  • цены которые озвучиваются покупателям должны соотвествовать заявленным




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

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

1. Первым делом, создаём с помощью решения фид с товарами вашего сайта.

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

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

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

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


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

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

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

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

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

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

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

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

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

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






Загрузка товаров в Социальную сеть VK (группы)

Загрузить товары через фид в группы социальной сети ВК можно следующим образом.
Важно: механизм загрузки товаров в группы вк реализован достаточно "сыро".

Автозапроса указанного фида нет (загрузка единоразовая), объяснений ошибок нет. ВК может резать информацию в описании (я сталкивался что где то режутся ссылки, где то нет). ВК может игнорировать часть товаров из фида без объяснения причин.

Данные механики зависят от самого ВК, как то влиять на них модуль не может.
1. Создаём фид с товарами с помощью решения. Обязательно убедитесь что у всех товаров указано описание, если его не будет - вк не примет фид (будет ошибка что фид некорректный)

2. Переходим в сообщество, в которое вы хотите загрузить товары.

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

Включаем-товары-в-сообществе-вк

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

тестовый-товар

После добавления любого товара появится кнопка все товары. Переходим туда

все-товары

4. На открывшейся странице нажимаем Импорт товаров

вк-импорт-товаров

В открывшемся окне указываем ссылку на фид и нажимаем Добавить товары

фид


5. После загрузки получим сообщение что товары будут успешно добавлены

загрузка-фида-успех


Ждём уведомление

уведомление

6. Ждём модерацию, после модерации товары начнут появляться в сообществе, возможно порционно (у меня после загрузки из 7 отображало 5 товаров, но если поменять сортировку начинало отображать все 7). 

товары



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

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

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


Данный способ более простой и не требует навыков разработки. С его помощью можно быстро настроить автоматическое обновление фида например каждые 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




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

Некорректная ссылка в <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.yml/load/yml_run.php в /bitrix/php_interface/include/catalog_export/ag_yml_run.php

2. Проследите что бы в файле /bitrix/php_interface/include/catalog_export/ag_yml_run.php осталась строчка //<title>Yandex YML Pro</title>

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

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

События это заложенная разработчиком возможность вносить изменения в логику решения без кастомизации (с сохранением обновлений)

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

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

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

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

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

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


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


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



Сайт использует сookie - они помогают делать сайт удобнее. Вы можете запретить обработку сookies в настройках браузера. Политика конфиденциальности и cookie
Принять