Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как сформировать сложный фильтр?

00 голосов
4
Подскажите, пожалуйста, как организовать фильтр по нескольким значениям идентификатора. Например, я написал форму, на которой есть список разделов информационного блока с чекбоксами и кнопка "Фильтровать". Когда отмечаем чекбоксами нужные разделы и нажимаем кнопку, то должен вывестись список элементов с этих разделов. Как сделать такой фильтр?
спросил 24 Янв, 14 от W1Ng (540 баллов)

4 Ответы

00 голосов
global $arrFilter;
$arrFilter["SECTION_ID"]=$_POST["ваш массив с чекбоксами"];
прописываем этот  arrFilter в компоненту.
ответил 19 Май, 14 от Logo1 (200 баллов)
00 голосов
Помогите с фильтром. У меня есть инфоблок, у его элементов такие свойства:
PERIOD (привязка к элементам в виде списка) - подстановка из другого инфоблока
YEAR_MON (список)
На сайте форма-фильтр с двумя SELECT'ами (год и период) и большим количеством CHECKBOX'ов (разделы инфоблока).
Передаю POST-запрос через AJAX с такими параметрами:
'id_year': id_year - значение  SELECT'а год 
'id_period': id_ period  - значение  SELECT'а период 
'sect[]': tagsArray - массив значений CHECKBOX'ов (идентификаторы разделов)
Список разделов у меня выводится с помощью кастомизированного компонента catalog.section.list. Подскажите как реализовать фильтрацию разделов с учетом моих параметров?
ответил 15 Сен, 14 от W1Ng (540 баллов)
00 голосов
Подскажите что делаю не так? Отправляю данные формы таким макаром:
Код
function myfilter() { 
var tagsArray = new Array();
var id_year = $('select[name="YEAR_MON"]').val();
var id_week = $('select[name="PERIOD"]').val();
 
$("input[type=checkbox]:checked").each(function() {  
    tagsArray.push(this.value);  
    }) 
   
   $.ajax({
     url:'/includes/monitoringfiltered.php',
     data: {'id_year': id_year, 'id_period':id_period, 'sect[]':tagsArray},
     method:'post',
     cache: false,
     success: function(responce){ $('div[name="resultfilter"]').html(responce);}
   })
} 
 
Сам фильтр в моей компоненте:
Код
$arFilter = array(
      "ACTIVE" => "Y",
      "GLOBAL_ACTIVE" => "Y",
      "ID" => $_POST["sect"],
      "IBLOCK_ID" => $arParams["IBLOCK_ID"],
      "CNT_ACTIVE" => "Y",
      "PROPERTY" => array('PERIOD' => $_POST["id_period"], 'YEAR_MON' => $_POST["id_year"]),
   );
 
Пробую менять значение чекбоксов - никакой реакции. smile:(
ответил 20 Янв, 15 от W1Ng (540 баллов)
00 голосов
Знатоки, помогите. Отправляю данные методом POST в файл:
Код
<?
global $arCheckFilt;
global $arYear;
global $arWeek;
$arCheckFilt = array();
$arCheckFilt = $_POST["sect"];
$arYear = $_POST["id_year"];
$arWeek = $_POST["id_week"];

define("NO_KEEP_STATISTIC", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 

$APPLICATION->IncludeComponent("demo:monit", ".default", array(
   "IBLOCK_TYPE" => "monit",
   "IBLOCK_ID" => "14",
   "BASKET_URL" => "/personal/basket.php",
   "ACTION_VARIABLE" => "action",
   "PRODUCT_ID_VARIABLE" => "id",
   "SECTION_ID_VARIABLE" => "SECTION_ID",
   "SEF_MODE" => "Y",
   "SEF_FOLDER" => "/personal/testmonit/",
   "AJAX_MODE" => "N",
   "AJAX_OPTION_JUMP" => "N",
   "AJAX_OPTION_STYLE" => "Y",
   "AJAX_OPTION_HISTORY" => "N",
   "CACHE_TYPE" => "A",
   "CACHE_TIME" => "36000000",
   "CACHE_FILTER" => "Y",
   "CACHE_GROUPS" => "Y",
   "SET_TITLE" => "Y",
   "SET_STATUS_404" => "Y",
   "USE_FILTER" => "N",
   "USE_REVIEW" => "N",
   "USE_COMPARE" => "N",
   "PRICE_CODE" => array(
   ),
   "USE_PRICE_COUNT" => "N",
   "SHOW_PRICE_COUNT" => "1",
   "PRICE_VAT_INCLUDE" => "Y",
   "PRICE_VAT_SHOW_VALUE" => "N",
   "SHOW_TOP_ELEMENTS" => "N",
   "PAGE_ELEMENT_COUNT" => "30",
   "LINE_ELEMENT_COUNT" => "1",
   "ELEMENT_SORT_FIELD" => "sort",
   "ELEMENT_SORT_ORDER" => "asc",
   "LIST_PROPERTY_CODE" => array(
      0 => "",
      1 => "",
   ),
   "INCLUDE_SUBSECTIONS" => "N",
   "LIST_META_KEYWORDS" => "-",
   "LIST_META_DESCRIPTION" => "-",
   "LIST_BROWSER_TITLE" => "-",
   "DETAIL_PROPERTY_CODE" => array(
      0 => "",
      1 => "",
   ),
   "DETAIL_META_KEYWORDS" => "-",
   "DETAIL_META_DESCRIPTION" => "-",
   "DETAIL_BROWSER_TITLE" => "-",
   "LINK_IBLOCK_TYPE" => "",
   "LINK_IBLOCK_ID" => "",
   "LINK_PROPERTY_SID" => "",
   "LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
   "DISPLAY_TOP_PAGER" => "N",
   "DISPLAY_BOTTOM_PAGER" => "Y",
   "PAGER_TITLE" => "Документи",
   "PAGER_SHOW_ALWAYS" => "N",
   "PAGER_TEMPLATE" => "",
   "PAGER_DESC_NUMBERING" => "N",
   "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
   "PAGER_SHOW_ALL" => "Y",
   "AJAX_OPTION_ADDITIONAL" => "",
   "SEF_URL_TEMPLATES" => array(
      "sections" => "",
      "section" => "#SECTION_ID#/",
      "element" => "#SECTION_ID#/#ELEMENT_ID#/",
      "compare" => "compare.php?action=#ACTION_CODE#",
   ),
   "VARIABLE_ALIASES" => array(
      "compare" => array(
         "ACTION_CODE" => "action",
      ),
   )
   ),
   false
);?>

 
Вот сам фильтр в Компоненте:
Код
$arFilter = array(
      "ACTIVE" => "Y",
      "GLOBAL_ACTIVE" => "Y",
      "ID" => $arCheckFilt;
      "IBLOCK_ID" => $arParams["IBLOCK_ID"],
      "CNT_ACTIVE" => "Y",
      "PROPERTY" => array('PERIOD' => $arWeek, 'YEAR_MON' => $arYear"]),
   );
 
Где моя ошибка? Фильтр не работает. smile:(
ответил 05 Май, 15 от W1Ng (540 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 10 Янв, 14 от Sherena (100 баллов)
0 голосов
3 ответов
спросил 30 Июль, 13 от Skarler (280 баллов)
0 голосов
7 ответов