Настройка выгрузки товаров в Яндекс Маркет с сайта Битрикс

Настройка выгрузки товаров в Яндекс Маркет с сайта Битрикс
Просмотров: 17914 | Комментариев: 16

Настройка выгрузки в Яндекс маркет в формате yml, выполняется достаточно просто, кроме одной заморочки: в типовой поставке нет выгрузки "sale_notes" - ныне, обязательного параметра, без которого вашу выгрузку не примут в Яндекс-маркет. Расскажу как его добавить.

Настройка штатной выгрузки

Для начала настроим штатную выгрузку без тега sale_notes. Для этого идем в административную часть сайта, далее: Магазин- Настройки-Экспорт данных. Здесь уже есть готовые пресеты для выгрузок в разных форматах. Но мы создадим новую: нажимаем зеленую кнопку "Добавить профиль" и выбираем Yandex в выпадающем меню

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

Сохраняемся и снова заходим в список выгрузок. На против вновь созданной выбираем в выпадающем списке "Экспортировать". После небольшого или большого ожидания (зависит от объема вашего каталога), сверху вам выдаст ссылку на сгенерированый файл выгрузки. Ее-то и нужно подгрузить в яндекс-маркет


Осталась одна проблема, у товаров не будет тега sale_notes

Добавляем sale_notes в выгрузку битрикс

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

$sales_notes_value = "Предоплата 100 процентов";

И находим часть отвечающую за генерацию тегов, примерно после 873-ей строки (break завершающий генерацию тега "name" с названием товара), вставляем:

case 'sales_notes': $strTmpOff .= "<sales_notes>".yandex_text2xml($sales_notes_value)."</sales_notes>\n"; break;

В общем-то и все, снова генерируем файл выгрузки, и теперь он будет с необходимым тегом. Само собой вместо фразы "Предоплата 100 процентов", вставляете свое условие для продажи товора.

Михаил Базаров
У кого нет файла yandex_run.php Можно найти его в ядре битрикс
Или скачать:  правки уже внесены
Александр
Приветствую! статья хорошая сделать было не сложно, но при экспорте через несколько секунд вылазит
504 Gateway Time-out
nginx

И файла экспорта нет, в чем может быть решения?
С уважением
Михаил Базаров
Цитата
Александр написал:
Приветствую! статья хорошая сделать было не сложно, но при экспорте через несколько секунд вылазит
504 Gateway Time-out  nginx

 И файла экспорта нет, в чем может быть решения?
С уважением
Не хватает производительности хостинга-сервера. Просто отваливается. Перейдите на более производительный, видимо каталог большой (ну или, хостинг совсем дохлый)
Evgeny S
Михаил, заменил вашим файлом yandex_run.php по пути /bitrix/modules/catalog/load/yandex_run.php
Почему-то после экспорта $sales_notes_value не появляется в файле экспорта.
Есть ли еще какие-то еще нюансы настройки?

Да, и у вас авторизация через соц сети не работает. Ошибку выдает
Михаил Базаров
Цитата
Evgeny S пишет:
Михаил, заменил вашим файлом yandex_run.php по пути /bitrix/modules/catalog/load/yandex_run.php
Почему-то после экспорта $sales_notes_value не появляется в файле экспорта.
Есть ли еще какие-то еще нюансы настройки?

Да, и у вас авторизация через соц сети не работает. Ошибку выдает
А зачем вы внесли его в ядро? "Ни когда, ни чего не добавляйте и не убавляйте в ядре системы", примите за правило это...правило

По вопросу

Код
Нужно кастомизировать файл yandex_run.php который расположен по пути /bitrix/php_interface/include/catalog_export
 
Evgeny S
Михаил, спасибо за ответ!
Запомнил это. Мои действия были такими из-за того, что я банально не нашел файл run с таким кодом по пути  /bitrix/php_interface/include/catalog_export.  Но в этом файле подключался файл с ядра, где и был похожий код.

Моя ошибка, упустил слово "кастомизировать" в вашей статье.
Evgeny S
Михаил, в экспорте не появляется $sales_notes_value. Вернул файл ядра на место и вставил ваш файл.  
Есть ли еще какие-то важные настройки, чтобы выводилось это свойство?
Вячеслав
Цитата
Evgeny S пишет:
Михаил, в экспорте не появляется $sales_notes_value. Вернул файл ядра на место и вставил ваш файл.
Есть ли еще какие-то важные настройки, чтобы выводилось это свойство?
case 'sales_notes': $strTmpOff .= "<sales_notes>".yandex_text2xml($sales_notes_value)."</sales_notes>\n"; break;

Нужно вставить в нескольких местах.
Ищите тег <description> и в этом блоке добавляйте
case 'sales_notes': $strTmpOff .= "<sales_notes>".yandex_text2xml($sales_notes_value)."</sales_notes>\n"; break;
Олег Харитонов
Только решил такую же задачу для последней версии файла yandex_run.php
В начале файла прописываем переменную, например
Код
$sales_notes_value = "Наличный и безналичный расчет";
Потом ищем строки (будут встречаться в двух местах)
Код
case 'description':
    $itemsContent .= "<description>". ($offer['DESCRIPTION'] !== '' ? $offer['DESCRIPTION'] : $row['DESCRIPTION'])."</description>\n";
    break;
за ними вставляем следующие строки и все заработает
Код
case 'sales_notes':
        $itemsContent .= "<sales_notes>".$sales_notes_value."</sales_notes>\n";
        break;
misterchet Четвериков
Подскажите, что нужно поменять, что бы в поле description выводило полное описание, а не анонс?
Никита Дубченко
Здравствуйте! Подскажите пожалуйста как добавить в выгрузку поле со штрих-кодом(<barcode>)? Спасибо!
Sergey400
Добрый день! Спасибо за статью. НО... после проделанных операций в файле bitrix/php_interface/... не сохраняются вводимые данные, сбрасываются на те, которые были. Подскажите пожалуйста в чем может быть проблема. Заранее спасибо+кофе с печеньками)
Михаил Базаров
Цитата
Sergey400 написал:
Добрый день! Спасибо за статью. НО... после проделанных операций в файле bitrix/php_interface/... не сохраняются вводимые данные, сбрасываются на те, которые были. Подскажите пожалуйста в чем может быть проблема. Заранее спасибо+кофе с печеньками)
Так тяжело подсказать, но скорее всего у вас просто нет права записи в эту директорию. Попробуйте проделать это не через панель битрикса, а на пряму по FTP/SFTP
dm.sagitov@yandex.ru
Добрый день. Скажите, можно ли загружать в Маркет только выборочные товары, а не разделы?
Михаил Базаров
Цитата
dm.sagitov@yandex.ru написал:
Добрый день. Скажите, можно ли загружать в Маркет только выборочные товары, а не разделы?
Точно не знаю, ни разу не приходилось в этом плане "ковырять"
Но, из быстрого способа: Можно сложить товары в отдельный раздел и выбрать его
По сути, можно назначить товарам два раздела, один настоящий, второй чисто для выгрузки.
Этот второй, вообще не показывать пользователям сайта
Но в ссылках в yml-ке должны вести на основной раздел
Кастор Трой
Не совсем понятно. Если файл yandex_run.php  нельзя править в ядре /bitrix/modules/catalog/load/.
А по пути /bitrix/php_interface/include/catalog_export он есть , но там как раз прописан include  из ядра.
Где же тогда вносить правки?