Привет друзья друпаллеры, подскажите как выйти из ситуации, создала каталог товаров на 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"> </div>
задаём ему нужные настройки видимости и регион и далее при помощи jquery переносим его туда $('#edit-secondary-wrapper').detach().prependTo('.scndfltrs');
Спасибо всем, кто откликнулся и помог мне в решении проблемы.
P.S. Конечно же я использовала вариант 1 в живом проекте, но до того как он появился, для отчётности перед клиентом, был на скорую руку слеплен вариант 2
Комментарии
Вы видели например у https://market.yandex.ru чтобы фильтры разносили в два блока, - это же разрыв мозга для клиента. Сделайте на одной странице - простой фильтер, а на другой - расширенный.
Better exposed filters юзаете?
Та можно для любого фильтра задать что-то типа "Это вторичная опция"
Спасибо. Better exposed filters юзаю, видела этот чек бокс, только после его выбора в том же самом блоке появляется colapsable аккордеон с дополнительными настройками. А как его выкорчевать из главного блока и перенести в отдельный так и не догадалась. (ну точнее это можно сделать на jquery, но я думаю вы понимаете как это практично)
Нельзя, без этого модуля
https://www.drupal.org/project/mefibs
В настройках Критерии фильтрации (или сортировки) появился пункт "Show in block". Вот там попробуйте проставить еще.
"появляется colapsable аккордеон с дополнительными настройками"
выставьте чтоб он был раскрыт по умолчанию и CSS сдвиньте куда вам надо.
Хотя есть там подмодуль или настройка чтоб из раскрытого фильтра сделать блок.
а что сделать с пейджингом вьхи, он перестает работать...
VasyOK Спасибо за вашу помощь, ваш вариант отлично работает, отмечу как альтернативное решение.
Goodboy - Огромнейшее спасибо, это именно то, что я искала, очень гибкое в настройках решение, всё заработало нужным образом, отмечаю решением!
Спасибо, модуль помог
В модуле mefibs
Подскажите плиз - это так и должно быть:
1. Если , к примеру, 2 фильтра разнесены в 2 блока, то по существу в каждлом блоке выводятся 2 фильтра, только тот который не соответствует своему блоку устанавливается в css в display:none.
2. В дополнительных блоках при сбросе фильтра - чекбоксы все равно остаются выбранными.
3. Как можно поменять идентификатор фильтра? Этот модуль переименовывает идентификаторы в такую длинючую запись что просто кошмар!
Спасибо
По первому вопросу наверно я все понял - так работает модель. Хотя решение, как мне кажется, не совсем корректное. Можно было организовать работу через куки, чтоб не выводить лишний раз ненужный блок.
Второй вопрос вроде тоже нашел решение, но тоже кривое.
https://www.drupal.org/node/2409493#comment-10934329
Третий оч актуален.
Буду оч признателен за помощь.
Сейчас нет времени самому допиливать модуль. Пока попробую так. Посмотрю что получится. (аргументов в фильтрах оч много)
если я правильно понял то самый правильный способ это ob_start