Современные интернет-магазины требуют удобства поиска товаров, к сожалению, решить эту задачу используя только лишь товарные категории и форму поиска по сайту удается не всегда, да и стандартный функционал Virtuemart 2 не имеет фильтра в комплекте. Несмотря на это, мы с Вами можем сделать прекрасную, многофункциональную фильтрацию, используя расширение в виде компонента и модуля под названием Virtuemart Custom Filters или есть аналогичный компонент Chery Picker, но лично мне первый кажется более удобным.

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

Введение в настраиваемые поля Virtuemart 2/3

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

Virtuemart-> Товары -> Настраиваемые поля → Создать

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

Тип поля «Строка»

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

Тип поля «Integer»

Числовое поле для хранения целых чисел.

Тип поля «Родитель»

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

Тип поля «Логический»

Позволяет выбрать значение «Да» или «Нет». Например: Подсветка клавиатуры: Да, Сумка для переноски: Нет и т.д

Тип поля «Дата»

Позволяет выбрать дата по средствам интерактивного календаря.

Тип поля «Время»

Если честно, то пока не понял, что это за поле.

Тип поля «Изображение»

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

Тип поля «Атрибут корзины»

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

Тип поля «Общий дочерний вид»

Отображает выпадающий список дочерних товаров.

Тип поля «Редактор»

Позволяет выводить любые HTML данные, при этом при вводе значения доступен визуальный HTML-редактор.

Тип поля «Область текста»

По-сути делает тоже самое что и поле выше, но только без визуального редактора, при этом HTML тоже поддерживается.

Тип поля «Плагины»

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

Настройки настраиваемых полей

  • Заголовок (Название поля, например «Цвет»)
  • Показывать название (Показывать или не показывать название рядом со значением, например Цвет: Красный или Красный)
  • Опубликовано (здесь всё понятно)
  • Родитель (я писал об этом выше)
  • Атрибут корзины (Должны передаваться данные в корзину? Например если Вы хотите видеть в полученном заказе какого цвета был заказан товар, то поле должно быть атрибутом корзины, также это позволяет произвести наценку на характеристику, сформировав тем самым конечную стоимость)
  • Описание (здесь всё ясно)
  • По умолчанию (значение поля по-умолчанию, можно указать несколько значений, разделяя их точкой с запятой «;»)
  • Всплывающая подсказка (при наведении на значение поля)
  • Позиция макета (по-умолчанию все поля выводятся в заданном месте шаблона, но позицию для вывода того или иного поля, вы можете создать самостоятельно. Для этого Вам необходимо отредактировать шаблон карточки товара /templates/ваш-шаблон/html/com_virtuemart/productdetails/default.php, вставив в нужное место следующий код:
<!--?php } if (!empty($this--->product->customfieldsSorted['normal'])) {
 
$this->position = 'normal';
 
echo $this->loadTemplate('customfieldscontent');
 
}

Где «Normal» — это название Вашей позиции, оно может быть любым но исключительно на латинице.

  • Видно только администратору (можете ограничить видимость поля пользователям, тем самым выводим полезную информацию только для себя)
  • Список (позволяет выбирать значения, которые указаны по-умолчанию в виде списка)

Создание настраиваемых полей Virtuemart 2/3

Теперь, создадим необходимые нам поля, в моём случае я создаю два поля типа «Строка» — это поле «Цвет» и «Размер», где поле «Размер» делаю атрибутом корзины.

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

Теперь можем приступать к установки и настройки компонента и модуля Virtuemart Custom Filters, который и будет фильтровать наши товары.

Установка компонента и модуля фильтрация товаров:

  1. Скачиваем фильтр товаров для Virtuemart 2 — компонент  Custom Filters Pro 2.2.9
  2. Устанавливаем весь комплект через стандартный менеджер рассширений
  3. Переходим в раздел «Компоненты» → «Custom Filters»

Настройки и компонента и модуля

Активируем нужные для сортировки поля и столбце «Вид отображения» выставляем желаемый вид отображения фильтра по этому полю. В моем случае для поля «Размер» я выбрал «select», а для поля цвет «checkbox».

Теперь переходим в менеджер модулей и находим модуль «Фильтр товаров VirtueMart», кликаем и переходим к настройкам:

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