Битрикс фильтр, примеры

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

Битрикс — как отфильтровать записи у которых есть чекбокс (тип список)

Чекбокс, это флажок, который используется для условного обозначения Да\Нет, в списке значений такого фильтра пишется одно значение Y. Его Внешний вид надо переключить в Флажки (для удобства).
Выбираем все записи у которых нет значения:

$GLOBALS['arrFilter'] = array('PROPERTY_CHECKBOX_VALUE' => false);

Выбираем с отмеченным чекбоксом:

$GLOBALS['arrFilter'] = array('PROPERTY_HIT_VALUE' => 'Y');

То есть, мы ищем не по ID, не по XML_ID, а по VALUE. А VALUE у нас имеет только одно значение, Y.

Битрикс — фильтр по нескольким ценам

Следующий фильтр выберет все товары, у которых тип цены с ID 1 и 2 попадает в промежуток. Используется логика ИЛИ (OR):

$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 типа цен. Например, тут используется розничная с ID 1 и оптовая, с ID 2, поэтому в конце добавлены их ID.

Битрикс как выбрать товары с картинкой или с описанием

Для этого используются 2 вкладки в элементе — Анонс и Детально. Им соответствуют 2 поля:

$GLOBALS['arrFilter'] = array('!PREVIEW_PICTURE' => false);
$GLOBALS['arrFilter'] = array('!PREVIEW_TEXT' => false);

А для детальных полей:

$GLOBALS['arrFilter'] = array('!DETAIL_PICTURE' => false);
$GLOBALS['arrFilter'] = array('!DETAIL_TEXT' => false);

Используется логика != false, или не должно быть пустым. Для файла это наличие любого файла, для текста — даже 1 буква считается как не пустое значение (иногда даже пробел 🙂 ).

Битрикс как выбрать товары с заполненной ценой, положительным количеством

Вернемся к ценам, чтобы выбрать товары у которых есть цена:

$GLOBALS['arrFilter'] = array(">CATALOG_PRICE_1" => 0);

Чтобы выбрать все положительные товары в битриксе, нужно добавить следующее условие:

$GLOBALS['arrFilter'] = array(">CATALOG_QUANTITY" => 0);

Как добавить в фильтр из GET параметра

Если значения приходят из самого URL:

if (!empty($_GET['type'])) {
	$arrFilterTop[] = array('PROPERTY_TYPE' => $_GET['type']);
}

Фильтр по маске в битриксе

Для этого используется символ % и работает он почти как поиск:

$arrFilterTop[] = array(
		"LOGIC" => "OR",
		array("NAME" => "%".$_GET['q']."%"),
		array("PROPERTY_ARTNUMBER" => $_GET['q'])
);

Фильтрация по дате в битриксе без изменения формата

Выберем старые записи:

$GLOBALS['arrFilter'] = array('<=PROPERTY_DATEFROM' => date('Y-m-d'));

Самый капризный фильтр, и не всегда работает так как надо, иногда нужно дать хорошего пинка в виде другого формата даты.

Если эта статья была вам полезна или вы хотите её чем-то дополнить, жду вас в комментариях :). Удачной фильтрации в битриксе.

Если на вашем проекте необходимо настроить вывод информации по определенным фильтрам, свяжитесь со мной любым удобным способом.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Один комментарий

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

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