В этой небольшой статье вы увидите несколько примеров кода, как отфильтровать записи.Данная тема уже частично раскрывалась мной в предыдущей статье — Как использовать 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'));
Самый капризный фильтр, и не всегда работает так как надо, иногда нужно дать хорошего пинка в виде другого формата даты.
Если эта статья была вам полезна или вы хотите её чем-то дополнить, жду вас в комментариях :). Удачной фильтрации в битриксе.
супер! Спасибо!