Как экспортировать отдельные товары в Яндекс-Маркет

Как экспортировать отдельные товары в Яндекс-Маркет

Сегодня я расскажу о простеньком способе экспортировать отдельные товары в Яндекс-Маркет. Способ состоит из четырех пунктов.

1) Необходимо добавить свойство «MARKET» к товарам которые мы хотим выгружать (Контент –> Информ.блоки –> Типы информ. блоков –> Каталоги –> *Выбрать свой каталог*» и перейти на вкладку «Свойства).

Как экспортировать отдельные товары в Яндекс-Маркет

Тип свойства выберем «Список», внешний вид «Флажки»,в ID XML_ID впишем 1, значение по умолчанию «Да».

2) Далее мы перейдем к созданию / редактированию любого товара, вверху нажмем кнопку «Настроить», найдем в «Доступных вкладках» наше созданное свойство «Выгрузка на макет», перетащим ее в нужную вкладку справа и сохраним, предварительно поставив галку в «Установить данные настройки по умолчанию для всех пользователей».
Это нужно для того чтобы контент-менеджеры могли заполнять данное свойство у товаров.

Как экспортировать отдельные товары в Яндекс-Маркет

3) Затем мы создадим агент, который будет через определенное время экспортировать товары, у которых отмечено свойство «Выгрузка на маркет». Файл «export.php», содержащий выбранные товары, будет лежать по адресу ваш_сайт/bitrix/catalog_export/export.php.
Для создания агента перейдем на вкладку «Магазин – Экспорт данных». Выберем «Добавить профиль – Yandex».
Там выбираем наш каталог, ставим галку «Все группы», при необходимости настраиваем «Детальные настройки», выбираем текущее доменное имя, в «Сохранить в файл» пишем export.php, имя профиля задаем «Для маркета» и жмем «Сохранить».
Теперь у нас на вкладке «Магазин – Экспорт данных» появился профиль «Для маркета». Далее мы щелкаем по стрелке у нашего профиля и жмем «Создать агента», выбираем интервал, через который будет обновляться файл для маркета, и жмем «Установить».
У нас должен был появиться агент вот такого вида:

Как экспортировать отдельные товары в Яндекс-Маркет

4) Последнее, что мы сделаем, это внесем ограничение на экспорт товаров в наш файл. Выгружать мы будем только товары с отмеченной опцией «Выгрузка на маркет».
Для этого мы отредактируем файл, лежащий по адресу «ваш сайт – bitrix – modules – catalog – load – yandex_run.php». Найдем в этом файле вот такую строчку:

$strTmpOff.= "<offer id=\"".$arAcc["ID"]."\"".$str_TYPE.$str_AVAILABLE.">\n";" // приблизительно 490 строчка

И перед ней вставим наше условие, чтобы получилось вот так:

   $arRes = CCatalogProduct::GetByIDEx($arAcc["ID"]);
   if ($arRes["PROPERTIES"]["MARKET"]["VALUE_XML_ID"] == "1")
      {

		$strTmpOff.= "<offer id=\"".$arAcc["ID"]."\"".$str_TYPE.$str_AVAILABLE.">\n";

Далее мы после это строчки:

		$strTmpOff.= "</offer>\n"; // приблизительно 583 строчка

Поставим закрывающую скобку для условия:

		$strTmpOff.= "</offer>\n";
      }

Сохраняем файл.

Все. Теперь на маркет будут выгружаться только файлы с отмеченным свойством «Выгрузка на маркет». Добавлю еще то, что при обновлении Битрикса этот файл может «затереться», чтобы этого не произошло нужно создать свой скрипт выгрузки yandex, скопировав соответствующие файлы скрипта (назвать их скажем yandex_custom).

