[mSearch2] Версия 1.4.1 с улучшенным фильтром
Привет, друзья! Пока в Мюнхене проходит конференция, я полирую mSearch2.
Улучшения коснулись блока «Вы выбрали». Раньше все фильтры были в куче, а теперь понятно, что именно и где выбрано. Было — стало:
Чтобы это заработало после обновления, вам нужно зайти в outer чанки фильтров и добавить класс filter_title к их названиям. То есть
Те, кто уже кастомизировал фильтр под свои нужды, знает, что в javascript классе mSearch2 есть массив options, в котором хранятся настройки для работы с элементами фильтра.
Так что в новой версии я добавил параметр &filterOptions сниппету mFilter2. Теперь вы можете указать ему JSON строку с настройками и они заменят таковые в классе mSearch2.
Третье большое изменения — фильтр научился работать со значениями по умолчанию ТВ параметров. Раньше, если значения ТВ не было в БД, фильтр о нём не знал. Теперь логика работы изменена, и значения по умолчанию фильтруются наравне с остальными.
Еще немного багфиксов и улучшений:
— Исправлена работа фильтра boolean.
— Исправлен баг с работой кнопки очистки, если &limit=`0` (нужно обновить pdoTools еще).
— Исправлена работа фильтра с отключенными friendly_urls.
— Процессор индексации теперь понимает JSON в ТВ параметрах. То есть, по идее, он может индексировать MIGX значения, но насколько хорошо это будет работать — не знаю.
Новая версия уже в магазине, можно обновляться.
Улучшения коснулись блока «Вы выбрали». Раньше все фильтры были в куче, а теперь понятно, что именно и где выбрано. Было — стало:
Чтобы это заработало после обновления, вам нужно зайти в outer чанки фильтров и добавить класс filter_title к их названиям. То есть
<h4>[[%mse2_filter_[[+table]]_[[+filter]]]]</h4>заменить на<h4 class="filter_title">[[%mse2_filter_[[+table]]_[[+filter]]]]</h4>Если новый класс не будет найден, то блок «Вы выбрали» будет работать, как и раньше — без разделения на фильтры.Те, кто уже кастомизировал фильтр под свои нужды, знает, что в javascript классе mSearch2 есть массив options, в котором хранятся настройки для работы с элементами фильтра.
var mSearch2 = {
initialized: false,
options: {
wrapper: '#mse2_mfilter',
filters: '#mse2_filters',
results: '#mse2_results',
total: '#mse2_total',
pagination: '.mse2_pagination',
//...
},Раньше, если вы хотели изменить эти настройки, вам нужно было скопировать default.js, переименовать и указать в системных настройках. Понятное дело, что обновления больше не затрагивали этот файл.Так что в новой версии я добавил параметр &filterOptions сниппету mFilter2. Теперь вы можете указать ему JSON строку с настройками и они заменят таковые в классе mSearch2.
[[!mFilter2?
&parents=`0`
&filterOptions=`{
"wrapper": "#new_filter",
"filters": "#new_filters",
"pagination": "#my_pagination"
}`То есть, вы можете менять настройки javascript без изменения кода. Если вам не нужно радикально переписать логику работы, то этого хватит для многих кастомизаций.Третье большое изменения — фильтр научился работать со значениями по умолчанию ТВ параметров. Раньше, если значения ТВ не было в БД, фильтр о нём не знал. Теперь логика работы изменена, и значения по умолчанию фильтруются наравне с остальными.
Еще немного багфиксов и улучшений:
— Исправлена работа фильтра boolean.
— Исправлен баг с работой кнопки очистки, если &limit=`0` (нужно обновить pdoTools еще).
— Исправлена работа фильтра с отключенными friendly_urls.
— Процессор индексации теперь понимает JSON в ТВ параметрах. То есть, по идее, он может индексировать MIGX значения, но насколько хорошо это будет работать — не знаю.
Новая версия уже в магазине, можно обновляться.
Комментарии: 14
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.


И не было бы обидно (так как это open-source и я прекрасно понимаю это) если бы хоть комент не подчистил… не порядочно с твоей стороны!
На написание правильного присоединения таблиц, чтобы это нормально работало при больших объёмах, ушло более 3х секунд.
А твой комментарий я убрал просто потому, что он не нужен.
А твой комментарий просто заставил меня уже этим заняться, раз начали писать свои решения. Код отличается, и на мой взгляд серьёзно:
Ты сначала присоединяешь все ТВ к ресурсу, а потом уже фильтруешь по id и имени. Мне кажется, что мой вариант быстрее, ибо присоединяются только нужные ТВ.
Твоё негодование мне непонятно. Никто тебя ни о чём не просил, ничего не обещал и ничего у тебя не брал. Ты сам решил проблему, поделился своим решением и подопнул меня заняться этим вопросом. Я решил его самостоятельно и включил свой вариант в основной код.
Казалось бы, все должны быть рады, но нет, нужно прибежать с разоблачениями.
В своё оправдание могу заявить, что кручусь как белка в колесе и просто об этом не подумал. Есть проблема — решил, остался ненужный коммент — убрал.
Спасибо тебе большое, что заставил меня это сделать! Держи в ответ новый раздел документации.
Зависимые фильтры — это круто конечно, но можно добавить визард (цепочка зависимых фильтров) или скрывать или отображать те или иные фильтры если они не попадают под критерий (но это уже дело техники). Вижу в примере заменен вид стандартных плейсхолдеров ...{$pagetitle}… — хорошо, а то путаница и порой невозможность выполнить сниппет в INLINE иногда вызывает неудобство (но это уже PDO). От себя 5 копеек, сегодня напоролся, может пригодится: в карту контекста не попадают ресурсы помеченные на удаление, как результат getParentIds, getTree, getChildIds их не увидят. Мне пришлось ручками сувать в карту эти ресурсы, а потом уничтожать их после работы моего метода, дабы не влиять на дальнейшие скрипты после работы метода. Хочу воспользоваться моментом, так сказать удовлетворить любопытсво, так как пишу большой плагин для MS2, скажи пожалуйста сколько ты видел работающих плагинов (а не компонентов расширяющих функционал через класс) для своего магазина? Именно плагинов, и не просто доп полей, а именно тех что не плохо дополняют функционал??? И на сколько «болезненена» может быть его переделка на Ms3 если он использует почти все системных событий и имен action плагина miniShop2?
По-настоящему зависимые фильтры не должны грузить эти данные, а тут они просто скрываются, потому что логика работы фильтра совсем другая.
Это нормально, так и должно быть.
Полный modstore.pro
Новая версия miniShop будет стараться всё делать максимально безболезненно.
Отлично, надеюсь на это!
Уверен, что при разработке новой версии minishop совместимость на уровне событий будет сохранена.