Раскрытые фильтры и критерии сортировки

В этом уроке мы рассмотрим что такое раскрытые фильтры и критерии сортировки.

Переходим на страницу редактирования отображения главной страницы и нажимаем на ссылку Добавить в секции Критерии фильтрации.

Ссылка добавить фильтр

Выбираем в поле Для пункт Этот page (переопределить), чтобы фильтры добавились только к отображению главной страницы. В списке полей выбираем Содержимое: Страна и нажимаем Применить (это отображение).

Добавление фильтра Страна

В следующем окне все оставляем как есть и нажимаем Применить и продолжить.

Настройка способа выбора фильтра Страна

В окне настроек критериев фильтра ставим галочку Раскрыть этот фильтр для посетителей и позволить его изменять. Именно эта настройка и делает из обычного фильтра раскрытый, также перед нами разворачивается форма с дополнительными настройками для раскрытого фильтра. Здесь можно выбрать значение по умолчанию, метку и т.д.

Нажимаем Применить (это отображение).

Настройки фильтра Страна

Теперь добавим раскрытый критерий сортировки по полю Оценка.

Нажимаем на ссылку Добавить в секции Критерий сортировки.

Ссылка добавить критерий сортировки

Также переопределяем настройки критериев сортировки для данного отображения выбрав Этот page(переопределить) в поле Для. В списке критериев выбираем поле Содержимое: Оценка и нажимаем Применить (это отображение).

Добавление критерия сортировки Оценка

В следующем окне настроек критерия сортировки ставим галочку Раскройте эту сортировку для посетителей, чтобы позволить им изменять ее и нажимаем Применить (это отображение).

Настройки критерия сортировки Оценка

Теперь установим порядок критериев сортировки так, чтобы сортировка по полю Оценка преобладала над стандартной сортировкой по дате публикации. Нажимаем на ссылку Изменить порядок.

Ссылка на редактирование порядка критериев сортировки

Во всплывающем окне выставляем порядок так, чтобы поле Оценка было первым в списке и нажимаем Применить (это отображение).

Изменения порядка критериев сортировки

Сохраняем настройки представления.

Кнопка сохранить представление

Теперь над списком фильмов у нас появилась форма позволяющая отсортировать фильмы по полю Оценка в порядке возрастания или убывания,а также отфильтровать фильмы по полю Страна.

Отображение раскрытых фильтров

Если мы попробуем поставить порядок сортировки По убыванию, то фильмы будут выводится в том-же порядке как в блоке Топ 5.

Установка сортировки по убыванию

Далее попробуем отфильтровать фильмы по стране. Выбираем в поле Страна значение СССР и нажимаем Применить. После этого в списке остались только фильмы снятые в СССР.

Фильтрация по стране

Если мы попробуем отфильтровать фильмы по стране Италия, то в список вывода не попадет ничего, потому что на сайте нет ни одного фильмы с указанием страны Италия. Однако посетителю может быть непонято почему он видит пустой список.

представление без результатов

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

Ссылка добавить поведение при отсутствии результатов

Далее выбираем в списке пункт Глобальный: Текстовое поле и нажимаем Применить (все отображения).

Добавить текстовое поле

Теперь в текстовую область мы пишем текст который будет отображаться том случае если в вывод не попал ни один фильм. Нажимаем Применить (все отображения).

Задание текста для пустого представления

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

Пример отображения текста для пустого представления

На этом мы закончим данный урок.

Подведем итоги

В этом курсе мы рассмотрели основные аспекты работы с модулем Views (Представления) и самые часто используемые техники. Такие как: контекстные фильтры и связи, агрегация, раскрытые фильтры, критерии сортировки и т.д.

Конечно вместить все подробности в один курс невозможно так как модуль действительно очень мощный и многофункциональный. То что мы рассмотрели это только вершина айсберга. Экспериментируйте создавая различные представления и отображения и тогда перед вами откроется вся мощь и гибкость модуля Views и CMS Drupal в целом. Если что-то осталось неясно задавайте вопросы в комментариях.

Поделись с друзьями:

Комментарии

Колоссальная благодарность! Спасибо очень интересно)

Здравствуйте, Денис. Очень понравились ваши уроки. Не подскажите возможно ли сделать страницу с каталогами (картинка и под ней текст) как сделано на этом сайте. Буду очень благодарен.

Конечно можно. Например сделать тип материалов "Каталог" и "Файл". Добавить поле "Содержимое" типа Entity reference с помощью которого к любому каталогу можно привязывать любое количество каталогов и файлов. Далее создать представление которое с помощью контекстных фильтров будет выводить материалы для каждого каталога. Это как один из вариантов.