Похожие посты:
  • Напоминание пользователю о появлении товара (Битрикс)
  • Выгрузка заказов в xml файл для курьерской службы
  • Client error: Can t edit post from requested. Ошибка кросспостинга.
  • Отправка письма на почту пользователю при оформлении нового заказа (Битрикс)
  • 19 комментариев: Как экспортировать отдельные товары в Яндекс-Маркет

    1. Дмитрий

      Приветствую Алексей!
      Все сделал как описано, но каталог уже был наполнен, как можно на автомате проставить всем товарам галку нет

      • Лаврушин Алексей

        Если поможет, то код для присваивания определенному свойству всех товаров будет выглядеть как то так:

        < ? $db_res = CCatalogProduct::GetList( array(), array() ); while ($ar_res = $db_res->Fetch())
        {
        CIBlockElement::SetPropertyValues($ar_res["ID"], «3″, «12″, «Status»);
        }
        ?>

        • Дмитрий

          Спасибо большое!
          Алексей не поделитесь опытом или обзором о хостинг площадках на которых лучше размещать битрикс проекты. Я часто рекомендую виртуальные сервера, но они как правило тоже требуют дополнительной настройки.
          Еще было бы интересно, если бы описали как снизить нагрузку, например я знаю статистика битрикса объемная, в ряде проектов администраторы не смотрят в нее, так не лучше бы отрубить ее.

          • Лаврушин Алексей

            Боюсь тут у меня мало опыта. Ну вообще мы пользуемся своими виртуальными серверами как раз. Производим их минимальную настройку.
            По поводу хостингов: я пользовался только hc. А так вообще есть список рекомендуемых хостингов:
            http://www.1c-bitrix.ру/partners/hosting.php?sphrase_id=687354#hosting

            Если под статистикой вы имеете ввиду, модуль веб-аналитики, то да, он дает большую нагрузку. Я слышал(из достоверного источника) цифру 10-15% от всей нагрузки только этот модуль.

    2. Дмитрий

      Вроде разобрался, сразу применяется

    3. Подскажите не могу выбрать группы каталога нет галочки(( что не так

    4. Все сделала, как Вы описали. Вопрос: какой путь указать для «Ссылка на прайс-лист» при регистрации магазина на ЯндексМаркете?

    5. Григорий

      Сделал все так, но для всех товаров, без разницы с галочкой или нет. Все ок работает. Но только не выгружает артикулы товаров, хотя в профиле в Дополнительных свойствах для выгрузки ставлю в свойствах «выводить артикул». Алексей, не поможете что к чему?

    6. Чтобы файл не затерся при обновлении Битрикс рекомендует перенести его в /bitrix/php_interface/include/catalog_export/ – можно под своим именем

    7. Алексей

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

      Строка по дефолту $filter = Array(«IBLOCK_ID»=>IntVal($yvalue), «ACTIVE_DATE»=>»Y», «ACTIVE»=>»Y»);

      Строка после изменения $filter = Array(«IBLOCK_ID»=>IntVal($yvalue), «ACTIVE_DATE»=>»Y», «ACTIVE»=>»Y», «PROPERTY_MARKET_VALUE»=>»значение_свойства»);

    8. Дмитрий

      а как выгрузить в один файл товары из разных инфоблоков?

    9. Евгений

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

    10. Способ крайне кривой. Загружающий сервер втрое больше, чем сама выгрузка… Прав Алексей 23.10.2012 в 14:42 – просто легко и быстро! только строка не 124. Ищите ее через «ACTIVE_DATE». Добавляется запятая, и «PROPERTY_MARKET_VALUE»=>»значение_свойства». Кавычки именно такие! Это вообще не накладывает ограничений. У меня свойство market как список значений. Ложь и истина. Да еще чем так лучше, а не флагом и ручной правкой свойства – Передается из 1С как свойство без доработки выгрузки.

      • Павел

        кавычки прямые – «, а не галочками… нафига тут автозамена стоит – неясно..

    11. кавычки в php прямые! || а не <<

    12. Максим

      Выгрузились товары, но маркет не хочет его принимать, пишет

      Предупреждение: Кодировка XML не определена (строка 0, столбец 0)
      Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: An exception occurred! Type:UTFDataFormatException, Message:invalid byte 2 (�) of a 2-byte sequence. (строка 1, столбец 1)

    13. Здравствуйте, Алексей

      Можно ли применить эту фичу для выгрузки товаров, для которых стоит can_buy (есть на складе)?

    14. Максим

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

      «Добавлю еще то, что при обновлении Битрикса этот файл может «затереться», чтобы этого не произошло нужно создать свой скрипт выгрузки yandex, скопировав соответствующие файлы скрипта (назвать их скажем yandex_custom).»

      Какие файлы и куда скопировать что б при этом все работало

    Добавить комментарий:

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: