1. Первым делом, создаём с помощью решения фид с товарами вашего сайта.
2. Открываем в Яндекс.Директ, в левом меню переходим Библиотека->Фиды и нажимаем Добавить фид
3. После нажатия на добавить фид Директ спросит тип фида - выбираем "Загрузить по ссылке"
4. В открывшемся окне импорта фида в поле "Ссылка на файл" указываем ссылку на фид сгенерированный решением, Тип бизнеса указываем Розничная торговля, остальные параметры заполняем на ваше усмотрение если это необходимо и нажимаем Сохранить
5. Фид создастся и Яндекс начнёт загружать ваши товары на платформу. Это может занять продолжительное время
6. После окончания загрузки статус фида сменится на "Успешно загружен"
7. Если нажать на название фида мы увидим несколько примеров товаров из фида
1. Первым делом, создаём с помощью решения фид с товарами вашего сайта.
2. Переходим в Центр коммерции VK Рекламы и нажимаем Создать каталог
3. Выбираем тип нового каталога "Товары"
В параметрах каталога в качестве URL-адрес фида указываем ссылку на фид сгенерированный решением, остальные параметры заполняем на ваше усмотрение и нажимаем Создать каталог.
4. Каталог создастся и VK начнёт загружать ваши товары на платформу. Это может занять продолжительное время
5. После загрузки VK отобразит контентные ошибки фида на вкладке Диагностика. Из можно исправлять редактируя настройки фида, дополняя товары на сайте информацией и т.п.
После исправления корректировок не забывайте, что нужно экспортировать фид в битриксе (если не настроена автоматическая выгрузка) и не забывайте что вк загружает фид не сразу после ваших изменений на сайте, а по своему периоду обновления.
6. Все загруженные в систему товары можно найти на вкладке Товары
Загрузить товары через фид в группы социальной сети ВК можно следующим образом.
Важно: механизм загрузки товаров в группы вк реализован достаточно "сыро".
Автозапроса указанного фида нет (загрузка единоразовая), объяснений ошибок нет. ВК может резать информацию в описании (я сталкивался что где то режутся ссылки, где то нет). ВК может игнорировать часть товаров из фида без объяснения причин.
Данные механики зависят от самого ВК, как то влиять на них модуль не может.
1. Создаём фид с товарами с помощью решения. Обязательно убедитесь что у всех товаров указано описание, если его не будет - вк не примет фид (будет ошибка что фид некорректный)
2. Переходим в сообщество, в которое вы хотите загрузить товары.
Если у вас уже включен блок товары, переходим к следующему шагу. Если блок товары не отображается - включаем отображение товаров в управлении сообществом.
3. Если у вас в сообществе добавлено 0 товаров добавляем любой тестовый товар, просто что бы появилась кнопка все товары, при переходе на по которой можно будет указать ссылку на фид.
После добавления любого товара появится кнопка все товары. Переходим туда
4. На открывшейся странице нажимаем Импорт товаров
В открывшемся окне указываем ссылку на фид и нажимаем Добавить товары
5. После загрузки получим сообщение что товары будут успешно добавлены
Ждём уведомление
6. Ждём модерацию, после модерации товары начнут появляться в сообществе, возможно порционно (у меня после загрузки из 7 отображало 5 товаров, но если поменять сортировку начинало отображать все 7).
Автоматическая выгрузка
Для автоматического обновления фида нужно настроить задание для системы, которое будет автоматически запускать выгрузку
Выгрузка по агенту (рекомендуемый способ)
Данный способ более простой и не требует навыков разработки. С его помощью можно быстро настроить автоматическое обновление фида например каждые 8 часов.
Откройте список профилей выгрузки и найдите нужный профиль. Откройте контекстное меню профиля выгрузки и нажмите "Создать агента"
Далее откроется окно с вводом интервала агента, укажите с каким периодом необходимо обновлять выгрузку:
Дополнительно: Если вы хотите выполнять агенты на 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 детальной страницы в инфоблоке каталога
Пример настройки URL детальной страницы в инфоблоке торговых предложений
Пустой фид без товаров
Переодически пользователи сталкиваются с проблемой. Настройки сделаны, экспорт запущен, файл создался - но в нём нет товаров (тегов <item>). Ниже мы рассмотрим что может влиять на выгрузку в файл конкретных позиций.
1. Цена
Обязательное условие выгрузки товара - наличие цены. Цена должна быть больше нуля. Модуль получает цену автоматически средствами ядра битрикса (CCatalogProduct::GetOptimalPrice)
2. Активность
Товар должен быть активен
3. Опция "Выгружать только доступные к покупке товары"
Проверят признак доступности товара к покупке стандартным функционалом ядра битрикса. Если битрикс считает товар не доступным - товар исключается из выгрузки
4. Опция "Скрыть товары без картинок"
Проверяет наличие картинки у товара. Если картинки нет - товар исключается из выгрузки
5. Опция "Скрыть товары без описаний"
Проверяется наличие описания товара (настраивается в детальных настройках). Если описания нет - товар исключается из выгрузки
6. Опция "Скрыть товары с нулевым Доступным количеством"
Проверяется поле каталога "Доступное количество". Если количество меньше или равно нулю - товар исключается из выгрузки
7. "Выберите группы"
В настройке выгрузки мы выбираем инфоблок и разделы из которых нужно выгружать товары. Выгружаются только товары из разделов, отмеченных галочками.
8. "Отбор товаров по свойствам" в детальных настройках
Если фильтр настроен, все товары не попадающие под фильтр будут исключены из выгрузки
9. "Фильтр по цене" в детальных настройках
Если фильтр настроен, все товары не попадающие под фильтр будут исключены из выгрузки
10. "Настройка выгрузки торговых предложений" в детальных настройках
Данная настройка влияет на выгрузку торговых предложений для товара, торговые предложения не попавшие под данную настройку так же будут исключены из прайса
На данный момент это полный список возможного непопадания в выгрузку товаров.
Наиболее эффективный способ понять почему у вас в фид не попадают товары - отключить вообще все фильтры и сделать выгрузку. Если в фид после этого попали товары - значит проблема в фильтрах, включаем по одному и смотрим. Если нет - то проверяем наличие в товарах цен, флаг активности, выбор разделов и т.п.
В детальных настройках нет кнопки "Сохранить"
Данная проблема замечена на серверах, с установленным серверным модулем 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;
}
}