Фильтрация tagManager – значение фильтра не из шаблона карточки товаров

Участник @jagger написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

Вы в выводе товаров ограничили шаблон?

Нет, в вызове не ограничил, намеренно, потому что выводить нужно и шаблон 3 и шаблон 21(в прошлом топике это обсуждали - товары с шаблоном 3 сверху по menuindex, а потом товары с шаблоном 21), а фильтровать уже только товары с шаблоном 3.
То есть по смыслу:
В категории выводятся все товары, которые есть в принципе(шаблон 3 и 21), те что в наличии(шаблон 3) выводятся сверху, отсортированы они по menuindex, те, которых нет(шаблон 21) выводятся в конце:

&orderby=`{"template":"ASC","menuindex":"ASC"}`

Но когда я фильтрую товар, мне нет смысла фильтровать те товары, которых нет. В блоке фильтров не должны попадать значение tv с товаров у которых шаблон стоит 21, а они попадают, если такие же значения встречаются у товаров с шаблоном 3, то есть если значения в ТВ пересекаются они попадают, а если не пересекаются то новые значения в фильтрацию не подтягивается.

Попробовал обозначить схематически, что я имею ввиду

0_1523949455608_6c9d5c37-8cfa-48c3-bb3d-e47071d600e5-image.png
Новое значение 200 из товара с шаблоном 21 не подтянулось, как и нужно, а значение 100 из товара 3 добавилось к уже существующим значениям с товара 1 и товара 2, потому что значение совпало.
Возможно это баг?
Потому что новое значение явно не подтягивается, значит наверное так и задумано - брать значение только у ресурсов с тем шаблоном, который указан в настройках ТМ
0_1523949799579_38a25fbe-127e-43c2-9126-c29d93068e3f-image.png
Почему тогда подтягиваются совпадающие значения - возможно это упущение или ошибка=)

Ничего не плонятно. В чём баг?

Новое значение 200 из товара с шаблоном 21 не подтянулось, как и нужно

Если так вам и нужно, то не вижу бага на картинке. Фильтр у вас не отмечен, поэтому он не задействован и выводятся все товары. Циферка "3" у фильтра тоже показывает верно.

Участник @andchir написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

Если так вам и нужно, то не вижу бага на картинке. Фильтр у вас не отмечен, поэтому он не задействован и выводятся все товары. Циферка "3" у фильтра тоже показывает верно.

у товара 3 и у товара 4 стоит шаблон 21. только товар 3 попадает в фильтры, хоть и не должен, а товар 4 не попадает - правильно, потому что у него шаблон не карточки товара, он не указан в настройках как шаблон товаров
То есть исходя из картинки по фильтру должно быть два товара а не три, в фильтрацию попадают товары 1 и 2, но не попадают товары 3 и 4 - шаблон другой, но вот один из них попадает, а попадает он потмоу, что у него в тв такое же значение как у товара 1 и\или 2, если я товару 3 сейчас поставлю значение не 100, а 101, то по фильтру будет два товара
Еще одна схема, может понятнее будет
0_1523959438577_Без имени-2.jpg

