К содержанию

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

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

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

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