Как сделать фильтр битрикс
Фильтрация по "началу" и "концу активности"
Фильтрация по дате создания
Выбрать записи не старше 31 дня:
Выбор новостей за день или за месяц
Выбор событий с интервалом
Тогда выбор текущего события выглядит так:
Быстрый выбор новостей в календарь за месяц из нескольких инфоблоков
$this-\>arParams['IBLOCK_ID'] - массив номеров инфоблоков
Если события в таком календаре имеют продолжительность, возможно узнать, активно ли событие активность в данный день. Перед $query вставить:
Таким образом в выборку попадут поля day_1, day_2, . содержащие признак активности события в этот день (1).
Фильтрация и экспорт - очень важные инструменты для списков, особенно если в них очень большое количество элементов. Давайте рассмотрим, как с ними работать.
Создание и настройка фильтра
Посмотрите на видео, как быстро можно настроить фильтр, который будет искать сразу по нескольким полям.
Как видите, фильтры можно не только создавать, но и сохранять, чтобы не приходилось их настраивать заново. В зависимости от типов полей, предлагаемые настройки будут меняться, поэтому фильтр можно отрегулировать практически как угодно.
Фильтр будет работать и с неполными словами. Например, если вы введете в фильтре "Ли", то вам выдадут все элементы списка начинающиеся с этих букв: Листовки, Лицей, Лимоны. не знаю, что это за список может быть такой:)
Редактировать фильтры
Чтобы настроить уже существующие фильтры, нажмите на изображение шестеренки внизу формы. Рядом с фильтром появятся возможные операции: сделать фильтром по умолчанию, отредактировать и удалить.
После добавления изменений нажмите Сохранить. Если вы хотите, чтобы фильтр отобразился у всех пользователей, которые имеют доступ к списку, то нажмите Сохранить у всех.
Экспорт в Excel
Список можно экспортировать и загрузить его на компьютер. Чтобы сделать это, просто выберите действие Экспорт в Excel.
Имейте в виду, что в файле будут отображены только данные тех колонок, которые будут представлены в фильтре на момент экспорта. Поэтому, если у вас есть скрытые колонки, то в экспортированном файле вы их не увидите
Компонент "Умный фильтр" (catalog.smart.filter) - безусловно хороший и удобный, но если использовать его вне стандартного шаблона комплексного компонента "catalog", на первый взгляд может показаться, что он недоделан (например, отказывается нормально работать без указания раздела и др.), но это не совсем так. В этой статье я расскажу как использовать его скрытые возможности и как вносить некоторые изменения в ЧПУ фильтра.
[spoiler]
Использование фильтра без указания раздела
В стандартном шаблоне компонента "catalog" компонент "catalog.smart.filter" используется на странице раздела. В комплексном же компоненте "news" вообще используется устаревший компонент "catalog.filter", почему, лично для меня это остается загадкой - могу только предполагать, что либо компании "Битрикс" глубоко безразлично все, что не связано с электронной коммерцией, либо разработчики сами не до конца уверены в производительности "catalog.smart.filter" при обработке большого количества элементов. Так или иначе, использовать "catalog.smart.filter" в шаблоне компонента "news" или в том же "catalog", но не в конкретном разделе, не так сложно, основная проблема, которая тут возникает - это то, что по умолчанию, без указания в параметрах компонента ID или символьного кода раздела не работает счетчик количества элементов (показывает 0). Чтобы избавится от этой проблемы, укажем в параметре "SECTION_ID" - 0, а в дополнительном параметре "SHOW_ALL_WO_SECTION", который был заботливо подготвлен программистами, но потом почему-то тщательно спрятан от посторонних глаз - "Y". Напомню, что такой же параметр существует и у компонента "catalog.section" и означает "Показывать все элементы без указания раздела".
Код размещения фильтра для шаблона компонента "catalog":
Таким образом в файле "sections.php" шаблона мы можем разместить только одну строку для вывода всех элементов на главной странице раздела:
Данный код также рассчитан на размещение в разделе и подключение страницы раздела на главной (в "news.php") через:
Кроме того, чтобы фильтр мог использовать ЧПУ на главной странице компонента, понадобится копирование и несложная доработка самого комплексного компонента - "catalog" или "news":
Для компонента "catalog":
1. Добавляем строку
в массив $arDefaultUrlTemplates404 (если что-то не работает, попробуйте поменять в нем порядок элементов).
2. После вызова $engine->guessComponentPath добавляем строки:
Для компонента "news":
1. Перед определением массива добавляем строку:
2. В сам массив $arDefaultUrlTemplates404 добавляем строки (если что-то не работает, попробуйте поменять в нем порядок элементов):
Полный файл выглядит вот так sections.php.
"PROPERTY_CODE" = > ( isset ( $arParams [ "LIST_PROPERTY_CODE" ] ) ? $arParams [ "LIST_PROPERTY_CODE" ] : [ ] ) ,
"ADD_PROPERTIES_TO_BASKET" = > ( isset ( $arParams [ "ADD_PROPERTIES_TO_BASKET" ] ) ? $arParams [ "ADD_PROPERTIES_TO_BASKET" ] : '' ) ,
"PARTIAL_PRODUCT_PROPERTIES" = > ( isset ( $arParams [ "PARTIAL_PRODUCT_PROPERTIES" ] ) ? $arParams [ "PARTIAL_PRODUCT_PROPERTIES" ] : '' ) ,
"PRODUCT_PROPERTIES" = > ( isset ( $arParams [ "PRODUCT_PROPERTIES" ] ) ? $arParams [ "PRODUCT_PROPERTIES" ] : [ ] ) ,
"OFFERS_CART_PROPERTIES" = > ( isset ( $arParams [ "OFFERS_CART_PROPERTIES" ] ) ? $arParams [ "OFFERS_CART_PROPERTIES" ] : [ ] ) ,
"OFFERS_PROPERTY_CODE" = > ( isset ( $arParams [ "LIST_OFFERS_PROPERTY_CODE" ] ) ? $arParams [ "LIST_OFFERS_PROPERTY_CODE" ] : [ ] ) ,
"OFFERS_LIMIT" = > ( isset ( $arParams [ "LIST_OFFERS_LIMIT" ] ) ? $arParams [ "LIST_OFFERS_LIMIT" ] : 0 ) ,
'ENLARGE_PROP' = > isset ( $arParams [ 'LIST_ENLARGE_PROP' ] ) ? $arParams [ 'LIST_ENLARGE_PROP' ] : '' ,
'SLIDER_INTERVAL' = > isset ( $arParams [ 'LIST_SLIDER_INTERVAL' ] ) ? $arParams [ 'LIST_SLIDER_INTERVAL' ] : '' ,
'SLIDER_PROGRESS' = > isset ( $arParams [ 'LIST_SLIDER_PROGRESS' ] ) ? $arParams [ 'LIST_SLIDER_PROGRESS' ] : '' ,
'OFFER_TREE_PROPS' = > ( isset ( $arParams [ 'OFFER_TREE_PROPS' ] ) ? $arParams [ 'OFFER_TREE_PROPS' ] : [ ] ) ,
'MESS_SHOW_MAX_QUANTITY' = > ( isset ( $arParams [ '~MESS_SHOW_MAX_QUANTITY' ] ) ? $arParams [ '~MESS_SHOW_MAX_QUANTITY' ] : '' ) ,
'RELATIVE_QUANTITY_FACTOR' = > ( isset ( $arParams [ 'RELATIVE_QUANTITY_FACTOR' ] ) ? $arParams [ 'RELATIVE_QUANTITY_FACTOR' ] : '' ) ,
'MESS_RELATIVE_QUANTITY_MANY' = > ( isset ( $arParams [ '~MESS_RELATIVE_QUANTITY_MANY' ] ) ? $arParams [ '~MESS_RELATIVE_QUANTITY_MANY' ] : '' ) ,
'MESS_RELATIVE_QUANTITY_FEW' = > ( isset ( $arParams [ '~MESS_RELATIVE_QUANTITY_FEW' ] ) ? $arParams [ '~MESS_RELATIVE_QUANTITY_FEW' ] : '' ) ,
'MESS_BTN_BUY' = > ( isset ( $arParams [ '~MESS_BTN_BUY' ] ) ? $arParams [ '~MESS_BTN_BUY' ] : '' ) ,
'MESS_BTN_ADD_TO_BASKET' = > ( isset ( $arParams [ '~MESS_BTN_ADD_TO_BASKET' ] ) ? $arParams [ '~MESS_BTN_ADD_TO_BASKET' ] : '' ) ,
'MESS_BTN_SUBSCRIBE' = > ( isset ( $arParams [ '~MESS_BTN_SUBSCRIBE' ] ) ? $arParams [ '~MESS_BTN_SUBSCRIBE' ] : '' ) ,
'MESS_BTN_DETAIL' = > ( isset ( $arParams [ '~MESS_BTN_DETAIL' ] ) ? $arParams [ '~MESS_BTN_DETAIL' ] : '' ) ,
'MESS_NOT_AVAILABLE' = > ( isset ( $arParams [ '~MESS_NOT_AVAILABLE' ] ) ? $arParams [ '~MESS_NOT_AVAILABLE' ] : '' ) ,
'MESS_BTN_COMPARE' = > ( isset ( $arParams [ '~MESS_BTN_COMPARE' ] ) ? $arParams [ '~MESS_BTN_COMPARE' ] : '' ) ,
'USE_ENHANCED_ECOMMERCE' = > ( isset ( $arParams [ 'USE_ENHANCED_ECOMMERCE' ] ) ? $arParams [ 'USE_ENHANCED_ECOMMERCE' ] : '' ) ,
'DATA_LAYER_NAME' = > ( isset ( $arParams [ 'DATA_LAYER_NAME' ] ) ? $arParams [ 'DATA_LAYER_NAME' ] : '' ) ,
'BRAND_PROPERTY' = > ( isset ( $arParams [ 'BRAND_PROPERTY' ] ) ? $arParams [ 'BRAND_PROPERTY' ] : '' ) ,
'TEMPLATE_THEME' = > ( isset ( $arParams [ 'TEMPLATE_THEME' ] ) ? $arParams [ 'TEMPLATE_THEME' ] : '' ) ,
'SHOW_CLOSE_POPUP' = > isset ( $arParams [ 'COMMON_SHOW_CLOSE_POPUP' ] ) ? $arParams [ 'COMMON_SHOW_CLOSE_POPUP' ] : '' ,
'BACKGROUND_IMAGE' = > ( isset ( $arParams [ 'SECTION_BACKGROUND_IMAGE' ] ) ? $arParams [ 'SECTION_BACKGROUND_IMAGE' ] : '' ) ,
'COMPATIBLE_MODE' = > ( isset ( $arParams [ 'COMPATIBLE_MODE' ] ) ? $arParams [ 'COMPATIBLE_MODE' ] : '' ) ,
'DISABLE_INIT_JS_IN_COMPONENT' = > ( isset ( $arParams [ 'DISABLE_INIT_JS_IN_COMPONENT' ] ) ? $arParams [ 'DISABLE_INIT_JS_IN_COMPONENT' ] : '' ) ,
Читайте также: