Каталог товаров на Drupal 7 и Views. Часть 6 - Настраиваем фильтр сортировки товаров для пользователей.

image

05.05.12
Comments 17

Всем любителям CMS Drupal привет, продолжаем серию уроков по модулю Views. Сегодня попробуем сделать панель быстрого поиска по каталогу товаров. Наверное все вы много раз видели в интернет магазинах, досках объявлений или просто на сайтах с каталогом чего либо такие фильтры, когда пользователь может отсортировать содержимое сайта по каким либо параметрам, такими параметрами могут быть цена, компания производитель, год выпуска и т.д. Давайте попробуем создать нечто подобное.

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

Пройдем в созданное нами представление под названием «Телефоны», откройте его для редактирования. С самого начала уроков у вас должно было остаться отображение со стандартным названием Page, если такового не оказалось, то это не страшно, просто создайте новое отображение типа Страница и назовите или переименуйте Page в «Фильтр». Заголовок страницы назовите «Результаты поиска».

После этого, сразу переходите в раздел «Критерии фильтрации». Нажмите на кнопку «Добавить». Из всех элементов выберите пункт «Содержимое: Категория (field_category)», не забывайте что вверху окошка настроек нужно указать что вы применяете настройки именно к этому отображению, а не ко всем, впрочем всегда нужно следить за этим.

Views

Дальше нужно выбрать способ выбора, выберите «Выпадающий».

Views

На следующем этапе нужно отметить галочкой пункт «Раскрыть этот фильтр для посетителей и позволить его изменять». Как раз этот пункт настроек и позволяет нам создать фильтр с помощью которого пользователь может отсортировать материалы сайта по каким либо критериям. В поле «Метка» введите значение «Производитель». Сохраните настройки.

Views

Наверное вам стало интересно как это будет выглядеть на нашем сайте, хорошо, давайте создадим блок в котором будем выводить фильтры.

В правой части на странице отображений в дополнительных настройках найдите пункт «Раскрытая форма в блоке» и установите ее значение «Да». Теперь сохраните настройки отображения.

Views

Далее нужно вывести полученный блок в какой либо регион, для этого пройдите в «Структура -> Блоки». Найдите блок раскрытой формы и выведите его в регион «Шапка» ( я использую стандартную тему Bartik). Пройдите на сайт и посмотрите что получилось.

Как видите, появился фильтр с выпадающим списком, с помощью которого можно отсортировать товары по производителю.

Теперь продолжим работать с Views, вернитесь к редактированию нашего отображения под названием «Фильтр».

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

Итак надеюсь у вас все получилось приступаем к выводу поля «Цена».

Добавьте пункт критерия фильтрации под названием «Содержимое: Цена (field_cena)».

В настройках критериев фильтрации данного поля отметьте галочкой пункт «Раскрыть этот фильтр для посетителей и позволить его изменять». Затем в поле метка введите «Цена до:». В пункте оператор установите значение «Меньше, либо равно», этот оператор означает то, что пользователь сможет отсортировать товары по доступной для него цене.

Views

Все отлично, фильтр работает, но бывает такое, что по выбранным параметрам товаров может не оказаться, и пользователь вместо телефонов увидит пустую страницу, такого быть не должно, нужно известить человека о том что по выбранному запросу товаров не найдено, для этого в модуле Views предназначен специальный пункт настроек «Поведение при отсутствии результата». Найдите его на странице конфигурации отображения «Фильтр». Нажмите на кнопку добавить. Выберите пункт «Глобальный: текстовое поле».

Views

Дальше в поле метка укажите значение «Нет результатов», а в текстовом поле напишите: По вашему запросу товаров не найдено, или что-то в этом роде. Сохраните настройки.

Views

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

Теперь вы знаете, как организовать быстрый поиск по каталогу товаров с помощью модуля Views. В конце урока у вас должна получится такая вот красота:

Views

Думаю многие из вас после этого урока окончательно влюбились в Drupal, убедившись, что эта CMS имеет очень гибкие настройки, которые совершенно не требуют вмешательства в исходный код.

Комментарии

Михаил 22.06.12

