Полезные наработки для getList запросов. Выборка CIBlockElement::GetList — PROG-TIME

Полезные наработки для getList запросов. Выборка CIBlockElement::GetList

26.10.2021
Содержание:

GetList запрос получает элементы инфоблока, свойства товаров, свойства корзины и прочую информацию из базы данных сайта. Делает он это по заданным параметрам фильтрации и сортировки. Я новой записи я буду собирать куски кода которые я часто использую при работе с методом getList.

Как получить список похожих товаров в карточке товара

Пример взят с мебельного интернет-магазина. Здесь я просто проверяю наличие заполненного параметра и в фильтр метода getList записываю записываю только самые популярные свойства и значения. В моём случае это механизм, цвет, материал и стиль.

Для указания своего свойства вам нужно создать похожий ключ PROPERTY_КОДСВОЙСТВА_VALUE

/* цвет товара */
if($arResult["PROPERTIES"]["TSVET"]["VALUE"]) {
	$arFilter["PROPERTY_TSVET_VALUE"] = $arResult["PROPERTIES"]["TSVET"]["VALUE"];
}
/* механизм дивана */
if($arResult["PROPERTIES"]["MEKHANIZM_DIVANY"]["VALUE"]) {
	$arFilter["PROPERTY_MEKHANIZM_DIVANY_VALUE"] = $arResult["PROPERTIES"]["MEKHANIZM_DIVANY"]["VALUE"];
}
/* стиль дивана */
if($arResult["PROPERTIES"]["STIL"]["VALUE"]) {
	$arFilter["PROPERTY_STIL_VALUE"] = $arResult["PROPERTIES"]["STIL"]["VALUE"];
}
/* материал */
if($arResult["PROPERTIES"]["MATERIAL_KORPUSA"]["VALUE"]) {
	$arFilter["PROPERTY_MATERIAL_KORPUSA_VALUE"] = $arResult["PROPERTIES"]["MATERIAL_KORPUSA"]["VALUE"];
}

Как убрать текущий товар из выборки getList в карточке товара

Если вы находитесь в карточке товара и хотите создать слайдер похожих товаров, но при этом избежать появления данного товара в списке — вам нужно добавить специальный параметр. Для создания списка товаров можно использовать готовый компонент catalog.section, но мне он кажется слишком тяжёлым, поэтому я использую обычные getList запросы.

Для исключения текущего товара, вам нужно в массив с настройками фильтрации передать следующий код:

$arResult[«CODE»] — содержит код текущего элемента

$arFilter["!CODE"] = $arResult["CODE"];

Получить товары из конкретного раздела

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

"IBLOCK_SECTION_ID" => $arResult["IBLOCK_SECTION_ID"]

Отфильтровать элементы по полю типа «Список»

Часто бывает такое, что вам нужно отфильтровать товары в каталоге по полю, типа «checkbox». При этом нужно учитывать что у данного поля возможен множественный выбор значений.

Ниже представлен код для фильтрации по свойству «Цвет». id свойства = 1023

"PROPERTY_1023_VALUE" => ["Синий", "Серый"];

Указываем настройки пагинации для GetList

Для указания настроек пагинации, необходимо третьим параметром передать следующий массив, в котором указываются:

  • nTopCount — количество элементов в выборке (если false — значит выбираем все!)
  • nPageSize — количество элементов на одной странице
  • iNumPage — номер страницы пагинации

С помощью данного массива вы можете настроить на сайте кнопку «Показать ещё», которая будет подгружать товары в каталог через ajax функцию. Для этого просто нужно при каждом запросе передавать данную номер страницы.

$arNav = array(
    'nTopCount' => false,
    'nPageSize' => 30,
    'iNumPage' => intval($paginationValue),
    'checkOutOfRange' => true
);