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
);