Есть задача. Изменить код фильтра Views в отдельном блоке таким образом, чтобы по умолчанию радиокнопки фильтра открывались и закрывались по щелчку на спойлере.
Посмотрев стандартные шаблоны и не обнаружив в них ничего на эту тему, я решил задачу довольно таки варварским способом, скрыв форму с радиокнопками через CSS и добавив на страницу следующий JS.
$(document).ready(function(){
//Добавляет в код кнопку спойлера.
$("#edit-field-tags-tid").before("<i class='fa fa-play-circle-o open-filter-tags' style='position:relative;top:2px;left:95px;cursor:pointer;'></i><i class='fa fa-arrow-circle-o-down close-filter-tags' style='position:relative;top:2px;left:95px;cursor:pointer;display:none;'></i>");
$(".open-filter-tags").click(function(){ //Открывает спрятанный элемент с радиокнопками.
$(".form-item-field-tags-tid").show(100);
$(".close-filter-tags").show(100);
$(this).hide(100);
});
$(".close-filter-tags").click(function(){ //Закрывает элемент с радиокнопками.
$(".form-item-field-tags-tid").hide(100);
$(".open-filter-tags").show(100);
$(this).hide(100);
});
})(jQuery);
Возникает вопрос. Где же все таки правильно переопределить код обертки фильтров, чтобы, например, отказаться от метода .before в верхней части?
Или, что было бы еще лучше, динамически подставлять в JS класс фильтра, чтобы каждый раз не городить под каждый фильтр новый JS.
Комментарии
Better Exposed Filters - там можно делать фильтры сворачиваемыми.
Большое спасибо! Огромная библиотека модулей Друпала в очередной раз подтвердила свою эффективность))
hook_js_alter, вероятно.
Через hook_form_alter добавить фильтрам нужный класс для нужного класса добавить свой js
bumble, sas, спасибо за подсказку на счет хуков. Но на этот раз нашлось коробочное и вполне годное решение с drupal.org.
BEF умеет много еще чего, помимо сворачиваемости фильтров. Вообще, удобный модулек, из разряда маст хэв.
Согласен. Реализация множественного выбора тоже порадовала. Коробочная от Views, мягко говоря, вводит в ступор.