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

Содержимое:

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
);
На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime