Часто бывает нужно отфильтровать товары в каталоге битрикса и часто это вызывает сложности.

Вот несколько примеров фильтров которые часто вызывают затруднения у новичков и не сразу находятся в поиске.
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'));

Вот небольшой минимум, все эти фильтры можно комбинировать и менять, чтобы получить более сложные фильтры по нескольким свойствам.
Если у вас есть какие-то интересные фильтры или вопросы пишите их в комментарии.

bitrix фильтр
Метки:            

3 комментариев к “bitrix фильтр

  • 19.05.2017 в 16:59
    Постоянная ссылка

    Добрый день. Такая проблема: распечатываю $GLOBALS[«arrFilter»] — вроде всё на месте

    Array
    (
    [?NAME] => 123
    [PROPERTY] => Array
    (
    [?COUNTRY] => Россия
    [TYPE] => 37
    )

    [!PREVIEW_PICTURE] =>
    [>=CATALOG_PRICE_1] => 1000
    [ 2000
    )

    но в списке товаров выводятся и товары без картинки и товары с ценами вне указанного диапазона. Причем по остальным параметрам фильтрация работает нормально. Не подскажете — в какую сторону копать?

    Ответить
    • 19.05.2017 в 18:17
      Постоянная ссылка


      по картинке попробуйте так
      "!PREVIEW_PICTURE" => false

      по цене
      ">=CATALOG_PRICE_1" => 1000,
      "< =CATALOG_PRICE_1" => 2000,

      или вот так
      $arFilter[]=array(
      "LOGIC" => "AND",
      ">=CATALOG_PRICE_1" => 1000,
      "< =CATALOG_PRICE_1" => 2000,
      );

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

90% сайтов рунета содержат уязвимости и могут быть взломаны! Проверь свой сайт!