[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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Добавить select выбора чанка вывода опции прямо в окно создания / редактирования опции
github.com/pavel-one/SelectFilters/issues/2
Фариттипа таких monosnap.com/file/9Ujnz6CfZP3ARSXIsRLRVNMaNQ79fh
Не бесплатные и не бесплатно
docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi
Фаритвопрос, а порядок фильтров сейчас как строится? например, чтобы было можно выставить собственный приоритет позиций.
Есть опция, она привязана ко всем категориям на сайте, заполнена во всех товарах. Клиент хочет её выводить в фильтр только в некоторых категориях. Ну и таких опций на сайте естественно много, а клиент хочет этим управлять, вкл/выкл :)
UPD.: я юзаю вышеупомянутый msProductsComposerSelection для этого, но решил уточнить, вдруг и здесь планируется такое счастье.
говносайты на потоке (2-3 дня на сайт) такие кейсы редко встречаются)Нет, не планируется, все что планируется на данный момент можно посмотреть тут github.com/pavel-one/SelectFilters/issues
s20760.h10.modhost.pro/manager/
s20760
JeKS3eJ9BCQi
А то у меня получаются все значения чекбоксами выводить
'ms|vendor:vendors', 'resource|parent:parents'
Эта группа фильтров должна идти последней: resource|parent:parents
А она выводится второй после ms|vendor:vendors
Блок фильтров по каталогам в самой середине: 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',
])}
попробуй так
и название чанков наверное не верно
по идеи так
все есть тут
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
В том и дело, что если группы фильтров через mfilter2 вызывать, то порядок как раз меняется порядком чанков.
А с использованием SelectFilters, порядок сбивается. Этот компонент н умеет походу порядок поддерживать тот который нужен. Он всовывает дефолтные группы фильтров в начало.
Название чанков поменял, тот же результат.
Как ими можно управлять из админки? Компонент SelectFilters создан именно для опций.
выводи фильтры вот так
Unexpected token '~' in expression in e014f8071b522126681529ed92e5b3d5 line 377
Ругается на этот символ ~, я так понял
Что бы KIA была первой в списке?