Как добавить id ресурсов в выборку pdoResources

Как мне добавить в получившуюся выборку еще несколько ресурсов с заранее известными Id?

[[!pdoResources? &resources=`1,2,3` &tpl=`0` &parents=`10` &returnIds=`1`]]
так выводит только 1,2,3 — а нужно включая 1,2,3.

Уже отчаялся в этом вопросе, неужели никак?!
Картер
18 марта 2015, 20:34
modx.pro
5 359
0

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

Lori
19 марта 2015, 08:03
0
Вам надо вытащить ресурсы парента с id=10 + ресурсы с id 1,2,3? Я правильно понял?
    Картер
    19 марта 2015, 10:54
    0
    Да, правильно! На данный момент вижу способ запускать pdoResources два раза, что не есть хорошо, как я понимаю(
      Lori
      19 марта 2015, 10:58
      0
      можно сделать два парента: парент 10 и парент Y ресурсов с айди 1,2,3. и в параметре &resources исключить из выборки все остальный ресурсы парента Y, кроме ресурсов 1,2,3 соответственно. К примеру:
      [[!pdoResources? 
      &parents=`10, Y` 
      &resources=`-4,-5,-6` 
      &tpl=`0` 
      &returnIds=`1`]]
        Картер
        19 марта 2015, 11:15
        0
        В том то и беда, что у ресурсов с id 1,2,3,n — паренты разные все( и по мимо этих ресурсов у их родителей есть еще ресурсы…
        Объясню для чего мне это вообще нужно. Есть каталог товаров, есть ресурсы с дополнительными категориями,
        у ресурсов TV с данными о доп категориях (22||25||29). Написал сниппет, который находит ID всех ресурсов у которых доп категории совпадают с текущей, сниппет возвращает мне id этих ресурсов(1,2,3).

        Конечно может есть возможность с помощью where обойтись и без доп. сниппета, но я чет сомневаюсь.
        Код сниппета:
        if(empty($category_id) or !is_numeric($category_id)) return '';
        /*prod_subcategory*/
        $tvId=88; 
        $tvArr = $modx->getCollection('modTemplateVarResource', array('tmplvarid'=>$tvId)); 
        
        $resArr = array(); 
        foreach ($tvArr as $tv) { 
            if(!empty($tv->value)){
                $valueArr = explode('||',$tv->value);    
                foreach($valueArr as $value){
                    if($value == $category_id){
                        $resArr[] = $tv->contentid;
                    }
                }
            }
        }
        return implode(',',$resArr);
          Пашок
          Пашок
          19 марта 2015, 11:32
          0
          Разве так нельзя?

          [[!pdoResources? &parents=`0` &resources=`[[!сниппетваш]]` ]]
            Картер
            19 марта 2015, 11:33
            0
            Так он выводит только ресурсы полученные из сниппета(
    Картер
    19 марта 2015, 11:14
    0
    коммент удален автором
      Картер
      19 марта 2015, 11:31
      2
      0
      [[pdoResources? &parents=`10` &returnIds=`1` &toPlaceholder=`prodIds`]]
      [[pdoResources? &resources=`[[+prodIds]],1,2,3` ]]
      //или со сниппетом
      [[pdoResources? &resources=`[[+prodIds]],[[getProductSubCategory? &catalog_id=`[[*id]]`]]` ]]
      Если будет одна запятая в &resources=`,` — сниппету пофиг, он ее игнорит.

      По другому ничего не придумал, сломал весь мозг(

        Пашок
        Пашок
        19 марта 2015, 11:34
        0
        Добавляйте в сниппет параметр с данными [[+prodIds]], и там их дополняйте своими id… после возвращайте сниппетом весь список id (своих и из параметра [[+prodIds]])…
          Пашок
          Пашок
          19 марта 2015, 11:35
          0
          Типо того:
          [[pdoResources? &resources=`[[getProductSubCategory? &catalog_id=`[[*id]]` &prodIds=`[[+prodIds]]`]]` ]]
            Картер
            19 марта 2015, 11:36
            0
            Ну это только от запятой лишней избавит, а она в принципе и так игнорируется. Но для эстетики пригодиться, спасибо!
              Пашок
              Пашок
              19 марта 2015, 12:12
              0
              По идее это должно решить вашу задачу…
                Картер
                19 марта 2015, 12:18
                0
                Павел, задача решена в начале этой ветки, ваше решение лишь добавляет эстетики, проблему оно не решает.
                Проблема заключается в том, что при таком решении необходимо вызывать pdoResources два раза на странице.
        Владимир
        19 марта 2015, 12:17
        0
        Не совет, но: а два вызова pdoResources разных не вариант использовать? Два вместе. )))
        Один для 1,2,3 другой для остальных.
          Картер
          19 марта 2015, 12:21
          0
          С двумя вызовами и сделал, но хотелось бы с одним.
          Просто мне казалось, что pdoResources должен уметь справляться с такими вещами элементарно, ну например в &resources=`+1,+2,+3`.

          Два вызова pdoResources, не оптимально я считаю(
            Пашок
            Пашок
            19 марта 2015, 12:45
            0
            Да, было бы неплохо иметь что-то такое. :)

            Однако что-то подсказывает, что это решить можно без нововведений в pdoResources…
          Илья Уткин
          19 марта 2015, 15:02
          0
          [[!pdoResources? 
              &parents=`0` 
              &where=`{"parent":10,"OR:id:IN":[1,2,3]}`
              &returnIds=`1`
          ]]
            Василий Наумкин
            19 марта 2015, 15:12
            +1
            А так выберутся только прямые потомки ресурса с id = 10 или с id 1,2,3.

            Без дополнительного сниппета здесь никак не обойтись.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            18