Куда идем?

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

В Virtuemart 3 есть дополнительные поля, которые позволяют задать для товаров любые характеристики. Но, как бы странно это не звучало, стандартный функционал Virtuemart не позволяет осуществлять фильтрацию по этим полям. В этом деле на помощь нам приходят сторонние расширения, и сегодня речь пойдет об одном из лучших в вопросе фильтрации – Custom Filters Pro от breakdesigns.net.

Custom Filters vs Custom Filters Pro

На сайте разработчиков есть два варианта расширения:

  • Бесплатное – Custom Filters
  • Коммерческое – Custom Filters Pro€ 28.90 (на текущий момент).

Бесплатная версия практически ничего собой не представляет, поэтому далее речь пойдет именно о коммерческой версии фильтра.

Custom Filters Pro. Основные функции

Давайте посмотрим, что разработчики предлагают нам за, без малого, 30 евро:

  • Фильтрация осуществляется комплексно, сразу по нескольким параметрам и цене. Такими параметрами могут быть категория, производитель, и любой другой параметр из созданных дополнительных полей Virtuemart.
  • Поиск может быть настроен на любое или точное совпадение слов. Таким образом «Желтая футболка» и «Футболка желтая» будут восприниматься поисковым механизмом фильтра одинаково, и он  выдаст один и тот же результат.
  • Поиск ведется, в том числе, по мета-тегам и дополнительным полям.
  • Для ускорения своей работы расширение применяет кэш.
  • Два режима загрузки результатов: AJAX или HTTP;
  • Кнопка «Сбросить фильтр»;
  • Индексация опций фильтра поисковыми системами (по умолчанию отключена);
  • Оптимизация работы фильтра;
  • Умный поиск;
  • Отображения категорий в виде переключателей, выпадающего списка, флажков, ссылок;
  • Выбор страниц, на которых будет отображаться фильтр;
  • Техническая поддержка в течение 4-х месяцев.

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

Допустим, вы продаете футболки 2 цветов (красный и синий) и 2 размеров (большой и маленький). В остатках у вас 2 красных больших футболки и 0 красных маленьких, а синие есть все. Представим, что пользователь выбрал первой опцией в фильтре красный цвет футболок. Фильтр уже на этом этапе знает, что красные футболки могут быть двух размеров, но маленького размера красных футболок нет. Так зачем в этом случае показывать пользователю возможность выбора маленького размера, если результатов по такому варианту фильтрации всё равно не будет? Правильнее показать ему только опцию с большими размерами, поскольку по ней будут результаты.

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

1

Вообще, модуль Custom Filters Pro имеет очень много настроек. Давайте рассмотрим их подробнее.

Custom Filters Pro. Взгляд изнутри

Custom Filters Pro состоит из модуля, компонента и нескольких плагинов. Нас интересует модуль и компонент, т.к. именно они содержат все настройки.

Поподробнее о встроенных параметрах модуля.

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

2

3

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

4

5

В настройках компонента (Компоненты – VM Custom Filters) показываются все созданные дополнительные поля Virtuemart. Их можно снять с публикации, и тогда в фильтре вы их не увидите, поиск по ним будет невозможен. Это актуально, например, в том случае, когда вы хотите показать дополнительное поле в карточке товара, но не хотите разрешать фильтрацию по нему.

6

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

Доступны такие варианты:

  • Всегда;
  • Поиск;
  • Категория;
  • Производитель;
  • Цена;
  • Поиск ИЛИ Категория ИЛИ Производитель;
  • Поиск ИЛИ Категория ИЛИ Производитель ИЛИ Цена;
  • Поиск ИЛИ Категория И Производитель;

7

Вернемся к настройкам модуля. Вкладка «Фильтр по категориям» содержит множество настроек: настройки отображения дерева категорий, загрузки иконок закрытого и открытого состояния и даже позиции этих иконок (справа или слева).

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

Есть еще одна опция, о которой хотелось бы упомянуть подробнее. Это режим загрузки результатов. Custom Filters Pro может загружать результаты фильтрации как классическим способом, с перезагрузкой страницы, так и с использованием технологии AJAX. Этот способ позволяет изменять страницу динамически, не перезагружая ее полностью. Это очень удобно и очень красиво. Кроме того, доступные параметры фильтрации в модуле фильтра также будет подгружаться через AJAX. Как это работает лучше один раз увидеть, чем сто раз услышать. Посмотрите ДЕМО.

