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

Alexander K.
1С-Bitrix
23.10.2018
2
Для фильтрации списка элементов нам необходимо вывести на страницу компонент "Список новостей" (bitrix:news.list). В настройках компонента в соответствующем поле требуется указать название фильтра, например usersFilter.

Теперь переходим к написанию кода. На странице, перед вызовом компонента "Список новостей" необходимо объявить глобальную переменную и передать ей массив, содержащий пару "Название свойства" => "значение фильтра":
<?
$GLOBALS['usersFilter'] = array("NAME" => "Иванов Иван Иванович");
?>
Данный запрос отфильтрует все элементы, в названии которых значится "Иванов Иван Иванович". Но есть один момент - если в запросе будет просто указан "Иванов Иван", то "Ивановичей" такой запрос не найдет. Решается это добавлением спецсимвола % перед названием свойства элемента:
<?
$GLOBALS['usersFilter'] = array("%NAME" => "Иванов Иван Иванович");
?>
А если нам нужно отфильтровать все элементы больше или меньше определённого значения? Делается это с помощью спецсимволов >, >=, <=, < установленных перед названием свойства элемента:
<?
$GLOBALS['usersFilter'] = array(">PROPERTY_NUMBER" => "10");
?>
Если требуется вывести все элементы, кроме определённых, то можно использовать спецсимвол !:
<?
$GLOBALS['usersFilter'] = array("!PROPERTY_NUMBER" => "10");
?>
Помимо всего прочего, фильтровать можно и по нескольким свойствам одновременно. Все свойства передаются в одном массиве:
<?
$GLOBALS['usersFilter'] = array("%NAME" => "Иванов Иван Иванович", "<PROPERTY_NUMBER" => "10");
?>