Как сделать сворачивающиеся фильтры для Views на Drupal 7?

Модерация материалов на этом сайте

Как сделать сворачивающиеся фильтры для Views на Drupal 7?. Интернет, IT

Реализация доски объявлений или интернет магазина через Представления (Views) требует внедрения в шаблон Exposed filters для удобного поиска. Такая необходимость возникла и у меня на этом сайте. Готового решения я не нашла. Возможно, можно было бы поискать внимательнее и собрать нужный мне функционал через несколько модулей, но я не люблю, когда модулей слишком много. А потому, очередной раз полезла в код.

Готовое решение я не нашла и придумала свое, с которым сейчас поделюсь. Если предложите более гибкое и простое решение – прошу обозначить его в комментариях к посту. Для решения использовала встроенные в Drupal JavaScript функции.

Как сделать сворачивающийся блок с фильтрами?

Тезисно, работа заключается в следующем:

  • Определяем место для нашего блока с фильтрами.
  • Создаем в теме новый регион. Его помещаем в шаблон страницы в запланированном выше месте.
  • Размещаем блок Exposed filters в созданный регион, добавляем стили.
  • Теперь подробно пройдемся по шагам.

1.    В интернет магазинах часто размещают блок с фильтрами поиска в боковой колонке. Это удобно и красиво смотрится на широком экране ноутбука, но в телефоне – кошмар! Если есть мобильная версия шаблона, то фильтры будут находиться слишком далеко от содержимого. А предлагать сайт без мобильной версии – издеваться на пользователями. Поэтому оптимально расположить его прямо перед контентом. Если его можно будет свернуть, то особого раздражения он не вызовет. Новый регион у себя в примере я назвала 'search_content'.

2.    Как создавать регион в теме Drupal 7 описано здесь. Далее в шаблоне страницы, на которой будет наше представление (например, page.tpl.php или page—названиестраницы.tpl.php) помещаем следующие строчки кода:

Над кодом:

<?php drupal_add_js ('misc/form.js') ?>

<?php drupal_add_js ('misc/collapse.js') ?>

В месте, где будет располагаться регион со сворачиваемыми фильтрами:

<fieldset id="fieldset-id" class="collapsible">

  <legend><span class="fieldset-legend">Нажмите здесь, чтобы свернуть/развернуть</span></legend>

  <div class="fieldset-wrapper">

  <div class="fieldset-description">Фильтры для поиска в разделе Объявления предложения.</div>

    <div class="search_content"><?php print render($page['search_content']); ?></div>

  </div>

</fieldset>

 

Первый код нужен, чтобы подключить к странице встроенные в Drupal скрипты, т.е. JS файлы, а второй – вставляет сворачиваемый блок, в котором будет содержимое, выбранное для него через Структура – Блоки. Я разместила этот регион прямо перед строкой <?php print render($page['content']); ?>, т.е. перед содержимым.

3.    В редакторе Views в разделе Advanced ставим галочку Exposed form in block:Да. Теперь в Структура – Блоки находим наш блок с фильтрами поиска и помещаем его в созданный регион. Отмечаем, на каких страницах он должен появиться. Чистим кэш и все должно заработать.

Подобным образом можно разместить любой блок с возможностью сворачивать его, что удобно для мобильных устройств.

Комментарии: