[SelectFilters] - выбор фильтров для mFilter2
Всем привет, написал простенькое дополнение которое решает одну очень надоевшую проблему — клиент не может выбирать какие опции miniShop2 попадут в фильтр товаров mFilter2. В общем дополнение добавляет чекбокс в окно создания и редактирования опций, в комплекте также сниппет подготовки поля 'filter'
Использование
Перед вызовом mFilter2 вызываем сниппет SelectFilters, в default передаем свойства, которые не относятся к msOption
{set $filters = '!SelectFilters' | snippet: [
'default' => [
'ms|price:number', 'ms|vendor:vendors'
]
]}
В сниппете mFilter2 в параметре filters указываем нашу переменную'filters' => $filters
Сниппет getCaption
Сниппет getCaption достает название опции не из лексиконов (как по умолчанию в минишопе), а из базы данных таблицы msOption.
Чаще всего это необходимо при автоматическом создании опций, либо если вы не хотите объяснять клиенту как создавать опции в лексиконах
Использование
Использование сниппета максимально простое: сниппет ждет на вход ключ msOption.В outer чанка вывода примените модификатор getOption, вот например как это выглядело бы в стандартном чанке tpl.mFilter2.filter.outer
<fieldset id="mse2_{$table}{$delimeter}{$filter}">
<!-- <h4 class="filter_title">[[%mse2_filter_[[+table]]_[[+filter]]]]</h4> -->
<h4 class="filter_title">{$filter | getCaption}</h4>
{$rows}
</fieldset>
Вот собственно и все, дополнение бесплатное и скоро надеюсь появится в modstoreИсходники
Modstore
Поблагодарить автора
Отправить деньги
Комментарии: 35
Прикольно. Немного похоже на msProductsComposerSelection
Хз, не использовал его если честно)
В ближайших планах:
Добавить select выбора чанка вывода опции прямо в окно создания / редактирования опции
github.com/pavel-one/SelectFilters/issues/2
Добавить select выбора чанка вывода опции прямо в окно создания / редактирования опции
github.com/pavel-one/SelectFilters/issues/2
Павел молодец. То же думал запилить. Разобрался как раз с полями. Но хотел отдельный вкладкой запилить.
Может заодно и зависимые опции сделаете?
типа таких monosnap.com/file/9Ujnz6CfZP3ARSXIsRLRVNMaNQ79fh
Не бесплатные и не бесплатно
типа таких monosnap.com/file/9Ujnz6CfZP3ARSXIsRLRVNMaNQ79fh
Не бесплатные и не бесплатно
Это есть в официальной документации
docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi
docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi
А как 4 параметра последовательно делать?
круто, спасибо за дополнение!
вопрос, а порядок фильтров сейчас как строится? например, чтобы было можно выставить собственный приоритет позиций.
вопрос, а порядок фильтров сейчас как строится? например, чтобы было можно выставить собственный приоритет позиций.
Так же, как и лежит у вас в базе данных, сортировка тоже в планах github.com/pavel-one/SelectFilters/issues/3
написал простенькое дополнение которое решает одну очень надоевшую проблему — клиент не может выбирать какие опции miniShop2 попадут в фильтр товаров mFilter2Получается единый набор опций для всех категорий? Есть (или может планируется ) возможность их разделить по категориям?
Получается единый набор опций для всех категорий? Есть (или может планируется ) возможность их разделить по категориям?А в случае если вы выводите опции без дополнения у вас не единый набор?) По моему что с дополнением, что без него у вас и так один и тот же набор, а вот выводить опцию или нет уже решает сам mFilter
Всё верно, набор единый. Но я говорю про кейс от клиента, у меня он максимально часто встречается:
Есть опция, она привязана ко всем категориям на сайте, заполнена во всех товарах. Клиент хочет её выводить в фильтр только в некоторых категориях. Ну и таких опций на сайте естественно много, а клиент хочет этим управлять, вкл/выкл :)
UPD.: я юзаю вышеупомянутый msProductsComposerSelection для этого, но решил уточнить, вдруг и здесь планируется такое счастье.
Есть опция, она привязана ко всем категориям на сайте, заполнена во всех товарах. Клиент хочет её выводить в фильтр только в некоторых категориях. Ну и таких опций на сайте естественно много, а клиент хочет этим управлять, вкл/выкл :)
UPD.: я юзаю вышеупомянутый msProductsComposerSelection для этого, но решил уточнить, вдруг и здесь планируется такое счастье.
Есть опция, она привязана ко всем категориям на сайте, заполнена во всех товарах. Клиент хочет её выводить в фильтр только в некоторых категориях. Ну и таких опций на сайте естественно много, а клиент хочет этим управлять, вкл/выклНу увы, это дополнение не про это, я с пол года работал в «студии» где делал «сайты» на потоке, когда делаешь
я юзаю вышеупомянутый msProductsComposerSelection для этого, но решил уточнить, вдруг и здесь планируется такое счастье.Нет, не планируется, все что планируется на данный момент можно посмотреть тут github.com/pavel-one/SelectFilters/issues
Для простых каталогов однозначно круто-полезно будет :) спасибо за дополнение!
Подскажите. У меня если отметить «Показать в фильтрах», а потом снять отметку то она возвращается. Получается что я не могу удалить опцию из фильтра если один раз её добавил?
Поправил, обновитесь
Обновился не помогло
Кэш браузера пробовали очищать? Еще раз проверил, у меня все работает
Да, я всё вычистил. кеш браузера, core/cashe, Полностью удалил дополнения. Переустановил не помогло. Убираю галочку. Сохраняю открываю опцию галочка на месте.
Не знаю) Попробуйте с инкогнито) Поднял тестовый, на нем тоже все ок
s20760.h10.modhost.pro/manager/
s20760
JeKS3eJ9BCQi
s20760.h10.modhost.pro/manager/
s20760
JeKS3eJ9BCQi
Дополнение работает. В инкогнито работает. Возвращаюсь в обычный режим не удаляется. Буду искать. Спасибо
Подскажите как сделать чтобы автоматически понимало что поле нужно выводить не чекбоксами а слайдером, как фильтрация по цене?
А то у меня получаются все значения чекбоксами выводить
А то у меня получаются все значения чекбоксами выводить
Приветствую, подскажите пожалуйста, как поменять порядок групп фильтров? К примеру 'default' => [
'ms|vendor:vendors', 'resource|parent:parents'
Эта группа фильтров должна идти последней: resource|parent:parents
А она выводится второй после ms|vendor:vendors
'ms|vendor:vendors', 'resource|parent:parents'
Эта группа фильтров должна идти последней: resource|parent:parents
А она выводится второй после ms|vendor:vendors
нужно поместить чанки этих фильтров последними наверное
Спасибо, сделал, кеш чистил, все равно не правильная последовательность…
Блок фильтров по каталогам в самой середине: prnt.sc/gPEm6FcerM3r
Блок фильтров по каталогам в самой середине: prnt.sc/gPEm6FcerM3r
Прикрепи код вызова
{set $filters = '!SelectFilters' | snippet: [
'default' => [
'ms|vendor:vendors', 'resource|parent:parents'
]
]}
{$_modx->runSnippet('!mFilter2', [
'element' => 'msProducts',
'class' => 'msProduct',
'showEmptyFilters' => 1,
'limit' => 12,
'tplOuter' => 'mFilter2OuterTpl',
'tpls' => 'listProductTpl,gridProductTpl',
'includeTVs' => 'available',
'includeThumbs' => 'medium',
'tplPageWrapper' => '@INLINE
- {$prev}{$pages}{$next}
'tplPageActive' => '@INLINE {$pageNo}',
'tplPage' => '@INLINE {$pageNo}',
'tplPagePrev' => '@INLINE «',
'tplPageNext' => '@INLINE »',
'tplPagePrevEmpty' => '@INLINE «',
'tplPageNextEmpty' => '@INLINE »',
'filters' => $filters,
'aliases' => 'ms|vendor==vendor,
msoption|marka==marka,
msoption|model==model',
'ajaxMode' => 'button',
'filterOptions' => '{
«more_tpl»: "<button class=\«btn btn-blue btn-rounded btn_more\»>Загрузить еще"
}',
'tplFilter.outer.default' => 'filterSelectOuter',
'tplFilter.row.default' => 'filterSelectRow',
'tplFilter.outer.vendor' => 'filterCheckboxOuter',
'tplFilter.row.vendor' => 'filterCheckboxRow',
'tplFilter.outer.marka' => 'filterSelectOuter',
'tplFilter.row.marka' => 'filterSelectRow',
'tplFilter.outer.model' => 'filterSelectOuter',
'tplFilter.row.model' => 'filterSelectRow',
'tplFilter.outer.resource|parent:parents' => 'filterSelectOuter',
'tplFilter.row.resource|parent:parents' => 'filterSelectRow',
])}
а зачем тут SelectFilters?
попробуй так
по идеи так
docs.modx.pro/komponentyi/msearch2/snippetyi/mfilter2#%D0%A7%D0%B0%D0%BD%D0%BA%D0%B8-%D0%B8-%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
попробуй так
...
'filters' => 'ms|vendor:vendors,
parent:parents',
...
и название чанков наверное не вернопо идеи так
'tplFilter.outer.resource|parent' => 'filterSelectOuter',
'tplFilter.row.resource|parent' => 'filterSelectRow',
все есть тутdocs.modx.pro/komponentyi/msearch2/snippetyi/mfilter2#%D0%A7%D0%B0%D0%BD%D0%BA%D0%B8-%D0%B8-%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
Вот же в документации к SelectFilters пример использования: prnt.sc/Pr7uUq8L0j7o
В том и дело, что если группы фильтров через mfilter2 вызывать, то порядок как раз меняется порядком чанков.
А с использованием SelectFilters, порядок сбивается. Этот компонент н умеет походу порядок поддерживать тот который нужен. Он всовывает дефолтные группы фильтров в начало.
Название чанков поменял, тот же результат.
В том и дело, что если группы фильтров через mfilter2 вызывать, то порядок как раз меняется порядком чанков.
А с использованием SelectFilters, порядок сбивается. Этот компонент н умеет походу порядок поддерживать тот который нужен. Он всовывает дефолтные группы фильтров в начало.
Название чанков поменял, тот же результат.
Я честно не могу понять зачем для этих фильтров использовать сниппет SelectFilters?
Как ими можно управлять из админки? Компонент SelectFilters создан именно для опций.
выводи фильтры вот так
Как ими можно управлять из админки? Компонент SelectFilters создан именно для опций.
выводи фильтры вот так
'filters' => $filters, ~ 'ms|vendor:vendors,
parent:parents',
Спасибо, попробовал так, но пустая страница и ошибка:
Unexpected token '~' in expression in e014f8071b522126681529ed92e5b3d5 line 377
Ругается на этот символ ~, я так понял
Unexpected token '~' in expression in e014f8071b522126681529ed92e5b3d5 line 377
Ругается на этот символ ~, я так понял
а, ну там запятая наверное
'filters' => $filters ~ ',ms|vendor:vendors,
parent:parents',
Ура, заработало, спасибо огромное за помощь)))
Супер. Не за что ;-)
А можно еще вопрос, тоже касается сортировки и mfilter2, но тут задача попроще вроде, но тоже не могу докумекать, как реализовать. Можно ли как-то поменять в выпадающем списке порядок: prnt.sc/4nPxdi19Oc7D
Что бы KIA была первой в списке?
Что бы KIA была первой в списке?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.