Выборка товара из разных категорий по условию
Всем привет!
Выборка по библии:
В моем случае все товары внесены физически в категории 10 и 11, но виртуально все товары (из 10 и 11) разбросаны еще в нескольких категориях 100,110,120 (мультикатегории).
Выборка по выше указанному варианту с указанием нужного parents отлично работает.
Но как изменить этот запрос, чтобы выборка была например из категории 100, но только тех товаров которые попали туда из категории 10?
Любая помощь спасибо!
Выборка по библии:
[[!pdoPage? &element=`msProducts` &parents=`10`]]
Это выводит на страничке товары из категории 10. В моем случае все товары внесены физически в категории 10 и 11, но виртуально все товары (из 10 и 11) разбросаны еще в нескольких категориях 100,110,120 (мультикатегории).
Выборка по выше указанному варианту с указанием нужного parents отлично работает.
Но как изменить этот запрос, чтобы выборка была например из категории 100, но только тех товаров которые попали туда из категории 10?
Любая помощь спасибо!
Комментарии: 4
Попробуйте так:
&where=`{"parent":"10"}`
Спасибо за отклик! К сожалению такой вариант:
В логе пишет:
[[!pdoPage? &element=`msProducts` &parents=`100`&where=`{"parent":"10"}`]]
пробовал, вываливаются все товары из категории 10.В логе пишет:
0.0002382: Added where condition: class_key=msProduct, parent=10, msProduct.published=1, msProduct.deleted=0
Может что-то с уровнями вложенности категорий у меня не так, но ведь в запросе прямо указываются id категорий… хелп плиз!
Маленько не то, может поможет:
Снипет idsProperty
<div class="row">
<h2 class="text-center">Похожие объекты</h2>
[[msOptionsMy?
&product=`[[*id]]`
&name=`region`
&tplRow=`@INLINE [[+value]]`
&tplOuter=`@INLINE [[+rows]]`
&toPlaceholder=`region`
]]
[[!idsProperty?
&prop=`[[+region]]`
&key=`region`
&toPlaceholder=`ids`
]]
[[!msProducts?
&parents=`0`
&resources=`[[+ids]]`
&tpl=`tpl.properties.row`
&includeThumbs=`700x470`
&depth=`3`
&sortby=`RAND()`
&limit=`3`
]]
</div>
Выводим объекты из этого региона: ПримерСнипет idsProperty
//$key = 'region';
$category = 0;
//$prop = 'значение свойства';
//$key = $scriptProperties['key'];
//print_r($key);die;
$q = $modx->newQuery('msProductOption');
$q->innerJoin('msProduct', 'msProduct', 'msProduct.id=msProductOption.product_id');
$q->where(array('msProductOption.key' => $key, 'msProductOption.value'=> $prop));
$q->sortby('msProductOption.value','ASC');
$q->select('DISTINCT(msProductOption.value), msProduct.id');
$q->where(array('msProductOption.key' => $key));
if (!empty($category)) {
$ids = $modx->getChildIds($category);
$ids[] = $category;
$q->innerJoin('msCategory', 'msCategory', 'msCategory.id=msProduct.parent');
$q->where(array('msCategory.id:IN' => $ids));
}
$result = array();
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$res['id'][] = $row['id'];
}
$result = implode(",", array_unique($res['id'])) ;
}
$modx->setPlaceholder($toPlaceholder, $result);
return '';
Автор: Володя Володин
Спасибо! Будем пробовать!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.