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

Просмотров: 25270 | Комментариев: 17

Настройка выгрузки в Яндекс маркет в формате 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
Михаил, заменил вашим файлом 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
Михаил, спасибо за ответ!
Запомнил это. Мои действия были такими из-за того, что я банально не нашел файл run с таким кодом по пути  /bitrix/php_interface/include/catalog_export.  Но в этом файле подключался файл с ядра, где и был похожий код.

Моя ошибка, упустил слово "кастомизировать" в вашей статье.
Evgeny
Михаил, в экспорте не появляется $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;
Подскажите, что нужно поменять, что бы в поле description выводило полное описание, а не анонс?
Здравствуйте! Подскажите пожалуйста как добавить в выгрузку поле со штрих-кодом(<barcode>)? Спасибо!
Добрый день! Спасибо за статью. НО... после проделанных операций в файле bitrix/php_interface/... не сохраняются вводимые данные, сбрасываются на те, которые были. Подскажите пожалуйста в чем может быть проблема. Заранее спасибо+кофе с печеньками)
Михаил
Цитата
Sergey400 написал:
Добрый день! Спасибо за статью. НО... после проделанных операций в файле bitrix/php_interface/... не сохраняются вводимые данные, сбрасываются на те, которые были. Подскажите пожалуйста в чем может быть проблема. Заранее спасибо+кофе с печеньками)
Так тяжело подсказать, но скорее всего у вас просто нет права записи в эту директорию. Попробуйте проделать это не через панель битрикса, а на пряму по FTP/SFTP
Добрый день. Скажите, можно ли загружать в Маркет только выборочные товары, а не разделы?
Михаил
Цитата
dm.sagitov@yandex.ru написал:
Добрый день. Скажите, можно ли загружать в Маркет только выборочные товары, а не разделы?
Точно не знаю, ни разу не приходилось в этом плане "ковырять"
Но, из быстрого способа: Можно сложить товары в отдельный раздел и выбрать его
По сути, можно назначить товарам два раздела, один настоящий, второй чисто для выгрузки.
Этот второй, вообще не показывать пользователям сайта
Но в ссылках в yml-ке должны вести на основной раздел
Не совсем понятно. Если файл yandex_run.php  нельзя править в ядре /bitrix/modules/catalog/load/.
А по пути /bitrix/php_interface/include/catalog_export он есть , но там как раз прописан include  из ядра.
Где же тогда вносить правки?
Александр
Михаил, спасибо за статью! Все получилось!
А  не подскажете, как добавить в выгрузку второй вид цен?
У меня розничная и оптовая цена. Оптовую нужно тоже выгрузить.
Михаил
Цитата
Александр Ульянов написал:
Михаил, спасибо за статью! Все получилось!
А  не подскажете, как добавить в выгрузку второй вид цен?
У меня розничная и оптовая цена. Оптовую нужно тоже выгрузить.
Статья немного старовата, попробуйте вот эту штуку
https://marketplace.1c-bitrix.ru/solutions/yandex.market/
Она официальная и достаточно гибкая в плане настроек- думаю, все получится

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

Показать еще