176

Получение товаров из категории на сайте Bitrix

Функция позволяет получить список товаров с сайта, работающего на платформе Битрикс, по заданным параметрам поиска. Вы можете указать URL сайта и параметры для фильтрации товаров.

Для работы функции создайте в корне сайта файл `api_products.php` со следующим кодом:
```
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// Проверка, что запрос является POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
die(json_encode(array("error" => "Only POST requests are allowed")));
}

// Подключение необходимых модулей
CModule::IncludeModule("iblock");

// Получение параметров из POST-запроса
$postData = json_decode(file_get_contents('php://input'), true);

$site_url = $postData['site_url'] ?? null;
$searchName = $postData['name'] ?? '';
$categoryId = $postData['category_id'] ?? null;
$minPrice = $postData['min_price'] ?? null;
$maxPrice = $postData['max_price'] ?? null;

// Формирование фильтра
$arFilter = array(
"IBLOCK_ID" => 2,
"ACTIVE" => "Y"
);

if (!empty($searchName)) {
$arFilter["%NAME"] = $searchName;
}

if ($categoryId) {
$arFilter["SECTION_ID"] = $categoryId;
$arFilter["INCLUDE_SUBSECTIONS"] = "Y";
}

// Выборка товаров
//$arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PROPERTY_PRICE", "CATALOG_QUANTITY");
$arSelect = array("*", "PROPERTY_*");
$arResult = array();

$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);

while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
$imageUrl = CFile::GetPath($arFields["DETAIL_PICTURE"]);

$arFilter = array("PRODUCT_ID" => $arFields["ID"]);
$price = CPrice::GetList(array(), $arFilter)->Fetch();
$productPrice = $price["PRICE"];

if ($minPrice !== null) {
if ($productPrice < $minPrice) {
continue;
}
}

if ($maxPrice !== null) {
if ($productPrice > $maxPrice) {
continue;
}
}

// Проверяем, начинается ли URL с "/upload/"
if (strpos($imageUrl, '/upload/') === 0) {
$imageUrl = $site_url . $imageUrl;
}

$arResult[] = array(
```

Параметры, которые можно передать в функцию get_products_bitrix:

site_url - URL сайта для поиска товаров без / в конце.
paraments - параметры поиска в виде: name:id:min_price:max_price:limit##name:id:min_price:max_price:limit##.
- name - название товара может быть прочерком - для поиска без названия .
- id - ID категории товара.
- min_price - минимальная цена товара.
- max_price - максимальная цена товара.
- limit - сколько товаров должно быть в ответе. По умолчанию 10.

Примеры использования:

"Пожалуйста, покажи мне товары с сайта https://example.com с параметрами: электроника:-:100:1000:5##одежда:2:50:500:10##."

"Получить список товаров с сайта https://myshop.com, где название товара - и ID категории 3, с минимальной ценой 200 и максимальной 1500."

© ProTalk 2023-2025 ИП Горелов Максим Николаевич ИНН 500104951533 ОГРН 309500106900065 

Новая, 8, 9 Реутов, Московская область 143964 Россия