Custom Filters Pro. Процесс создания фильтра

Давайте посмотрим, как создать полноценный фильтр, используя Custom Filters Pro.

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

8

Там же, во вкладке Параметры можно настроить:

  • количество продуктов в ряду;
  • количество продуктов на странице;
  • допустимый шаг для пагинации;
  • выбор макета для отображения результатов поиска. По умолчанию Custom Filters использует макет категории Virtuemart, но можно создать свой макет.

9

В настройках модуля (Расширения – Менеджер модулей – CF Filtering Module), находятся все основные параметры расширения Custom Filters.

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

Там же, во вкладке «Модуль» можно настроить кнопку «Сбросить фильтр», установить индексирование опций поисковыми системами, задавать порядок отображения фильтров. Для создания простейшего фильтра оставим все настройки по умолчанию. И смотрим результаты своей работы.

10

Custom Filters Pro. Сложные фильтры

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

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

К сожалению, стандартные дополнительные поля Virtuemart не позволяют создавать такие фильтры. Но разработчики Virtuemart предусмотрели возможность создания собственных уникальных дополнительных полей, с помощью плагинов. У breakdesigns.net есть такой плагин, позволяющий создавать сложные фильтры. Он называется Custom Fields For All и стоит дополнительно 17 евро. Я бы не советовал связываться с дополнительными полями, созданными через плагины, но если без сложных фильтров вам никак не обойтись, то этот вариант вполне годится.

11

В завершение хочется сказать, что Custom Filters Pro – замечательное дополнение к интернет-магазину. Он прост и гибок в настройке, сортирует товары по всевозможным параметрам.  Я использую это расширение очень часто.  В нем есть и недостатки, но в целом, могу советовать его к покупке и применению.

