Страницы

Поиск по вопросам

пятница, 21 июня 2019 г.

Как поулучить элементы каталога из json строки?1с-Bitrix

Дано:
Сервер под управлением centos 6 , там я развернул малый битрикс Также есть http://gw.open.1688.com:80/openapi/param2/1/cn.ali... запрос по которому мы получаем список элементов с сайта 1688.com
Необходимо, на основе полученных данных, в торговом каталоге сайта создать раздел с элементами. Элемент должен содержать цену, свойства, изображения, одним словом все, что есть в выгрузке.
Например, я на чистом битриксе сделаю компонент "КАТАЛОГ", там выведу раздел с элементами, как я понял надо написать какой то скрипт, который берет этот json, проходит по нему циклом и кидает данные через api функции в базу, то бишь после того как скрипт отработал у меня в базе будут товары и строку мусолить больше не нужно?
Вообщем, ребят подскажите плиз как подступиться? как написать этот скрипт? Как правильно вывести каталог?, желательно подробно, с примерами кода если можно) Или документацией


Ответ

у битрикса есть класс Bitrix\Main\Web\HttpClient его можно использовать для получения строки json и затем декодировать
use Bitrix\Main\Web\HttpClient;
$httpClient = new HttpClient($options); $httpClient->get($url); $res = $httpClient->getResult();
try { $ar = json_decode($httpClient->getResult(), true); } catch (\Exception $e){
}
if(is_array($ar)) { # если данные непосредственно в $ar foreach($ar => $product) { # добавление в базу } }
добавление элемента в инфоблок https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/add.php
$el = new CIBlockElement;
$PROP = array(); $PROP[12] = 11;
$arLoadProductArray = Array( "MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем "IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела "IBLOCK_ID" => 18, "PROPERTY_VALUES"=> $PROP, "NAME" => "Элемент", "ACTIVE" => "Y", // активен "PREVIEW_TEXT" => "текст для списка элементов", "DETAIL_TEXT" => "текст для детального просмотра", "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif") );
if($PRODUCT_ID = $el->Add($arLoadProductArray)) { # добавляем информацию для каталога # https://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproduct/add.php
# цены # https://dev.1c-bitrix.ru/api_help/catalog/classes/cprice/add.php
}
для вывода можно воспользоваться стандартным компонентов bitrix:catalog

Комментариев нет:

Отправить комментарий