Выборка товара из разных категорий по условию

Всем привет!
Выборка по библии:
[[!pdoPage? &element=`msProducts` &parents=`10`]]
Это выводит на страничке товары из категории 10.
В моем случае все товары внесены физически в категории 10 и 11, но виртуально все товары (из 10 и 11) разбросаны еще в нескольких категориях 100,110,120 (мультикатегории).
Выборка по выше указанному варианту с указанием нужного parents отлично работает.
Но как изменить этот запрос, чтобы выборка была например из категории 100, но только тех товаров которые попали туда из категории 10?
Любая помощь спасибо!
plazma
31 августа 2015, 20:18
modx.pro
2 187
0

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

Павел Романов
01 сентября 2015, 09:27
+1
Попробуйте так:
&where=`{"parent":"10"}`
    plazma
    01 сентября 2015, 19:37
    0
    Спасибо за отклик! К сожалению такой вариант:
    [[!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 категорий… хелп плиз!
    Иван Бочкарев
    05 сентября 2015, 09:05
    +1
    Маленько не то, может поможет:
    <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 '';
    Автор: Володя Володин
      plazma
      05 сентября 2015, 11:39
      0
      Спасибо! Будем пробовать!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4