P.S.: В одной из следующих статей я расскажу про еще одно, не менее популярное расширение фильтрации товаров Virtuemart, которое является, пожалуй, главным конкурентом Custom Filters Pro. О каком расширении идет речь? Пишите в комментариях. Первый, ответивший правильно, получит Custom Filters Pro для Virtuemart 3.0.16 в подарок!

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
-2
Virtuemart 3 Multiple Customfields Filter
0
Валерий, мимо.
-1
Cherry Picker!
-1
Аркадий, всё верно. Приз придет вам на указанный email :-)
-1
Cherry Picker
0
Сергей, верно, но поздно. Аркадий был первым.
-2
Cherry Picker. Где можно забрать приз?
-1
А кто-то работал с этим фильтром, в связке с Custom Fields For all?
Каким образом можно задать и вывести разноцветные Colour Buttons, как на нижнем скриншоте. в нижнем ряду кнопок в фильтре - в одной кнопке несколько цветов?
-1
Provato, при использовании Custom Fields For all вам нужно создавать типы полей, в менеджере настраиваемых полей VM, через плагин. Т.е. тип поля там будет "Плагин". Далее выбираете плагин Custom Fields For all. Далее сохраняете. После этого увидите типы полей, доступных через плагин. Как-то примерно так. Точнее, к сожалению, не напишу.
На сайте разработчика при покупке становится доступен мануал по компоненту. Вы не смотрели его?
-1
Установила этот модуль и при выборе в Привязка модуля - Применить ко всем страницам, сайт перестает работать((( В чем может быть проблема? Старая версия Виртуемарта 2.0.10?
так жаль, Черри пикер тоже не работает, а фильтр нужен, товаров много(((
-1
Алена, посмотрите какую ошибку выдает PHP, когда сайт перестает работать. Напишите ее сюда.
-1
А у меня ни в какую не хочет фильтр дружить с категориями товаров
По всем свойствам и по производитель работает отлично, но стоит включить в фильтре по категориям, на сайте сразу перестаёт работать фильтрация.
Вернее она работает по всем параметрам, но стоит поставить галочку напротив требуемой категории, как все свойства этой категории и производители пропадают.
Что может быть причиной? Может кто сталкивался с таким.
Joomla 3.6.5 , VM 3.2.1 версия фильтра 2.4.2
-1
Лена, для категорий используйте стандартный модуль категорий VM. Категории не должны быть частью фильтра. Они составляют ваш каталог. В настройках же фильтра укажите, чтобы он подбирал параметры в зависимости от категории (там есть такая опция). Таким образом, перейдя в ту или иную категорию, вы будете видеть в фильтре только параметры, которые есть у товаров заданной категории. Это весьма удобно.
-1
А фильтр по рейтингу можно реализовать?
-1
Shell, в данном фильтре я не видел фильтра по рейтингу. А вообще, есть вот такой фильтр: https://cmsmart.net/virtuemart-extensions/custom-filter-for-virtuemart . В нем фильтрация по рейтингу реализована. Но с ним я не работал и не могу ничего сказать про его качество.
-1
Добрый день, у меня виртуемарт 3.2.4,
Custom Filters 2.4.2 . при переносе сайта с рег ру на руцентр модуль фильтров стал показывать все фильтры (пустые - непустые)... все настройки однотипны... рег ру PHP Version 5.6.30, ник ру 5.6.31.... ничего дополнительно к имеющемуся не устанавливала...не сталкивались?
-1
Зоя, покажите сайт с проблемой.
0
Добрый день, ошибка чудесным образом пропала, когда я создала НОВЫЙ модуль с теми же настройками. Невнимательность и кеш тут не при чем: передо мной копия сайта на другом хостинге со всеми настройками (на кот все работает), а кеш я очистила раз 15 всеми известными мне способами... я НЕ ЗНАЮ почему так получилось... Спасибо, что откликнулись...
0
Добрый день, скажите, можно ли сделать для разных категорий две разные страницы "результаты поиска" (т.е в категориях шаблоны списков товаров разные, а при фильтрации пока что все сбрасывает на один шаблон)
0
Зоя, честно говоря, никогда не думал в этом ключе. Страница результатов поиска - она же единая. Модуль фильтра для разных категорий тоже один. Можно, конечно, в макете проверять ID категории, из которой выдаются результаты и в зависимости от этого изменять структуру макета, но это всё равно как-то странно, ведь результаты поиска могут быть и из разных категорий.
0
Смотрите 1) имеются пусть две категории виртуемарт с разными шаблонами 2)имеется два экземпляра модуля (т.е. для каждого модуля можно сделать свой шаблон Модуля) 3) допустим вы создаете два пункта меню типа "страница результатов" . 4) итого каждый модуль привязан к своей категории и своей странице результатов 5) ну и в итоге не работает)))
0
Зоя, а как вы привязывайте каждый из модулей к той или иной странице результатов? На сколько я помню, в фильтре нет такой настройки.
Вы можете попробовать сделать так:
1) Отключить SEF на сайте
2) По очереди активировать сначала один, а потом другой пункт меню с результатами фильтрации и записать URL страниц результатов.
3) В URL будет отличаться какой-то параметр. Скорее всего это будет ItemID. Активируйте оба пункта меню с результатами и попробуйте вручную перейти по первому и второму URL. Проверьте, открываются ли разные страницы с результатами при этом.
4) Если открываются разные страницы, можно действовать дальше. Создайте альтернативный макет для одного из модулей с фильтров и попробуйте изменить в нем URL для страницы, которая будет открываться в результате фильтрации на тот, что записан у вас.
Несколько сумбурное объяснение, но в целом должно быть понятно. Не уверен, что это будет работать, но можно попробовать.
0

Цитирую Wedal:

Зоя, а как вы привязывайте каждый из модулей к той или иной странице результатов? На сколько я помню, в фильтре нет такой настройки.
.