Еще раз здравствуйте. Что то не получается сделать страницу с картинками и текстом, которая будет вести на другую страницу с картинками и текстом или на каталог с товарами. Если не сложно, можно поподробнее про это рассказать.

Расскажите лучше вы подробнее что вы делаете? В чем загвоздка? Чем больше деталей, тем проще будет подсказать.

К сожалению вашим способом не получилось. Нашел это видео и сделал по нему. Появился еще 1 вопрос. Если выбрать формат представления "Неформатированный список", то выводится таким образом, а мне надо вывести по 4 шт в ряд. Я выбираю формат вывода сетка и теперь выводится как надо, но появляется таблица другого цветом и видны пустые ячейки. Можно ли вывести без таблицы?

Можно просто скрыть границы таблицы с помощью CSS или вывести как "Неформатированный список" и опять-же с помощью CSS свойства float добиться того-же результата.

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

Посмотрите в боковой панели вам предлагаются курсы по HTML и CSS.

Еще раз здравствуйте, Денис. Есть вопросы с которыми не могу разобраться. Возможен ли вариант платной консультации с наглядным примером решения моих задач?

Если есть вопросы задавайте здесь. Постараюсь ответить.

Доброго времени суток, Денис! Подскажите пожалуйста как настроить контекстные фильтры. У меня есть фильтрация (левый блок), там все работает, и есть правый блок. Подскажите как в нем вывести только те материалы, которые удовлетворяют критериям поиска а не все подряд?
http://skrinshoter.ru/s/240216/FeCnTm

http://skrinshoter.ru/s/240216/l1FoYZ

1. Делал каталог по этому видео. Все получилось, только адрес не продолжается, а меняется. При заходе на страницу одежды, получается следующий адрес:http://voentorg/odezhda/bele-natelnoe. Дальше при выборе раздела "футболки", который находится в разделе "белье нательное", адрес должен выглядеть так:http://voentorg/odezhda/bele-natelnoe/futbolki, а он выглядит так: http://voentorg/odezhda/futbolki. Ссылка на рисунок. Если я правильно понял, то это делается в views в поле "путь", но не могу понять что нужно там указывать.
2. Стоит модуль drupal commerce. Хочу вывести список товаров. Например те же самые футболки. В Views он все выводит прекрасно, но если указать путь http://voentorg/odezhda/futbolki, то страница пустая.
3. Может это не получается сделать потому что проблема во 2 пункте. Не могу разобраться как добавлять товар сразу на витрину магазина (что бы пользователи видели его). По задумке будет 5 типов материалов. Каждый тип материала добавляет товар в свой раздел. Разделов соответственно 5. Вывод их в левое меню сделал следующим образом. Создал 5 словарей, добавил категории и подкатегории, создал 5 меню и сделал вывод каждого словаря в свое меню.
Если есть возможность объяснить как это исправить через скайп или teamviewer (или какие нибудь другие программы), было бы очень замечательно. Готов заплатить. Надеюсь на вашу помощь.

1) Устанавливаете модули: Token, Pathauto. Переходите Configuration -> URL aliases (admin/config/search/path/patterns), в секции TAXONOMY TERM PATHS задаете паттерн [term:parents:join-path]/[term:name] для словаря с категориями. Далее чтобы обновить алиасы переходите во вкладку Delete aliases (admin/config/search/path/delete_bulk) и там удаляете все алиасы для терминов таксономии. После этого переходите во вкладку Bulk update (admin/config/search/path/update_bulk) и обновляете алиасы для терминов уже с новым паттерном.

2 и 3) Не совсем понял в чем проблема, но похоже вы не совсем понимаете как работает Drupal Commerce. Пересмотрите еще раз внимательно Курс по Commerce. Материал и товар это не одно и тоже в Drupal Commerce. Также не совсем понял зачем создавать 5 словарей, 5 меню и 5 типов материалов. Почему не сделать это все в одном? Вообщем опишите подробнее проблему по этим пунктам.

С 1 пунктом справился, спасибо. Насчет 5 словарей и 5 меню: есть 5 основных категорий, их нужно было вывести в разных блоках. При создании 1 словаря не смог понять как их вывести в разных блоках. Мне посоветовали сделать 5 словарей и вынести каждый словарь в меню и потом меню вынести в блоках. Насчет 5 материалов: нужно чтобы человек, который не знаком с друпалом без проблем мог добавить товар на витрину. Я подумал что если создать для каждой основной категории (в моем случае для каждого словаря) тип материала, в котором выбирается товар (не видимый для пользователя) и указывается конечная подкатегория, в которой он будет выводится, то так будет правильнее. Соответственно каждый тип товара привязан к своему словарю и по идеи возможность добавления товара для пользователя должна быть только у тез товаров, которые относятся к этому словарю (остальные не должны отображаться).

