Как вывести товары на другой странице категории?
Доброго времени суток!
В minishop2 есть категории коллекций, например, «Летняя», «Купальный сезон» и тд.
В этих коллекциях есть одинаковые подкатегории «Майки», «Шорты» и тд.
Также на сайте есть общий раздел «Майки», в который должны выводиться товары из всех коллекций подкатегории «Майки».
Как написать такой вызов?
Для вывода товаров использую mFilter2.
Пример вызова:
В minishop2 есть категории коллекций, например, «Летняя», «Купальный сезон» и тд.
В этих коллекциях есть одинаковые подкатегории «Майки», «Шорты» и тд.
Также на сайте есть общий раздел «Майки», в который должны выводиться товары из всех коллекций подкатегории «Майки».
Как написать такой вызов?
Для вывода товаров использую mFilter2.
Пример вызова:
[[!mFilter2?
&parents=`[[*id]]`
&element=`msProducts`
&tpl=`tpl.msProducts.row.custom`
&tplOuter=`tpl.mFilter2.outer.custom`
&where=`{"class_key":"msProduct"}`
]]
Как я понимаю, необходимо написать условие в where. Комментарии: 4
Ну чтож, раз никто не ответил то, что-то типа такого:
Создаете сниппет, назовем его getSameCategories, с таким кодом:
И в шаблоне общего раздела:
Создаете сниппет, назовем его 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]]`
...
]]
`]]
А еще лучше
$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);
для экономии ресурсов
Да, так намного лучше
Благодарю за помощь, всё работает!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.