Здравствуйте Сергей!
У меня вопрос по фильтрам. Правда не знаю насколько он относится к теме о Views, если я не туда пишу, то извените заранее.
Я хочу сделать фильтр сортировки по расстоянию в виде выпадающего списка. Можно ли это сделать с помощью Views или нужен какой то отдельный модуль?
Такие вещи часто используют сайты по продаже недвижимости или сайты знакомств.
То есть к примеру: человек ищет квартиру и выбирает в выпадаючем списке город, а в другом выпадающем списке он может выбрать радиус от этого города скажем 10км, 20км, 30км, 50км. Я так понимаю, что это должно быть как то связано с картой Google или Jandex.
Блин, сложно так на пальцах обьяснить. Ну для примера вот такой-же фильтр как тут: quoka.de
Можно ли вообще такое реализовать на Drupal? Если можно, то расскажите пожалуста поподробнее как это сделать.

admin 23.06.12

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

Михаил 23.06.12

Города можно сделать через словарь таксономии. Но вопрос состоит в том как можно сделать такую фильтрацию по радиусу от заданного пункта, а будет ли это поле селектбокс или итежер, это уже мелочи.

Дмитрий 04.03.13

Добрый день, прочитал серию статей, спасибо Вам большое, очень полезная информация! Узнал много нового, но читал их с определённой целью, а именно создать каталог товаров подобного типа - http://www.konditerka.com/catalog/ . Подскажите, пожалуйста, как реализовать сие чудо средствами друпал 7 и его модулей. Зранее спасибо!

admin 05.03.13

Как раз на днях делал точно такой же каталог. Подождите до выходных, напишу статью, как раз собирался. А вообще в этой серии статей я использовал немного неправильный подход, так как на время написания с друпалом был мало знаком, в общем для больших каталогов эти уроки не подойдут. Нужно использовать контекстные фильтры.

Dobit 18.09.13

Здравствуйте.
Что-то не могу найти у вас эту статью с правильным подходом создания каталога. очень надо. или поделитесь пожалуйста ссылкой где можно посмотреть

admin 20.09.13

Вот неплохой способ, с неограниченной вложенностью, но я там все же некоторые моменты по своему делал http://www.drupal.ru/node/60911.

admin 27.04.14

В этом видео уроке я сделал более продвинутый каталог товаров http://sirega.ru/video/cozdanie-kataloga-tovarov-na-drupal-7-s-neogranic....

Юрий 04.03.13

Классные статьи, спасибо, очень помог :)
Остался один вопрос: Как двигать фильтры по порядку (как бы вес им задать) ?

Дмитрий 24.04.13

Здравствуйте. Спасибо за статью. Не понял эту фразу "В правой части на странице отображений в дополнительных настройках найдите пункт «Раскрытая форма в блоке» и установите ее значение «Да». Теперь сохраните
настройки отображения." Обьясните подробнее, как создать блок с отображением фильтра. Модуль view у меня, кстати, англоязычный.

Александр 04.12.13

Можно ли, чтобы результаты поиска отображались в каком-то заданном блоке? Например, я ввожу данные в фильтр, который находится в правой колонке, а результат формируется в блоке "содержание" этой же страницы. Причём в блоке "содержание" есть контент какой-то. И второй вариант, когда фильтры находятся на титульной странице, после нажатия submit'a автоматически загружается станица, на которой и формируются результаты поиска в определённом блоке? Спасибо за внимание и за чудесный сайт =)

Александр 05.12.13

Привет!

Огромное спасибо за статью! как заставить виевс отображать фильтрацию ввиде чекбоксов ане селект?

Дьяченко Денис 26.04.14

вот этот урок и и скал в сети. А увас аж с самого начала. с создания словарей терминов. Здорово, все очн понятно, ничего лишнего."!!!!!!!

Анна 28.04.15

Добрый день! Спасибо огромное за Ваши уроки по созданию каталога. Очень пригодились!
Хотела спросить пробовали ли реализовать - слайдер (бегунок) при выборе диапозона цены? Способов начиталась много (модулей и скриптов), какой бы Вы посоветовали? Заранее, спасибо, за ответ.

fox72 10.05.15

Годная статья. Помогла решить проблему. Только не забудьте указать, что AJAX надо включить. Иначе в блоках раскрытые фильтры не будут работать. Полдня над этим бился

fox72 10.05.15

Как исключить вариант --Любой-- из результатов фильтра

fox72 10.05.15

Нашел! Поставить галку в чекбоксе "Обязательно" под группой настроек "Тип раскрытого фильтра" в настройках фильтра

Комментировать