Часто бывает нужно отфильтровать товары в каталоге битрикса и часто это вызывает сложности.
Вот несколько примеров фильтров которые часто вызывают затруднения у новичков и не сразу находятся в поиске.
1) фильтр по свойству типа список (чекбокс)
//выбираем где не активен $GLOBALS['arrFilter'] = array('PROPERTY_HIDE_VALUE' => false); //выбираем с отмеченным чекбоксом $GLOBALS['arrFilter'] = array('PROPERTY_SALE_VALUE' => 'Y'); //вместо 'Y' укажите то что у вас в качестве значения этого свойства
2) сложный фильтр по диапазону цен с разными типами цен
Пример, у товаров есть 2 цены — базовая и цена со скидкой, надо выбрать все товары по цене от 1000 до 2000 с учетом обеих цен
$min = 1000; $max = 2000; $arFilter[]=array( "LOGIC" => "OR", ">=CATALOG_PRICE_1" => $min, ">=CATALOG_PRICE_2" => $min, ); $arFilter[]=array( "LOGIC" => "OR", "<=CATALOG_PRICE_1" => $max, "<=CATALOG_PRICE_2" => $max, );
В CATALOG_PRICE_1 и CATALOG_PRICE_2 укажите ваши ID цен по которым будете фильтровать.
3) фильтр по имени — выберет все начинающиеся на «A», можно указать полное имя элемента
$GLOBALS['arrFilter'] = array("NAME"=>"A%");
4) фильтр по символьному коду свойства
$GLOBALS['arrFilter'] = array("PROPERTY_КОД_СВОЙСТВА" => "A%");
5) фильтр по значению свойства
$GLOBALS['arrFilter'] = array("PROPERTY_КОД_СВОЙСТВА_VALUE"=>"А%");
6) фильтр элементов у которых свойство MYPROP активно
$GLOBALS['arrFilter'] = array("!MYPROP" => false); //выбираем с не пустым полем PREVIEW_PICTURE $GLOBALS['arrFilter'] = array('!PREVIEW_PICTURE' => false);
7) выбирает элементы с самой актуальной датой
$GLOBALS['arrFilter'] = array('<=PROPERTY_DATEFROM' => date('Y-m-d'));
Вот небольшой минимум, все эти фильтры можно комбинировать и менять, чтобы получить более сложные фильтры по нескольким свойствам.
Если у вас есть какие-то интересные фильтры или вопросы пишите их в комментарии.
Спасибо попробуемс!
Добрый день. Такая проблема: распечатываю $GLOBALS[«arrFilter»] — вроде всё на месте
Array
(
[?NAME] => 123
[PROPERTY] => Array
(
[?COUNTRY] => Россия
[TYPE] => 37
)
[!PREVIEW_PICTURE] =>
[>=CATALOG_PRICE_1] => 1000
[ 2000
)
но в списке товаров выводятся и товары без картинки и товары с ценами вне указанного диапазона. Причем по остальным параметрам фильтрация работает нормально. Не подскажете — в какую сторону копать?
по картинке попробуйте так
"!PREVIEW_PICTURE" => false
по цене
">=CATALOG_PRICE_1" => 1000,
"<=CATALOG_PRICE_1" => 2000,
или вот так
$arFilter[]=array(
"LOGIC" => "AND",
">=CATALOG_PRICE_1" => 1000,
"<=CATALOG_PRICE_1" => 2000,
);