Кнопки как в ModStore

День добрый.
Что-то я упускаю, никак не могу понять… как реализовать такие кнопки как в modstore.ru в каталоге — «Все», «Платные», «Бесплатные».
У меня на сайте работает mSearch2 и mFilter2.
Мне нужна такая же дополнительная фильтрация, по другому свойству товара — стране производителя. Но суть, думаю, та же.
Как реализовать такой функционал?

UPD: Предложенный вариант с формированием ссылок рабочий, конечно, но он вызывает перезагрузку страницы.
Как бы решить эту задачу красиво, с Ajax как в МодСтор — ecommerce?paid=1
Михаил
27 января 2026, 00:07
modx.pro
150
0

Комментарии: 11

Сергей Карпович
27 января 2026, 10:41
0
Сделай фильтр чекбоксы, кнопки над карточками — это ссылки на выбранный фильтр, а из основного блока можно скрыть
    Михаил
    27 января 2026, 18:56
    0
    Да, можно и так, попробую
      Михаил
      27 января 2026, 19:07
      0
      Точнее, я думал об этом. Что-то вроде применения двух mFilter2 на одной странице. Показалось некорректным. Но попробую как вариант, спасибо
        Сергей Карпович
        27 января 2026, 20:20
        0
        два mFilter2 — это если нужна логика по сложнее, а тут просто открытие страницы со значением фильтра, поэтому лучше не городить костыли
          Михаил
          28 января 2026, 13:19
          0
          Оказалось не так просто…
          [[!mFilter2@mikmFilter?
                              	&paginator=`pdoPage@pdoPage_m`
                              	&limit=`30`
                              	&parents=`3`
                              	&showEmptyFilters=`false`
                              	[[$pdoPage-prefix?]]
                              	&hideContainers=`1`
                              	&element=`msProducts`
                              	&where=`{ [[!+modx.user.id:is=`235`:then=`"Data.remains:>":0.001`:else=`"Data.remains:>":0.001,"Data.image:IS NOT":null`]]}`
                              	&class=`msProduct`
                              	&sort=`ms|remains:desc`
                              	&filters=`
                              		ms|mat
                              		,ms|cattools
                              		,ms|color
                              		,ms|application
                              		,msoption|ms_SlabsBackLight
                              		,ms|weight
                              		,ms|made_in
                              		,ms|price:number
                              		,ms|remains:number
                              	`
                              	&aliases=`
                                      ms|mat==poroda
                              		,ms|cattools==vidprodukcii
                              		,ms|color==cvet
                              		,ms|application==obrabotka
                              		,msoption|ms_SlabsBackLight==backlight
                              		,ms|weight==tolschina
                              		,ms|made_in==country
                      		
                                  `
                              	&showLog=`0`
                              	&tplFilter.outer.poroda=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.poroda=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.vidprodukcii=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.vidprodukcii=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.cvet=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.cvet=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.obrabotka=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.obrabotka=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.backlight=`tpl.mFilter2.filter.checkbox`
                              	&tplFilter.row.backlight=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.tolschina=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.tolschina=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.country=`tpl.mFilter2.filter.select`
                              	&tplFilter.row.country=`tpl.mFilter2.filter.option`
                              	&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
                              	&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
                              	&tplFilter.outer.ms|remains=`tpl.mFilter2.filter.slider`
                              	&tplFilter.row.ms|remains=`tpl.mFilter2.filter.number`
                              	&tpls=`tpl.msProducts.row_m`
                              ]]
          Вот так у меня формируется список фильтров. Мне нужно на странице каталога в верхней части (как в modstore) поставить 2-3 кнопки, нажатие на которые, отфильтрует результаты по конечному значению фильтра ms|made_in (страна). То есть кнопка «Россия» покажет товары российского производства, а кнопка «Импорт» покажет всю остальную продукцию. И, желательно, чтобы это и выглядело как в modstore, то есть без селектов, а именно кнопкой.
            Сергей Карпович
            28 января 2026, 13:33
            0
            Сделай фильтр по стране чек боксом.

            На Фроне отфильтруй по нужной стране, скопируй ссылку из браузера — это будет к тебя ссылка в первой кнопке.

            Тоже самое сделай со второй
              Михаил
              28 января 2026, 13:40
              0
              По стране «Россия» это делается легко, конечно, а как исхитриться и выбрать фильтром «Импорт», то есть не «Россия»?
                Сергей Карпович
                28 января 2026, 19:18
                0
                выбери все кроме России =)
                  Михаил
                  28 января 2026, 20:11
                  0
                  Понял в чем дело ) Чекбокс один выводился. Переписал вывод — норм. Сергей, спасибо за подсказки!
                    Михаил
                    28 января 2026, 20:11
                    0
                    Понял в чем дело ) Чекбокс один выводился. Переписал вывод — норм. Сергей, спасибо за подсказки!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      11