Вывод ресурсов в зависимости от родителя
Пытаюсь вывести в сайтбаре ресурсы, через pdoPage, но почему-то не хочет работать моя конструкция:
Результат — выводит ресурсы в хаотичном порядке.
Вывод &resources через pdoMenu по этому же принципу работает нормально:
Пробовал по разному:
[[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=``]]
Подскажите… Комментарии: 11
Уточнение:
Результат — выводит ресурсы в хаотичном порядке.Это означает — выводятся разные ресурсы из разных PARENT.
Попробуй указать
&parents=`-1`
Не помогло, результат тот же
Убрал вообще &parents=`0`
Появилась логика, стали выводится ресурсы нужного родителя, но без 2-х шт. Т.е., если указываю :then=`13,14,146`, то выведутся только два ресурса 13 и 14, 146 пропадает; если :then=`6,7,8,9`, то только первые два (6 и 7), остальные не выводятся.
Появилась логика, стали выводится ресурсы нужного родителя, но без 2-х шт. Т.е., если указываю :then=`13,14,146`, то выведутся только два ресурса 13 и 14, 146 пропадает; если :then=`6,7,8,9`, то только первые два (6 и 7), остальные не выводятся.
Люди добрые, подскажите, должна ли вообще работать такая выборка с 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Застрял!
Почему теперь [[+parent]]?
Откуда передаётся такой плейсхолдер?
Проще сделать свой сниппет и написать так:
P.S. Может с ошибками написал, не проверял, но должно работать
Откуда передаётся такой плейсхолдер?
Проще сделать свой сниппет и написать так:
&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. Может с ошибками написал, не проверял, но должно работать
Почему теперь [[+parent]]?Просто с pdoMenu всё работает корректно, вот и пробую с pdoPage
Попробовал Ваш способ со сниппетом, всё равно выводит ресурсы в хаотичном порядке, без логики.
Я в PHP не силён, к сожалению.
Извиняюсь, вызвал без кеша [[myMenuParents]] и вроде заработало!!!
Спасибо!!!
Спасибо!!!
Евгений, Вы не подскажите, каким будет сниппет работающий в шаблоне для страниц любой вложенности.
Сейчас Ваш вариант выводит нужные ресурсы только в родителях, а во вложенных ресурсах водит все ресурсы своего родителя.
Уделите минутку, подскажите!
Спасибо!
Сейчас Ваш вариант выводит нужные ресурсы только в родителях, а во вложенных ресурсах водит все ресурсы своего родителя.
Уделите минутку, подскажите!
Спасибо!
У Вас изначально немного странная задача — выводить ресурсы по ID.
И в первой версии сниппета у меня опечатка была, 0 стоял вместо 2.
И в первой версии сниппета у меня опечатка была, 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;
}
}
Если parents не указан, в него подставляется id текущего ресурса
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.