mFilter2: Не работает фильтрация при нескольких значения where

Здравствуйте, задача: нужно фильтровать товары, которые выводятся только при заполненности любого из ряда полей.

В итоге если я указываю, только один параметр
&where=`{"Data.price:>":0}`
то всё работает, и выводит и фильтрует.
А если я указываю несколько параметров (всё через OR, должно быть заполнено любое из них)
&where=`{"Data.price:>":0,"OR:Data.year_production:>":0,"OR:Data.made_in:!=":"","Data.manufacturer_company:!=":""}`
то нужные товары также выводит, но уже фильтрация не работает, жму на фильтры, результаты обновляются, но выводит также весь список как будто фильтры не нажимал.

Возможно, у меня какая-то ошибка в JSON, хотя валидатор молчит, или выборку можно сделать как-то иначе, не через where.


[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &parents=`2`
    &limit=`0`
    &where=`{"Data.price:>":0,"OR:Data.year_production:>":0,"OR:Data.made_in:!=":"","Data.manufacturer_company:!=":""}`
    &sort=`ms|vendor:asc,resource|menuindex:asc`
    &tpl=`ns-dashboards.tovar-table-row.tpl`
    &tplOuter=`ns-dashboards.mFilter2.outer.tpl`
    &filters=`
        ms|vendor:vendors,
        ms|product_type:default,
        ms|product_status_2:boolean,
        ms|yadirect:boolean,
        ms|waiting:boolean,
        ms|manager_comment:boolean
    `	
]]
Максим
05 мая 2024, 08:45
modx.pro
191
0

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

Максим
05 мая 2024, 08:48
0
Собственно пока писал пост, пришла идея костыльного решения, отдельным выводом записать в плейсхолдер id отобранных товаров и их передать в фильтр и так всё работает, но пост решил опубликовать, вдруг кому пригодится, или кто-то может предложит решение лучше)

Вот так у меня получилось решить задачу:

[[-Получаем ID товаров для выборки (where) и формируемх их в плейсхолдер для передачи в фильтр]]
    [[!msProducts?
    &parents=`2`
	&limit=`0`
	&tpl=`@INLINE [[+id]],`
	&where=`{"Data.price:>":0,"OR:Data.year_production:>":0,"OR:Data.made_in:!=":"","Data.manufacturer_company:!=":""}`
    &toPlaceholder=`products-to-filter`
]]

[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &resources=`[[+products-to-filter]]`
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1