1) На счет вывести в 5 блоках то тут можно использовать Menu block он позволяет выводить меню по подуровням в несколько блоков.

2) Почему человек незнакомый с Drupal не может создавая товар выбрать из полного списка категорий куда он хочет его добавить? Ну в общем это ваше дело, но я бы сделал по другому :)

Можете описать поподробнее ваш метод?

Вы лучше опишите что вы хотите получить на выходе, а я вам подскажу как это сделать лучше.

Установил Menu block, удалил все словари, создал новый, добавил в него категории. Ставлю вывод блока с категорией одежда, но он выводится только если нахожусь в одном из разделов этой категории. То есть, на главной странице его не видно, если выбран другой раздел категории, например аксессуары, то его тоже нету.
С drupal commerce знаком недавно, поэтому еще не знаю как правильней с ним работать. Я представляю что работать должно так:
Сначала добавляем товар на сайт.
Потом добавляем его на витрину, чтобы пользователь мог его видеть.
При добавлении на сайт указывается категория или еще что-то как обозначение. При добавлении на витрину выбирается эта категория (обозначение) и отображаются только товары с этим обозначением. Иначе, как я понимаю будет выводиться весь список товаров, а он достаточно большой (более 400 товаров). Далее указывается категория или раздел, в которую он будет выводиться (например: одежда-головные уборы-маски), и при нажатии сохранить товар появляется на соответствующей странице.

Из вашего описания я понял что вы совсем не понимаете как работает Commerce и Drupal в целом. Почитайте для начала все курсы начиная с раздела "Основы Drupal". Не стоит лететь впереди паровоза, нужно сначала понять как это работает а потом что-то делать.

Пока вернулся на старый сайт, где 5 словарей. Делал все по вашему уроку до 5 шага включительно. Товар все равно не показывается. Вот так у меня выглядит менеджер витрин, содержимое. Если путь в содержимом указываю как у вас, то все выводится, но тогда пропадает каталог подразделов с картинками и названиями. Следовательно я меняю путь в представлении на тот, куда должно все выводиться. Но там пусто. Вот так выглядит мой тип материала. В поле "категория" указал словарь "одежда".

Здравствуйте, Денис. Прекрасные уроки.

Был бы очень рад узнать, как можно сделать, чтобы вместо фильтрации по странам и сортировки по оценке стояли просто три кнопки, у которых функция и надпись каждой следующие:

- Сортировать по количеству скачиваний
- Сортировать по рейтингу (оценки)
- Сортировать по количеству комментарий

И у всех порядок по умолчанию по убыванию (не настраиваемый посетителем).

Скорее всего, это очень-очень актуально.

Стандартными средствами наверное никак. Можно вывести кнопки в шаблон, а стандартные элементы управления представления скрыть с помощью CSS и изменять их с помощью JavaScript при нажатии на кнопки.

Здравствуйте! Спасибо за уроки, все сделал и все у меня работает. Но есть кое-какие моменты... Итак, после сортировки у меня выходит около, допустим, 20 фильмов. В настройках вьюс я поставил выводить 5 фильмов на страницу. И мне нужно, чтобы была какая-то кнопочка "Еще" или "Далее" при нажатии на которую выводились бы следующие 5 фильмов согласно критерию и сортировки. Ну и также бы появлялась кнопочка "Назад", чтобы перейти можно было бы на первые 5 фильмов.

Спасибо, разобрались. В настройках вьюса есть отображение в виде страниц.

Здравствуйте! У меня проблема с фильтрами каталога. Делаю раскрытые фильтры по производителю, свойствам товара и т.д. Мне нужно что бы при выбора, например, производителя, остальные фильтры корректировали бы свои пункты. Допустим, выбираем Адидас и в фильтре "Цвета" остались бы только те цвета, которые доступны для продукции Адидас. Можно ли это сделать стандартными фильтрами Views? Я попробовал использовать Facet API, все хорошо, но он не работает(?) с Views у которых есть еще и контекстные фильтры. Можете посоветовать решение?Спасибо.

Посмотрите Views Dependent Filters и Better Exposed Filters, не уверен что с помощью этих модулей можно решить вашу проблему но попробуйте. В любом случае если не получится сделать "из коробки" можно написать свой модуль.

