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

Передача массива параметров для фильтрации

00 голосов
7
Нашел одну интересную заметку в Сообществе разработчиков.
Ссылка

Меня инетерсует, есть ли возможность по аналогии передать массив параметров для фильтрации в
комплексный компонент каталога?
спросил 21 Авг, 13 от TommY13 (120 баллов)

7 Ответы

00 голосов
Да, есть.
Но когда я делал быди проблемы с отображением фильтра.
Если убрать вывод фильтра, то доп. фильтр не срабатывал.
Я лечил это тем, что в шаблоне комплексного компонента каталога при вызове компоненты указывал имя глобального фильтра, т.е. не $arParams['FILTER_NAME'], а "arrFilter".
ответил 21 Авг, 13 от Almarea (3,760 баллов)
00 голосов
Возник вопрос...
как передать ручной фильтр при переходе между страницами ...

схема такая
в наличии 2 страницы:
1) страница фильтр А
2) списочная страница Б

На странице А формируем массив для фильтра и передаем через POST на страницу Б
Страница Б получаем список параметров в массиве и производит фильтрацию записей в своей таблице.
Все ок.
При переходе на последующие страницы таблицы сбрасывается фильтр, т.к. обнуляемый массив POST и следовательно сам фильтр.

Как можно решить вопрос ?
ответил 31 Окт, 13 от Ymca (880 баллов)
запихай в сессию )
00 голосов
опытным путем установлено, что типовой компонент фильтр работает через передаче параметров в $_GET
например так
Код
Array ( [arrFilter_ff] => Array ( [NAME] => 1 ) [arrFilter_pf] => Array ( [{польов_поле1}] => [{польов_поле1}] => ) [set_filter] => Y )

или
Код
 $_GET['arrFilter_ff']=Array("NAME"=>"1");
 $_GET['arrFilter_pf']=Array("{польов_поле1}"=>"", "{польов_поле1}"=>""); 
 $_GET['set_filter']="Y";


в результате происходит имитация передачи параметров через фильтр
при переходе по страницам фильтр сохраняется до передачи del_filter

вот только работает подобное при наличии на странице компонента Фильтр.
ответил 05 Фев, 14 от Ymca (880 баллов)
00 голосов
может все-таки кто-то подобное решал ?
ответил 26 Май, 14 от Ymca (880 баллов)
00 голосов
Руслан, в компоненте catalog.filter посмотрите параметр "Сохранять установки фильтра в сессии пользователя".
ответил 22 Сен, 14 от Miso (740 баллов)
00 голосов
Можно использовать переменную $_SESSION, в которой создать переменную, и имя вписать в виде имени фильтра и туда уже пихать сам фильтр в формате, который описан в документации
ответил 26 Янв, 15 от Tei (480 баллов)
00 голосов
Цитата
Maxim Smirnov пишет:
Руслан, в компоненте catalog.filter посмотрите параметр "Сохранять установки фильтра в сессии пользователя".

т.к. используется ручной фильтр, т.е. программное формирование массива параметров $arrFilter, использование компонента catalog.filter не предполагается...
хранение в Сессию не хотелось использовать по причине доп.нагрузки на сервер, интересует вариант именно через $_GET, как с учетом универсальности, так и фильтрации при перехододе по прямой ссылке с условием фильтрации в адресе...

Цитата
Артём Дурнев пишет:
Можно использовать переменную $_SESSION, в которой создать переменную, и имя вписать в виде имени фильтра и туда уже пихать сам фильтр в формате, который описан в документации

Вами предлагается вариант, аналогичный варианту от Maxim Smirnov, только без использования компонента catalog.filter
ответил 10 Май, 15 от Ymca (880 баллов)

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

0 голосов
1 ответ
0 голосов
7 ответов
спросил 03 Апр, 13 от Miyamoto (200 баллов)
0 голосов
5 ответов
0 голосов
0 ответов
0 голосов
5 ответов