Одна из самых неочевидных вещей в Битриксе является выгрузка в Яндекс Маркет, или, как это называется в админке – экспорт данных (найти можно зайдя в админку, пункт Магазин -> Настройки -> Экспорт данных). Перед вами список всех стандартных выгрузок. Наша задача, скопировать скрипт в папку/bitrix/php_interface/include/catalog_export/ и открыть его в любом редакторе кода.
Как создать свой файл выгрузки в 1С-Битрикс
Чтобы создать свой файл выгрузки, необходимо скопировать 2 файла, к примеру,yandex_run.php и yandex_setup.php после чего переименовать их как-то на свое усмотрение, но желательно попонятнее. Как видно по этим 2 файлам, yandex это имя, а все что идет дальше, это приставки, именно это имя мы и будем менять. Кстати, будьте внимательны, эти файлы должны быть нормальные по объему, и содержать в себе очень много непонятного на первый взгляд код.
Если в файле будет строка
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/load/yandex_run.php");
или что-нибудь в этом духе, пройдите по указанному пути, и скопируйте оба файла в нашу папку /bitrix/php_interface/include/catalog_export/.
Как выгрузить товары в наличии которые есть на сайте в Яндекс Маркет
Искать мы будем фразу “filter“. Жмем в редакторе Ctrl+F и ищем все что связано с этим словом, у меня нашло порядка 18 совпадений, но нам нужен код такого содержания (у меня 594 строка):
$arSelect = array("ID", "LID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "ACTIVE", "ACTIVE_FROM", "ACTIVE_TO", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "LANG_DIR", "DETAIL_PAGE_URL", 'PROPERTY_CUSTOM_DELIVERY_O'); $filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
В переменную $arSelect у нас попали выбранные поля – это нам не надо. А вот переменная $filter содержит в себе то что мы искали и именно он будет применяться к нашим товарам. Было бы более очевидным, если бы он назывался $arFilter, ну да ладно.
Дописываем наше условие “>CATALOG_QUANTITY” => 0 – что значит КОЛИЧЕСТВО ТОВАРОВ БОЛЬШЕ 0. В итоге получаем:
$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", ">CATALOG_QUANTITY" => 0);
Как выгрузить в Яндекс маркет каталог с торговыми предложениями (SKU) 1С-Битрикс
Тут картина приблизительно такая же, только нам понадобится другая строка (у меня это 870):
$arOfferSelect = array("ID", "LID", "IBLOCK_ID", "ACTIVE", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "DETAIL_PAGE_URL"); $arOfferFilter = array('IBLOCK_ID' => $intOfferIBlockID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'PROPERTY_'.$arOffers['SKU_PROPERTY_ID'] => 0, ">CATALOG_QUANTITY" => 0);
Как вы поняли, я уже сразу добавил необходимое условие. Давайте рассмотрим еще несколько интересных вариантов, как мы можем применять наш фильтр.
Как выгрузить в яндекс маркет товары типа список
Для начала разберемся со свойствами типа список. Вряд ли вы будете проверять на свойство типа строка, поэтому пишем в наш фильтр
$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_395" => 720);
где PROPERTY_395 (тут 395 это ID свойства по которому мы будем фильтровать, можно использовать символьный код свойства, но я предпочитаю ID т.к. изменить ID никак нельзя), а 720 – это вариант из списка (у меня он соответствует варианту Да – например, свойство выгружать товар в маркет).
Как выгрузить только те товары, у которых заполнены цены?
Мы проверяем заполнена ли у товара цена (можно либо больше 0, либо не равно 0). Например, это может пригодится вам, когда выгружаем только оптовый каталог. Представим, что у нас есть тип цены, у которого ID = 3 и называется “Оптовые цена”. Нам нужно вывести все товары с этой ценой. Пишем следующее:
$filter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", ">CATALOG_PRICE_3" => 0);
Как вы поняли, добавилось условии “>CATALOG_PRICE_3″ => 0 (или делаем нашу цену не равной 0 “!CATALOG_PRICE_3″ => 0) сюда же можем дописать наше условие с количеством, а для товаром с SKU добавляем на другой строчке внизу (в $arOfferFilter).