Как вывести товары на другой странице категории?

Доброго времени суток!
В minishop2 есть категории коллекций, например, «Летняя», «Купальный сезон» и тд.
В этих коллекциях есть одинаковые подкатегории «Майки», «Шорты» и тд.
Также на сайте есть общий раздел «Майки», в который должны выводиться товары из всех коллекций подкатегории «Майки».
Как написать такой вызов?
Для вывода товаров использую mFilter2.
Пример вызова:
[[!mFilter2?
	&parents=`[[*id]]`
	&element=`msProducts`
	&tpl=`tpl.msProducts.row.custom`
	&tplOuter=`tpl.mFilter2.outer.custom`
	&where=`{"class_key":"msProduct"}`
]]
Как я понимаю, необходимо написать условие в where.
Денис
02 сентября 2019, 16:34
modx.pro
1
639
0

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

Баха Волков
03 сентября 2019, 12:34
+1
Ну чтож, раз никто не ответил то, что-то типа такого:

Создаете сниппет, назовем его getSameCategories, с таким кодом:
<?php

$c = $modx->newQuery('msCategory');
$c->select('id');
$c->where(array(
    'pagetitle' => $modx->resource->pagetitle,
    'id:!=' => $modx->resource->id,
));

$ids = array();
if($categories = $modx->getCollection('msCategory', $c)){
    foreach ($categories as $category) {
        $ids[] = $category->get('id');
    }
}

if (count($ids)) {
    return implode(',', $ids);
}

return;

И в шаблоне общего раздела:

[[getSameCategories:notempty=`
    [[!msProducts?
        &parents=`[[getSameCategories]]`
        ...
    ]]
`]]
    Артем
    03 сентября 2019, 12:59
    1
    +1
    А еще лучше
    $ids = [];
    $c = $modx->newQuery('msCategory', [
        'pagetitle' => $modx->resource->pagetitle,
        'id:!=' => $modx->resource->id,
    ]);
    $c->select(['id']);
    if ($c->prepare() && $c->stmt->execute()) {
        $ids = $c->stmt->fetchAll(PDO::FETCH_COLUMN);
    }
    
    return implode(',', $ids);
    для экономии ресурсов
Денис
04 сентября 2019, 17:21
0
Благодарю за помощь, всё работает!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4