Телеграм: @bazarow_ru Почта: mihail@bazarow.ru

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

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

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

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


$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');
$arrFilter = Array(">=DATE_ACTIVE_FROM" => $curdate)

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


$from = date('d.m.Y', time() - 86400);
$to = date("d.m.Y");
$arrFilter = Array(">=DATE_ACTIVE_FROM" => $from, "<=DATE_ACTIVE_FROM" => $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 свойства (список)?

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Цвета торговых предложений из Highload инфоблоков в списке товаров Просмотров: 14905 Подвернулся на доработку очень старый сайт, работал еще на 11-ой версии Битрикс. Выполнили... Автоматическая загрузка каталогов из csv файлов в Битрикс Просмотров: 11797 Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В... Вывести артикул в печатную форму бланка заказа Просмотров: 1074 Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе. ... Отсортировать элементы в Битрикс по свойству привязка к разделам Просмотров: 28993 При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо... Как работает система сертификации партнеров 1С-Битрикс, уровни партне... Просмотров: 4472 Сертификация от «1С-Битрикс» – это объективная оценка знаний и практических навыков разраб... Показать пользователю накопительную скидку за все сделанные заказы, и... Просмотров: 2623 Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и ... Простые калькуляторы в карточке товара каталога на Битрикс Просмотров: 16178 На одном из создаваемых сайтов было необходимо сделать небольшой калькулятор и предварител... Смена вида карточек товаров в catalog.section с иммитацией AJAX Просмотров: 1627 Смену вида карточек товаров, в разделе каталога, можно реализовать с помощью сессии, запис... Валидация пароля и подтверждения при регистрации в битрикс Просмотров: 15267 Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистраци... Получить все товары из всех заказов пользователя. История купленных т... Просмотров: 2217 Задача: нужно создать раздел, в персональном разделе пользователя, с историей всех купленн... Перенос Битрикс сайта с хостинга на хостинг, инструкция Просмотров: 27391 Достаточно часто спрашивают как перенести сайт работающий на 1С Битрикс с одного хостинга ... Простой WEB сервер на ubuntu, для Битрикс Просмотров: 35932 Расскажу как по быстрому сконфигурировать WEB сервер для работы с Битрикс. Безо всяких ngi... XML в формате Commerce ML-2, города России и Мира, для выгрузки в инф... Просмотров: 6961 Подвернулась задачка, создать инфоблок для Битрикс, в котором будут просто города России и... Создание раздела инфоблока при регистрации пользователя в Битрикс Просмотров: 8650 Например вам нужно выводить информацию исключительно для определенного пользователя. Само ... Автоматически отгрузить заказ и сменить статус отгрузки, при выполнен... Просмотров: 951 Проблема: Заказы, на сайте, обрабатываются только в 1С. При этом 1С не работает с отгрузка... Показать только один тип цены в каталоге Битрикс Просмотров: 14955 Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на с... Кастомизация компонента восстановления пароля bitrix:system.auth.forg... Просмотров: 26777 Достаточно часто спрашивают как кастомизировать компонент восстановления пароля пользовате... Пункты меню из разделов инфоблока Битрикс Просмотров: 93237 В принципе это стандартная возможность системы управления битрикс, но почему-то часто спра... Вывести дату окончания скидки в карточке товара Просмотров: 4522 Если нужно вывести информацию о скидке в карточке товара, можно воспользоваться методом Умный фильтр на главной странице Битрикс Просмотров: 22296 Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу...