Андрей

Андрей

Был в сети 01 августа 2026, 02:46
Заказы принимаю
а там где вываливается весь каталог, group содержит и цифры и буквы: Z2416
Да, действительно, у меня опция была числовая, потому не проверял с буквами. Сделай такой вывод, работает правильно:
{'!msProducts' | snippet : [
	'resources' => -$_modx->resource.id,
	'parents' => 35,
	'limit' => 10,
	'tpl' => 'tpl-shop-item-small',
	'innerJoin' => '{ "Options":{ "class":"msProductOption"}}',
	'groupby' => 'msProduct.id',
	'where' => ['Options.key' => 'group', 'AND:Options.value:=' => $_modx->resource.group.0]
]}
У меня этот код корректно работает, проверено. Если значение только у одного товара то не выводится ничего (текущий исключается в параметре resources).

minishop2 2.8.0-pl (на 2.7.0 также работает), pdoTools 2.12.9-pl.

Включай showLog, и смотри что в запросе. В случае с where должно выводить только совпадения, в отличии от параметра optionFilters, который дополняет where запрос.
Тогда надо сделать так:
{'!msProducts' | snippet : [
	'resources' => -$_modx->resource.id,
	'parents' => 0,
	'limit' => 10,
	'tpl' => 'tpl-shop-item-small',
	'innerJoin' => '{ "Options":{ "class":"msProductOption"}}',
	'groupby' => 'msProduct.id',
	'where' => '{ "Options.key":"group","Options.value:=": '~$_modx->resource.group.0~'}'
]}

И parents можно указать верхний уровень каталога, товары же не в корне сайта лежат, смысл перебирать всё от корня сайта.