То есть алгоритм, как я понимаю такой:
Брать значения для фильтров из шаблонов указанных в tag_mgr2.prod_templates, а фильтровать все что совпадает с этими значениями, то есть при фильтрации нет проверки - это шаблон из tag_mgr2.prod_templates или нет.
То есть модуль видит что есть ресурс отвечающий условию tag_mgr2.prod_templates, берет с него значение для фильтра - 100, а потом все ресурсы у которых в этом ТВ значение 100 участвуют в фильтрации, без проверки на шаблон?
Можно ли как-то добавить проверку на то, что если значение 100 - то, нужно еще глянуть стоит ли у этого ресурса шаблон из tag_mgr2.prod_templates и если да, то тогда фильтровать, а если нет то пропускать?
Наглядно:
Товар 1 имеет шаблон 3, шаблон соответствует шаблону из tag_mgr2.prod_templates, смотрим что у него в ТВ, в тв есть значение 100 - получаем к фильтрации первый товар, со значением в фильтре 100
Товар 2 имеет шаблон 3, шаблон соответствует шаблону из tag_mgr2.prod_templates, смотрим что у него в ТВ, в тв есть значение 100 - получаем к фильтрации второй товар, со значением в фильтре 100
Товар 3 имеет шаблон 21 - пропускается, не отвечает условию по шаблону tag_mgr2.prod_templates
Товар 4 имеет шаблон 21 - пропускается, не отвечает условию по шаблону tag_mgr2.prod_templates
На выходе имеем два товара по фильтру со значением 100
Два других товара при фильтрации просто пропадают, ни по какому из фильтров их не получить - но они просто выводятся, если ничего не фильтровать, а просто зайти в категорию, висят внизу, визуально отрисованы по другому шаблону - нет в наличии

Фильтры берутся по шаблону, но в фильтрации этот шаблон не участвует. Так и задумано. Шаблон означает - откуда брать значения фильтров.

Я понял) Ну так во время отправку формы, добавьте в get ещё и &template=3 да и всё

Участник @andchir написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

Фильтры берутся по шаблону, но в фильтрации этот шаблон не участвует. Так и задумано. Шаблон означает - откуда брать значения фильтров

Спасибо за ответ. Так и понял принцип. А нет возможности добавить такую проверку в пару строк? Что бы при фильтрации проверялся и шаблон? То есть мы фильтруем только карточки товара, все остальное мимо

Участник @jagger написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

Я понял) Ну так во время отправку формы, добавьте в get ещё и &template=3 да и всё

Вариант. Но у значений фильтров выводится количество результатов по фильтру, а это происходит еще до фильтрации
0_1523974773860_b0b6cc2e-afa2-4e8f-b3e4-6e7f6cf362f6-image.png

@dolce ну и эту функцию гляньте, там ведь тоже идёт запрос в базу, нужно я так понимаю и там добавить where

Участник @jagger написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

добавьте в get ещё и &template=3

не сработало, добавил в параметры руками &template=3, выборка таже что и без, ну там и параметры get к тв привязаны

@dolce я не сомневался и не имел ввиду что в get нужно писать вручную

В форму фильтров добавить скрытое поле

<input type="hidden" name="f_template[]" value="3">

С помощью JavaScript Вы можете динамически его добавлять перед началом фильтрации, если нужно.

Участник @andchir написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

С помощью JavaScript Вы можете динамически его добавлять перед началом фильтрации, если нужно.

Добавил в форму, тепрерь get приобрел такой вид

/test-kategorii?f_template[]=3&f_filterTwo[]=100&f_price[from]=498&f_price[to]=498

Параметр f_template[]=3 есть, но теперь после фильтрации в выборку вообще ничего не попадает - пустая страница

&f_price[from]=498&f_price[to]=498

а если это убрать?

Участник @andchir написал в Фильтрация tagManager – значение фильтра не из шаблона карточки товаров:

а если это убрать?

Убрал из строки руками, осталось:

/test-kategorii?f_template[]=3&f_filterTwo[]=100

Нажал ентер - выборка пустая, но появилась левая пагинация, не та которая по шаблону, наблюдал один раз такой момент, начал разбираться почему так, но не смог добиться что бы второй раз это проявилось
0_1523981555471_640077ec-8df3-4be3-a572-4775e2098f35-image.png
ну в общем выборка пустая=(
Убрал в управлении фильтрами, для этой категории фильтр по цене, что бы не руками(вверху говорил человек что это не тоже самое), но все равно пусто
0_1523981800776_78d59983-03b5-4389-bf24-c76960af10f4-image.png
Хотя "левая" пагинация теперь не появляется

"Левую" пагинацию вызывал pdoPage. Остальные задачи так и не решились

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.