Views расскрытые фильтры разделить на два блока [Решено]

Аватар пользователя Наденька Наденька 4 сентября 2015 в 20:18
1

Привет друзья друпаллеры, подскажите как выйти из ситуации, создала каталог товаров на views с кучей раскрытых фильтров (filters exposed) , через настройки раскрытой формы отправила их в блок. Но вот незадача, на сайте такое количество этих раскрытых фильтров, что логично было бы часть оставить сверху страницы (блок 1) а вторую часть отправить в первичный регион (блок 2) (слева от контента). Ума не приложу как разнести раскрытые фильтры представления на два блока и что бы они работали дополняя друг а не через два разных представления.

Благодарю за любую помощь!

Решение 1

Использовать связку фильтров better exposed filters и MEFIBS. В настройках представления ищем "РАСКРЫТАЯ ФОРМА" и там выставляем - "Раскрытая форма в блоке: Да" Затем ниже в "Стиль формы раскрытых фильтров:" выставляем "better exposed filters" и в "Exposed form blocks:" создаём нужное количество блоков, далее добавляем эти блоки в нужные регионы. Теперь возвращаемся в представление - "КРИТЕРИИ ФИЛЬТРАЦИИ" и в раскрытых фильтрах в чекбоксах выбираем те блоки в которых хотим видеть данные фильтры.

Решение 2

(Внимание решение для извращенцев типа меня)

Используем better exposed filters и jquery. Итак устанавливаем модуль better exposed filters в настройках представления ищем "РАСКРЫТАЯ ФОРМА" и там выставляем - "Раскрытая форма в блоке: Да" Затем ниже в "Стиль формы раскрытых фильтров:" выставляем "better exposed filters" далее активируем "Enable secondary exposed form options" и в настройках нужных фильтров (которые хотим убрать в другой блок) выставляем галочку " This is a secondary option" Все ваши дополнительные фильтры уйдут в сворачивающуюся гармошку, с помощью CSS можно темизировать это в выезжающую панель фильтров, а можно пойти по моему пути извращенки и перенести её в другой регион. Для этого создаём пустой блок, переносим в него <div class="scndfltrs">&nbsp;</div> задаём ему нужные настройки видимости и регион и далее при помощи jquery переносим его туда $('#edit-secondary-wrapper').detach().prependTo('.scndfltrs');

Спасибо всем, кто откликнулся и помог мне в решении проблемы.

P.S. Конечно же я использовала вариант 1 в живом проекте, но до того как он появился, для отчётности перед клиентом, был на скорую руку слеплен вариант 2

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 5 сентября 2015 в 7:21

Вы видели например у https://market.yandex.ru чтобы фильтры разносили в два блока, - это же разрыв мозга для клиента. Сделайте на одной странице - простой фильтер, а на другой - расширенный.

Аватар пользователя VasyOK VasyOK 5 сентября 2015 в 9:09

Better exposed filters юзаете?
Та можно для любого фильтра задать что-то типа "Это вторичная опция"

Аватар пользователя Наденька Наденька 5 сентября 2015 в 15:13

VasyOK wrote:
Better exposed filters юзаете?
Та можно для любого фильтра задать что-то типа "Это вторичная опция"

Спасибо. Better exposed filters юзаю, видела этот чек бокс, только после его выбора в том же самом блоке появляется colapsable аккордеон с дополнительными настройками. А как его выкорчевать из главного блока и перенести в отдельный так и не догадалась. (ну точнее это можно сделать на jquery, но я думаю вы понимаете как это практично)

Аватар пользователя Наденька Наденька 5 сентября 2015 в 16:09

dashiwa wrote:
Нельзя, без этого модуля
https://www.drupal.org/project/mefibs[/quote]

Спасибо огромное, это то, что нужно. Одна беда, вторичные фильтры ушли в отдельный блок, всё как нужно, а вот первичные пропали без вести. Для вторичных создала блок "secondfilters" и указала его для них. Для остальных же по логике указывается здесь - "Display exposed sort in block" - задала default. Вторичные есть, первичных нет, только кнопка применить.

Аватар пользователя goodboy goodboy 6 сентября 2015 в 13:20

vivas wrote:

Спасибо огромное, это то, что нужно. Одна беда, вторичные фильтры ушли в отдельный блок, всё как нужно, а вот первичные пропали без вести. Для вторичных создала блок "secondfilters" и указала его для них. Для остальных же по логике указывается здесь - "Display exposed sort in block" - задала default. Вторичные есть, первичных нет, только кнопка применить.

В настройках Критерии фильтрации (или сортировки) появился пункт "Show in block". Вот там попробуйте проставить еще.

Аватар пользователя VasyOK VasyOK 6 сентября 2015 в 8:48

"появляется colapsable аккордеон с дополнительными настройками"
выставьте чтоб он был раскрыт по умолчанию и CSS сдвиньте куда вам надо.
Хотя есть там подмодуль или настройка чтоб из раскрытого фильтра сделать блок.

Аватар пользователя Наденька Наденька 6 сентября 2015 в 14:57

VasyOK Спасибо за вашу помощь, ваш вариант отлично работает, отмечу как альтернативное решение.

Goodboy - Огромнейшее спасибо, это именно то, что я искала, очень гибкое в настройках решение, всё заработало нужным образом, отмечаю решением!

Аватар пользователя tmp tmp 26 января 2017 в 14:44

В модуле mefibs
Подскажите плиз - это так и должно быть:
1. Если , к примеру, 2 фильтра разнесены в 2 блока, то по существу в каждлом блоке выводятся 2 фильтра, только тот который не соответствует своему блоку устанавливается в css в display:none.

2. В дополнительных блоках при сбросе фильтра - чекбоксы все равно остаются выбранными.

3. Как можно поменять идентификатор фильтра? Этот модуль переименовывает идентификаторы в такую длинючую запись что просто кошмар!

Спасибо

Аватар пользователя tmp tmp 26 января 2017 в 15:31

По первому вопросу наверно я все понял - так работает модель. Хотя решение, как мне кажется, не совсем корректное. Можно было организовать работу через куки, чтоб не выводить лишний раз ненужный блок.
Второй вопрос вроде тоже нашел решение, но тоже кривое.
https://www.drupal.org/node/2409493#comment-10934329

Третий оч актуален.
Буду оч признателен за помощь.
Сейчас нет времени самому допиливать модуль. Пока попробую так. Посмотрю что получится. (аргументов в фильтрах оч много)