Спасибо за ответ. Решил проблему с помощью Views Selective Filters , но появилась другая - если для определенной категории нет вариантов цветов, в фильтре исчезают все значения, но остается лейбл фильтра и следовательно этот блок не скрывается. Готовых решений для этой проблемы видимо нет.

Спасибо за полезный и понятный урок! Возник вопрос: применительно к примеру который разбирался на уроке, как сделать, что бы при поиске фильма, критерий "Италия" не был доступен пользователю, пока в фильмотеке отсутствует итальянский фильм, но появлялся после добавления и вновь становился не доступен после исчезновения фильма (например продан). Возможно ли это исполнить средствами views, либо нужен дополнительный модуль?

Привет Денис, благодарю за курс-один из немногих кто так доходчиво пишет и снабжает подробности скринами.
у меня вопрос: как удалить на вьюсе лишние отображения для страниц, на друпал 6, но думаю механизм один.могу скинуть скрин если надо.заранее благодарю.

Вот пример http://prntscr.com/8vzqwn После этого отображение будет помечено как удаленное, но удалится полностью только после нажатия на "Сохранить".

Доброго времени суток, Денис! Подскажите пожалуйста как настроить контекстные фильтры. У меня есть фильтрация (левый блок), там все работает, и есть правый блок. Подскажите как в нем вывести только те материалы, которые удовлетворяют критериям поиска а не все подряд?
http://skrinshoter.ru/s/240216/FeCnTm

http://skrinshoter.ru/s/240216/l1FoYZ

Денис спасибо, очень хорошие и простые для понимания уроки.
Задумал сделать сайт недвижимости на Drupal. Во сем определился.
Вы не подскажите как сделать ползунки с ценами от и до, сразу скажу я не программист максимум HTNL и CSS (собираю сайт мышкой :) ), не планируете ли статью об этом, весь интернет перерыл. Вроде можно сделать с помощью Better Exposed Filters, но нигде нет простого описания.
Есть еще модуль SliderField

Есть еще модуль SliderField

Есть еще модуль SliderField но как им пользоваться для новичков нигде нет описания. Извиняюсь за повторение комментария нажал не ту кнопку при вставке ссылки (У Вас в комментариях нет кнопки редактировать свой комментарий).
Если возможно поделитесь информацией или ткните носом где почитать.
И еще раз спасибо за ваши уроки очень полезные для новичка.

Не знаю как это сделать из коробки.

Не можете подсказать как бы Вы это сделали, примерный план (не из коробки) в трех словах, чтоб я знал что копать.

Я бы взял модуль типа SliderField или просто JS библиотеку с помощью которой можно сделать эти ползунки и написал модуль который связывает раскрытые фильтры представления с вводом из этих полей. Это пожалуй самое быстрое решение. Можно также написать свой хэндлер для фильтрации представления и т.д.

Понял, спасибо, буду учится.

Огромное спасибо за Ваш труд! Уроки реально помогли "въехать" в эту непростую тему.

Денис, здравствуйте. Я новичок в drupal, изучаю проблемным способом, отталкиваясь от задачи. Сейчас возник вопрос: можно ли при помощи модуля views сделать страничный отчет (может быть даже вывод в pdf или т.п.) по заданным критериям, типа комбинированного отчета в Access? Или нужны другие модули? Заранее спасибо!

Можно конечно

Спасибо, буду изучать вопрос.

Здравствуйте, можно ли эти выпадающие списки убрать из поля "содержимое" и поместить в блок с боку?
Использую 8, как я понял он не далеко отошел от друпал 7.
И если можно создать создать блок с фильтрами, то можно чтобы эти фильтры были в одном блоке с поиском?
На счет поиска: на сколько я понял стандартный друпаловский поиск там для декора, а какие вы можете посоветовать настоящие поиски?(гугл, elasticsearch, модули какие-то)

Нашел как сделать:
Структура -> Представления -> Отображения -> РАСШИРЕННЫЕ -> Раскрытая форма в блоке:Да
Структура -> Схема блоков -> Расположить блок -> Раскрытая форма: poisk-page_1 | Views | Разместить блок
Теперь возник такой вопрос: как мне выводить на странице не только анонсы, но и дочерние подтермины.
Например: выбрал фильтр термин "растения" - выводит подтермины "овощи", "фрукты", "ягоды" и т.д, а ниже анонсы страниц.

и если можно, то чтобы в скобках к подтермину было число страниц на этом термине.