Пункт меню - ну как минимум имеет свой ид... ну, в общем, примерно так ка Вы и писали.... результат так себе, - вариант с ид категории (как Вы писали выше) оказался перспективней
0
Добрый день! Вы не знаете как можно вывести диапозон цен в этом фильтре, чтобы СРАЗУ показывал интервал в категории по типу яндекс маркета или связного например, а не когда ползунок на слайдере двигаешь?
0
Max, в настройках фильтра для этого есть опция "Динамический диапазон".
0
Эта функция включена, но цены все равно не отображаются (диапозон цен есть, но он невидим пока фильтр цен не начнешь использовать), надо php копать разрабы сказали в файле modules/mod_cf_filtering/renderHelper.php А я в php не понимаю.
0
А у меня чё только не делал при включении модуля 500 ошибка. Не подскажите что делать. Все модули разных версий перепробовал не в какую. У меня куплен был про версия. На одном сайте идёт а чуть поновей нет. Joomla! 2.5.28 VirtueMart 2.6.22
0
kbt72, прежде всего разберитесь с тем, какая именно ошибка. Обычно в логах она указывается. Тогда будет понятно, куда копать дальше. Но я думаю дело в том, что у вас старые Joomla и VM.
0
А не подскажете как можно вывести фильтрацию по полям, есть категория в ней есть подкатегории, в подкатегориях выводится фильтрация по полям, а в категории нет, но на странице в категории под категориями выводятся товары подкатегории, а фильтры по полям не подгружает, как можно это реализовать?
0
Banditman, а каким образом у вас выводятся товары подкатегорий в родительской категории? Если это сделано путем добавления И родительской И дочерней категорий в настройках каждого товара, то фильтр должен работать. Если же это сделано путем внедрения в макет родительской категории дополнительного PHP кода, выводящего товары дочерних категорий, фильтр работать не будет, т.к. он ничего не знает о привязке товаров дочерних категорий к родительской.
0
Здравствуйте. Интересно, можно ли сделать так, чтобы кнопка показать всплывала возле чекбокса с информацией об общем количестве товаров, согласно выбранной конфигурации фильтра? Например как на фильтре магазина юлмарт
0
Romario, только настройками - нет. Можно, если дописать код. Кроме того, я не помню, умеет ли фильтр по умолчанию выводить общее количество товаров, которое будет показано. По-моему нет.
0
Здравствуйте! Пробую настроить сей замечательный модуль.... Когда создаём пункт меню в скрытом меню, имеет значение, где он располагается? Поясню:
Изначально структура меню такая:
Каталог
Оборудование
- категория оборудования 1
- категория оборудования 2
- категория оборудования 3
Материалы
- категория материалов 1
- категория материалов 2
- категория материалов 3
Расходники
- категория расходников 1
- категория расходников 2
- категория расходников 3
Куда встраивать меню "страница результатов" в этой иерархии?
0
LiZa, "страница результатов" - это техническая страница. Т.е. не предполагается, что пользователь будет переходить на нее через меню. Он попадет на нее автоматически, когда воспользуется фильтром. Поэтому данную страницу обычно располагают в скрытом меню. Это такое меню, которое создано в админке и активировано, но не имеет модуля отображения на сайте. Это будет работать.
0
Wedal, здравствуйте! Подскажите, а как Вы решили такую задачу: отработал фильтр и вывел товары. Вы просматриваете выбранный товар и видите кнопку "Вернуться : В оборудование" (в нашем случае) . И при клике на эту кнопку возвращаетесь в Категорию оборудования, а не назад на фильтрованную страницу. Где этот заветный код кнопки "Вернуться"? Как исправить, чтобы вернуться назад ( как если бы возвращались по стрелку в браузере)?
0
LiZa, эта ссылка находится в макете карточке товара Virtuemart. /productdetails/default.php (он находится или в папке компонента или в папке шаблона, если уже переопределен туда). Замените ее на конструкцию типа:

Код:

 <a onclick="javascript:history.back(); return false;">Назад</a>

0
Спасибо большое!!!
0
Здравствуйте.
А вот интересно - когда мы фильтруем по ключевым словам или по категориям - то на странице результатов фильтрации к урлу не прибавляется айдишник той категории, из которой мы делали фильтрацию. В результате при сбросе фильтра мы остаемся на пустой странице результатов. Хотя ожидаемый результат - это список товаров той категории, находясь в которой начинали фильтровать.
Как-то можно его получить?
0
Dmitriy, я делал это так: в макете фильтра получал из URL ID категории. Далее, если он существует, подменял ссылку сброса таким образом, чтобы пользователь просто попадал на основную страницу категории.
0
Здравствуйте. Может кто сталкивался и подскажет, как и каким образом можно вывести настраиваемое поле в виде ползунка. Скорее всего нужно создать вид настраиваемого поля, а каким образом не могу понять.
0
Дмитрий, для этого вам понадобится дополнительный плагин от того же разработчика: https://breakdesigns.net/extensions/joomla/custom-fields-for-all

