[mSearch2] 1.2.0-rc Самостоятельная генерация фильтров
На днях в поддержке mSearch2 был задан вопрос:
То есть, речь идёт о бесконечном количестве свойств у товара, добавляемых в одно текстовое поле, и построении для них фильтров.
Вроде бы, продвинутые возможности расширения класса mFilter2 должны бы с этим справиться? Как оказалось — нет.
В данном случае нам нужно создавать новые фильтры на лету, как если бы их указали в параметре &filters=``. То есть, нам нужны совсем «виртуальные» поля, которых вообще нет, но для них как бы строятся фильтры.
Сделать это штатными средствами у меня не удалось, и тогда я немного изменил код mSearch2 так, чтобы реализовать возможность добавления фильтров, не указанных в &filters=``, из build методов, и не сломать при этом совместимость со старыми версиями.
Теперь вы можете просто обновить mSearch2 и писать в полях опций товаров miniShop2 строки через разделитель в формате «ключ==значение»:
И на выходе получите автоматически сгенерированные фильтры:
Остаётся только добавить нужные записи в системные словари и дело в шляпе! Как мне кажется, возможности для заведений свойств товара теперь открываются просто безграничные.
Значения без разделителей работают как обычно и не выносятся в отдельные фильтры. То есть, имеющиеся теги будут работать как и раньше.
Напоминаю, что до нового года в магазине Simple Dream скидки и mSearch2 можно купить всего 1492.5 руб.
Мне необходимо сделать на сайте фильтры по очень большому количеству параметров. Причем, наборы этих параметров отличаются в зависимости от категории.
Планируется что информация о товарах будет постоянно автоматом импортироваться через API этого поставщика на сайт который я делаю.
С другой стороны, волосы встают дыбом при мысли о ручной настройке такого количества дополнительных полей miniShop2 через механизм плагинов или TV.
Поэтому, пришла такая идея:
Все названия доп.параметров записывать в поле Теги, которое уже реализовано в miniShop2. Например, товару можно записать два таких тега: «Максимальное разрешение видеозаписи|2304x1296» и «Тип видеорегистратора|Стандартный».
Теперь осталось только придумать как сгруппировать эти тэги по первому полю (до разделителя "|") и создать из каждой группы отдельный фильтр.
То есть, речь идёт о бесконечном количестве свойств у товара, добавляемых в одно текстовое поле, и построении для них фильтров.
Вроде бы, продвинутые возможности расширения класса mFilter2 должны бы с этим справиться? Как оказалось — нет.
В данном случае нам нужно создавать новые фильтры на лету, как если бы их указали в параметре &filters=``. То есть, нам нужны совсем «виртуальные» поля, которых вообще нет, но для них как бы строятся фильтры.
Сделать это штатными средствами у меня не удалось, и тогда я немного изменил код mSearch2 так, чтобы реализовать возможность добавления фильтров, не указанных в &filters=``, из build методов, и не сломать при этом совместимость со старыми версиями.
Теперь вы можете просто обновить mSearch2 и писать в полях опций товаров miniShop2 строки через разделитель в формате «ключ==значение»:
И на выходе получите автоматически сгенерированные фильтры:
Остаётся только добавить нужные записи в системные словари и дело в шляпе! Как мне кажется, возможности для заведений свойств товара теперь открываются просто безграничные.
Значения без разделителей работают как обычно и не выносятся в отдельные фильтры. То есть, имеющиеся теги будут работать как и раньше.
Напоминаю, что до нового года в магазине Simple Dream скидки и mSearch2 можно купить всего 1492.5 руб.
Комментарии: 14
Делал тоже самое не так давно, только без лексиконов. Мне показалось так удобнее когда свойства постоянно импортируются вместе с товаром.
То есть первая часть свойства и есть заголовок.
То есть первая часть свойства и есть заголовок.
Как долго я об этом мечтал.
А они будут работать как «И» или «ИЛИ»?
А они будут работать как «И» или «ИЛИ»?
Как обычные независимые фильтры.
Здорово. А разделитель в этом поле какой? Точка-запятая?
Теперь вы можете просто обновить mSearch2 и писать в полях опций товаров miniShop2 строки через разделитель в формате «ключ==значение»
После последних изменений в msearch2 и minishop у всех этот механизм адекватно работает? У меня перестали генерироваться опции и фильтры не работают по тегам вида key==value
Спасибо! Вроде помогло, правда в одном разделе все равно какая-то мистика осталась, в файле импорта свойств больше, а показывает всего 2 и в них не все возможные параметры. Но видимо уже в другом причина
А можно ли использовать это без ms2? Могу ли я создать обычное доп поле, и писать туда json вида [«tag1==12»,«tag2==34»], а потом на странице вызывать
[[!mFilter2? &parents=`30` &tpls=`tpl.teamplates.new` &includeTVs=`img` &filters=`tv|flt`]]
Я сейчас попробовал, не получилось, <label for="mse2_tv|flt_0" class="">
<div id="mse2_tv|flt_0-styler" class="jq-checkbox" unselectable="on" style="-webkit-user-select: none; display: inline-block; position: relative; overflow: hidden;"><input type="checkbox" name="tv|flt" id="mse2_tv|flt_0" value="[" tag1="=12","tag2==34"]"" style="position: absolute; z-index: -1; opacity: 0; margin: 0px; padding: 0px;"><div class="jq-checkbox__div"></div></div> ["tag1==12","tag2==34"] <sup>1</sup>
</label>
Выдало…
отличная работа!
я так понимаю, что фильтр, как для цены таким образом создать нельзя?
я так понимаю, что фильтр, как для цены таким образом создать нельзя?
Можно создать любой фильтр, если написать свои методы.
А данное изменение позволяет добавлять из этих методов вообще новые фильтры, не указанные в параметре &filters.
А данное изменение позволяет добавлять из этих методов вообще новые фильтры, не указанные в параметре &filters.
а если я хочу использовать тот же, что и для price.
для самого свойства price понятно, пишем:
сейчас поля res у меня выводятся, как чекбоксы в фильтре. а есть ли возможность применить для res метод number и tpl'ы такие же, как и для price?
для самого свойства price понятно, пишем:
&filters=`ms|price:number`
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
а как быть, если я добавил:&filters=`ms|price:number,msoption|tags`
а в tags товаров пишу res==1, для другого товара res==5 и т.д. сейчас поля res у меня выводятся, как чекбоксы в фильтре. а есть ли возможность применить для res метод number и tpl'ы такие же, как и для price?
Если переписать генерацию фильтров.
Автогенерация из опций по умолчанию делает только чекбоксы, а несколько фильтров полю указать нельзя.
Поэтому придётся делать свой кастомный класс фильтрации и там колдовать.
Автогенерация из опций по умолчанию делает только чекбоксы, а несколько фильтров полю указать нельзя.
Поэтому придётся делать свой кастомный класс фильтрации и там колдовать.
msoption|tags — очень круто!
Подскажите, пожалуйста, как можно вывести только популярные фильтры тегов?
Например, где количество значений больше числа N или варианты ответа выдадут большой результат.
Буду рад если подскажете куда копать. Спасибо!
Подскажите, пожалуйста, как можно вывести только популярные фильтры тегов?
Например, где количество значений больше числа N или варианты ответа выдадут большой результат.
Буду рад если подскажете куда копать. Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.