Поиск по диапазону, названию товара, преобразование чекбоксов в селект в стандартном модуле фильтра mod_jshopping_filters

Делал все для Joomla 2.5.7 + JS 3.12.2

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

Для этого копируем файл /modules/mod_jshopping_filters/tmpl/default.php в /templates/{имя вашего шаблона}/html/mod_jshopping_filters/default.php.

Т.е. теперь модуль будет брать свой layout с из нашего шаблона, а не из самого модуля.

Все модификации с layout (шаблонами вывода компонента/модуля) рекомендуется делать в шаблоне Joomla, путем переноса файла layout в /templates/{имя вашего шаблона}/html/{название компонента/модуля}/{опционально: название view}/{название layout}.php. Это позволит сохранить ваши правки при обновлении joomla и ее компонентов.
Более подробно можно почитать в официальной документации

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

f3

Открываем /modules/mod_jshopping_filters/mod_jshopping_filters.xml и после вот этого кода

добавляем следующее

Путем этих изменений мы добавили 5 настроек. Теперь добавим функционал Для начала будем редактировать файл /templates/{имя вашего шаблона}/html/mod_jshopping_filters/default.php Находим строчку

и до тега </form> заменяем весь код на

Теперь открываем /components/com_jshopping/lib/jtableauto.php

После

Добавляем

Этим мы добавили в SQL запрос поиск по названию. Учтите, если язык отличен от русского, то нужно модифицировать запрос. Это я оставлю на ваши плечи.

И сразу же после предыдущего кода добавим

Здесь мы производим обработку диапазонных значений. Обрабатываться будет даже если мы введем только минимальное или максимальное значение.
Как видно по условиям — в расчет берем только положительные числа. Можете поправить под себя.

Так как мы добавили новый параметр extra_fields_ft и name_search, нам надо добавить его в функции.
Открываем components/com_jshopping/lib/functions.php. Ищем функцию getBuildFilterListProduct.

После

Добавляем

После

Добавляем

Вроде ничего не забыл. Если что-то не заработает — пишите
Вкратце, что сделали:
1. В шаблоне фильтра добавили условия, по которым у нас выводятся селекты, форма поиска по имени, вывод двух полей для поиска по диапазону (кстати, можно подключить плагин слайдера)
2. В функциях добавили считывание новых переменных, которые передаются из фильтра
3. В sql запрос добавили поиск по имени и диапазону

Результат можете увидеть:

f1f2

  • Ksenia

    Подскажите как сделать наоборот: селект в чекбоксы в списке производителей?

    • Delfi

      Ксения, увы, уже давно не использую JoomShopping и под рукой нет тестового сайта, чтобы посмотреть по коду. Можете попробовать спросить на форуме http://joomlaforum.ru/index.php?topic=247124.0 , я там размещал такую же статью и там достаточно людей, которые смогут подсказать.