Со своей стороны могу сказать, что постоянно применяю фильтрацию по диапазонам на этом фильтре. Все работает прекрасно.
0
Не могу разобраться, как мне сделать фильтрацию по динамическому диапазону, например, ширина товара от 10 см до 300 см, и ползунки как в фильтрации по цене. Это выполнимо? Нет ли случайно примера воплощения этого в жизнь или хотя бы сайта с готовым примером?
0
diadora83, этот фильтр умеет фильтрацию по заданному диапазону, не по динамическому. Т.е. минимальное и максимальное значения задаются вами вручную.

Для поддержки такой фильтрации помимо расширения фильтра вам понадобится также дополнительное расширение с этого же сайта - Custom Fields for All.
Поля, которые должны фильтроваться по диапазону, должны быть созданы через это расширения (тип поля - Плагин и выбрать этот плагин).
0
А как можно реализовать вывод результатов фильтрации в разные макеты категорий?
На сайте два типа товаров (стулья и шкафы) и у каждого свой шаблон вывода списка товаров. Но как только включаю фильтр, то результаты в обеих категориях начинают выводиться одинаково. А хочется сохранить исходные макеты.
0
Евгений, можно сделать хитро. Базовый макет результатов фильтрации, он же макет категории - превращаем в макет-прокладку. В нем мы получаем пару параметров:
1) option из URL. Он может быть com_virtuemart или com_customfilters
2) ID текущей категории товаров

Далее создаем 3 подмакета:
1) Обычный макет категории
2) Макет результатов фильтрации для категории 1
3) Макет результатов фильтрации для категории 2

Далее добавляем в макет-прокладку несколько проверок IF и подставляем тот или иной подмакет в каждом случае. Например, если option == com_virtuemart, то очевидно, что это не результаты фильтрации и нужно использовать обычный макет категории. А если option == com_customfilters И ID категории == 1, то выводим подмакет результатов фильтрации для категории 1.

Таким хитрым способом вы можете задать уникальные подмакеты для каждой категории товаров в результатах фильтрации. При этом вам не потребуется делать ни одного хака.
0
Здравствуйте! Ещё возникла нестандартная задачка - а можно фильтр впихнуть после описания категории, но перед списком товаров? Чтобы он был "внутри"?

- описание категории
- фильтр
- список товаров и впоследствии результаты фильтрации
0
Евгений, хороший вопрос. Вообще, вы можете вывести позицию модуля внутри макета компонента следующим кодом:

Код:

<?php echo JHtml::_('content.prepare', '{loadposition! позиция_модуля}'); ?>


(восклицательный знак нужно убрать!)
Но есть нюанс в данном случае. CF Pro загружает макет результатов фильтрации по AJAX и отдельно от загружает измененный макет модуля фильтра, и тоже по AJAX. Что у вас получится, если вы вставите модуль в макет результатов - я не скажу. Но кажется, что ничего хорошего. Попробуйте.
0
спасибо, но чуда не произошло :( фильтр срабатывает, но видно только результаты фильтрации, сам фильтр исчезает ...
0
Добрый день, утро, вечер!
В настройках модуля фильтра для Пользовательских полей отсутсвует возможность выводить их Выпадающим списком (такое возможно только для Категорий или Производителей) - Display type: Drop-down list.
Можно ли как-то "прикрутить" данную возможность к Пользовательским полям?
0
generalll, зайдите в Компоненты -> Custom Filters Pro. Там будет список всех полей. В нем, в колонке "Вид отображения" можно задать для любого поля вид выпадающего списка.
0
Спасибо!
Заработало!
Теперь почти как планировал. Но... Получается неудобно: 2 поля, название и поле выбора. Подскажите где искать/исправить внешний вид?
0
Внешний вид или в настройках модуля фильтра или переопределить макеты модуля в шаблон и там подправить их. Сами макеты в папке с модулем, подпапке tmpl. Но там их править нельзя - это хак. Нужно переопределить в шаблон.
0
Спасибо.
Переопределение в шаблон для файла default.php работает, а вот для renderHelper.php (в нём тоже зашит внешний вид) - нет (((
1
В новых версиях фильтра весь внешний вид вынесен в переопределяемые макеты. В старых - да, была такая проблема. Сейчас ее нет.