Глобальные фильтры на всякие случаи жизни

Просмотров: 58720

Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива, инфорблока. Спектр применяемости очень широкий. Используется чаще всего с компонентами: Список новостей, Новости, Элементы раздела, Каталог, Топ элементов каталога и Каталог.

Для включения фильтр достаточно проделать следующее: Перед вызовом компонента вставить код вида


$GLOBALS['Название_Фильтра'] = array(Массив с данными для фильтрации);

В параметрах компонента передать параметры включения фильтра и его название


$APPLICATION->IncludeComponent(
.....
"USE_FILTER" => "Y",
"FILTER_NAME" => "Название_Фильтра",
.....

Дальше идут примеры которые вы можете передать в $GLOBALS['Название_Фильтра'], в качестве "Название_Фильтра" буду вписывать "arrFilter". Данные примеры собраны из нескольких источников. И вы можете писать свои примеры в комментариях, лучшие будут добавлены в тело заметки.

Итак: погнали

Наличие не пустого свойства. Если у инфоблока есть свойство с заданным кодом (DISCOUNTS) оно не пустое и активно:


$GLOBALS['arrFilter'] = array('ACTIVE' => 'Y', '!PROPERTY_DISCOUNTS' => false);

Выборка элементов по их ID, если нужен один конкретный:


$GLOBALS['arrFilter'] = array('ID' => 12);

Или несколько:


$GLOBALS['arrFilter'] = array('ID' => array(10,11,12,13));

Элементы созданные за текущий день


$curdate = date('d.m.Y');
$GLOBALS['arrFilter'] = Array(">=DATE_ACTIVE_FROM" => $curdate)

Элементы созданные последние два дня, где 86000 это количество секунд. Умножая этот параметр на количество дней, получим элементы за последние n (86000 * n) дней


$from = date('d.m.Y', time() - 86400);
$to = date("d.m.Y");
$GLOBALS['arrFilter'] = Array(">=DATE_ACTIVE_FROM" => $from, "<=DATE_ACTIVE_FROM" => $to)

Тоже самое но с датой создания, а не датой начала активности


$from = date('Y-m-d H:i:s', time() - 86400 * 30); // Созданные за последние 30 дней
$to = date("Y-m-d H:i:s");
$GLOBALS['arrFilterNew'] = Array(">=DATE_CREATE" => $from, "<=DATE_CREATE" => $to)

Отфильтровываем элементы у которых в свойстве "HIT" установлено "Yes". При этом HIT это список с несколькими значениями.


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

Отфильтровываем элементы у которых в свойстве "HIT" установлено "Yes". При этом HIT это список с несколькими значениями. И э этого свойсва ID - 15


$GLOBALS['arrFilter'] = array("PROPERTY_15_VALUE"=>"Yes");

Отфильтровываем элементы у которых в свойстве "HIT" установлено "Yes". При этом HIT это список с несколькими значениями. И э этого свойсва ID - 15


$GLOBALS['arrFilter'] = array("PROPERTY_15_VALUE"=>"Yes");

Все элементы из раздела инфоблока, зная ID этого раздела. Например из 90-го


$GLOBALS['arrFilter']=array("SECTION_ID" => 90);

Пока все, заметка будет дополняться по ходу жизни. Любые из фильтров можно комбинировать просто добавляя разные условия в массив.

ruslan2243 29.01.2018
А вы не делали такую штуку: В каталоге нужно выводить первыми товары с определенным свойством(город покупателя). Причем у покупателя может город меняться. Речь идет о том, чтобы показывать товары первыми в зависимости от города покупателя.
Николай Сухих 23.05.2018
Как сделать случайную сортировку?
Код
$GLOBALS['arrFilter']=array("ORDER" => 'RAND');
У меня не работает.
Михаил Базаров 17.05.2022
Цитата
Николай Сухих написал:
Как сделать случайную сортировку?
Код
 $GLOBALS['arrFilter']=array("ORDER" => 'RAND'); 
У меня не работает.

Не очень понял, что хотели сделать. Нафильтровать случайных элементов? В фильтре это смысла нет делать, он именно фильтр а не логика отображения. Но если что:
"SORT" => "RAND"
Павел 12.08.2022
Подскажите,
есть bitrix:news / bitrix:news.list
есть разделы, подразделы, элементы.

есть один подраздел, который ACTIVE = N
он не выводится, но если зайти напрямую по ссылке -- то покажет пустой раздел.
Можно ли как-то фильтром, или чем другим, закрыть вывод подраздела по прямой ссылке с ACTIVE = N?
нужна там ошибка 404.
Михаил Базаров 12.08.2022
Цитата
Павел написал:
есть один подраздел, который ACTIVE = N
он не выводится, но если зайти напрямую по ссылке -- то покажет пустой раздел.
Можно ли как-то фильтром, или чем другим, закрыть вывод подраздела по прямой ссылке с ACTIVE = N?
нужна там ошибка 404.

Фильтрами думаю ни как. Из быстрого, что приходит в голову:
можно в шаблоне списка новостей сделать проверку
Код
if (count($arResult["ITEMS"] == 0)) {
    CHTTP::SetStatus("404 Not Found");
}
Гость 15.03.2023
Как отфильтровать элементы по XML ID свойства (список)?
Гость 25.04.2024
Михаил, фильтр по свойству ИБ "Список" отлично работает, НО...

А как вывести новости по категориям фильтра на разных страницах сайта?
При переходе в новость по категории все равно уводит на главную ленту новостей....
Гость 25.04.2024
Цитата
Гость написал:
Михаил, фильтр по свойству ИБ "Список" отлично работает, НО...
А как вывести новости по категориям фильтра на разных страницах сайта?
При переходе в новость по категории все равно уводит на главную ленту новостей....
нашел... )) нужно поправить адрес в sef_folder
Гость 07.07.2024
Полезные данные.
опечатка 1 - (верно - 86400): "Элементы созданные последние два дня, где 86000 это количество секунд. Умножая этот параметр на количество дней, получим элементы за последние n (86000 * n) дней"
опечатка 2 - (э, свойсва): "И э этого свойсва ID - 15"
дублируется абзац: "Отфильтровываем элементы у которых в свойстве "HIT" установлено..."
Гость 17.07.2024
А как сделать сортировку news.list по свойству список, в данном случае у меня в этом свойстве много городов?
И еще вопрос, как кнопки с городами вывести на странице, чтобы срабатывала фильтрация?

Блог-note: заметки разработчика

Постраничная навигация в списке разделов Битрикс- catalog.section.list

Если в магазине очень много разделов и хочется вывести их с постраничной навигацией: можно воспользоваться методами CDBR...

Вывести все разделы в которых находится элемент инфоблока

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

Как вывести картинки к разделам на базе _ext меню

Просто для эстетической красоты, нужно вывести в меню разделов сайта картинки или иконки. Достаточно популярный метод, э...

Малая корзина Битрикс, упрощенный шаблон

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

Старые шаблоны битрикс для простой верстки

Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии и выше), достаточно технологич...

Создание PWA для сайта на 1С-Битрикс

Технология PWA позволяет создать приложение для любого сайта. Не обязательно работающего на 1С-Битрикс, данная заметка ...

Ссылка и название раздела в списке новостей Битрикс

Если нужно вывести название раздела инфоблока в котором находится конкретный элемент/новость в компоненте "списк новосте...

Подключение SSL на Битрикс виртуальная машина

С первого января 2017 года, наличие безопасного соединения HTTPS становится практически обязательным. Ваши сайты будут з...

Композитный сайт на 1С-Битрикс

Для новых клиентов: Все новые проекты будут включать в себя применение технологии "Композитный сайт" - данная услуга уже...