Вывод ресурсов в зависимости от родителя

Пытаюсь вывести в сайтбаре ресурсы, через pdoPage, но почему-то не хочет работать моя конструкция:
[[pdoPage?
	&parents=`0` 
	&resources=`[[+parent:is=`1`:then=`2,3,4`:else=``]][[+parent:is=`5`:then=`6,7,8,9`:else=``]][[+parent:is=`10`:then=`11,12,13,14`:else=``]]`
	&tpl=`NavRazdel`
	&element=`ms2GalleryResources`
]]
Вывожу в шаблоне.
Результат — выводит ресурсы в хаотичном порядке.
Вывод &resources через pdoMenu по этому же принципу работает нормально:
[[pdoMenu?
	&parents=`0`
	&resources=`[[*parent:is=`2`:then=`13,14,146`]][[*parent:is=`133`:then=`13,14,146`]][[*parent:is=`135`:then=`13,14,146`]]`
	&tpl=`NavRazdel`
]]
Почему с pdoPage не получается?
Пробовал по разному:
[[*parent:is=`2`:then=`13,14,146`]]
[[+parent:is=`2`:then=`13,14,146`]]
[[*parent:is=`2`:then=`13,14,146`:else=``]]
Подскажите…
Илья
28 апреля 2016, 13:25
modx.pro
5 261
0

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

Илья
28 апреля 2016, 16:32
0
Уточнение:
Результат — выводит ресурсы в хаотичном порядке.
Это означает — выводятся разные ресурсы из разных PARENT.
    Илья Уткин
    28 апреля 2016, 17:51
    +1
    Попробуй указать
    &parents=`-1`
      Илья
      28 апреля 2016, 19:09
      0
      Не помогло, результат тот же
        Илья
        28 апреля 2016, 21:01
        0
        Убрал вообще &parents=`0`
        Появилась логика, стали выводится ресурсы нужного родителя, но без 2-х шт. Т.е., если указываю :then=`13,14,146`, то выведутся только два ресурса 13 и 14, 146 пропадает; если :then=`6,7,8,9`, то только первые два (6 и 7), остальные не выводятся.
        Илья
        29 апреля 2016, 10:57
        0
        Люди добрые, подскажите, должна ли вообще работать такая выборка с pdoPage:
        &parents=`0` 
        &resources=`[[+parent:is=`1`:then=`2,3,4`:else=``]][[+parent:is=`5`:then=`6,7,8,9`:else=``]][[+parent:is=`10`:then=`11,12,13,14`:else=``]]`
        Вот такая конструкция выводит нужные ресурсы, но почему-то вычитает 2 шт из общего списка:
        [[pdoPage?
            &resources=`[[+parent:is=`2`:then=`226,223,658`:else=``]][[+parent:is=`8`:then=`17,228,489,710`:else=``]][[+parent:is=`37`:then=`751,40,718,720`:else=``]][[+parent:is=`75`:then=`76`:else=``]]`
        	&tpl=`NavRazdel`
        	&limit=`10`
        	&includeThumbs=`190x143,290x194`
        	&includeOriginal=`1`
        	&element=`ms2GalleryResources`
        ]]
        Т.е. из 17,228,489,710 выводит только 17,228, из 226,223,658 выводит 226

        Застрял!
          Евгений Шеронов
          29 апреля 2016, 12:36
          +1
          Почему теперь [[+parent]]?
          Откуда передаётся такой плейсхолдер?

          Проще сделать свой сниппет и написать так:
          &resources=`[[!myMenuParents]]`
          где сниппет будет таким:
          switch($modx->resource->id) {
          	case 0: return '226,223,658';
          	case 8: return '17,227,489,710';
          	case 37: return '751,40,718,720';
          	case 47: return '76';
          	default: return;
          }

          P.S. Может с ошибками написал, не проверял, но должно работать
            Илья
            29 апреля 2016, 13:09
            0
            Почему теперь [[+parent]]?
            Просто с pdoMenu всё работает корректно, вот и пробую с pdoPage

            Попробовал Ваш способ со сниппетом, всё равно выводит ресурсы в хаотичном порядке, без логики.
            Я в PHP не силён, к сожалению.
              Илья
              29 апреля 2016, 13:17
              0
              Извиняюсь, вызвал без кеша [[myMenuParents]] и вроде заработало!!!

              Спасибо!!!
                Илья
                03 мая 2016, 01:35
                0
                Евгений, Вы не подскажите, каким будет сниппет работающий в шаблоне для страниц любой вложенности.
                Сейчас Ваш вариант выводит нужные ресурсы только в родителях, а во вложенных ресурсах водит все ресурсы своего родителя.

                Уделите минутку, подскажите!
                Спасибо!
                  Евгений Шеронов
                  03 мая 2016, 17:09
                  +1
                  У Вас изначально немного странная задача — выводить ресурсы по ID.
                  И в первой версии сниппета у меня опечатка была, 0 стоял вместо 2.

                  $id = $modx->resource->id;
                  $parents = $modx->getParentIds($id, 10, array('context' => 'web')); //10 - это глубина(высота) поиска
                  $parents[] = $id; // в массив можно добавить текущий id ресурса
                  foreach($parents as $parent) {
                     switch($parent) {
                  	case 2: return '226,223,658';
                  	case 8: return '17,227,489,710';
                  	case 37: return '751,40,718,720';
                  	case 47: return '76';
                  	default: return;
                    }
                  }
                Илья Уткин
                29 апреля 2016, 12:42
                +2
                Если parents не указан, в него подставляется id текущего ресурса
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                11