pdoMenu - как все документы вывести в один уровень
Как из дерева с вложенными документами вывести список одного уровня? Другими словами как вывести вложенные документы в один уровень с родителями?
Дано такое дерево:
Пробовал использовать следующую конструкцию:
Но в таком случае дублируются документы и выводятся следующие в таком порядке: 2,2,5,13,7
Можно ли как-то решить эту задачу с помощью pdoMenu, или это бессмысленно?
Дано такое дерево:
- Ресурс (1)
- Ресурс (2)
- Ресурс (3)
- Ресурс (4)
- Ресурс (5)
- Ресурс (6)
- Ресурс (7)
- Ресурс (8)
- Ресурс (9)
- Ресурс (10)
- Ресурс (11)
- Ресурс (12)
- Ресурс (13)
- Ресурс (14)
- Ресурс (15)
- Ресурс (16)
Пробовал использовать следующую конструкцию:
[[!pdoMenu?
&parents=`0,2,11`
&resources=`2,5,7,13`
&level=`1`
&tplInner=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>`
]]
Но в таком случае дублируются документы и выводятся следующие в таком порядке: 2,2,5,13,7
Можно ли как-то решить эту задачу с помощью pdoMenu, или это бессмысленно?
Поблагодарить автора
Отправить деньги
Комментарии: 8
Почему хотелось использовать pdoMenu, чтобы была возможность использовать класс active, если пользователь на текущей странице.
Или лучше делать это вручную с обычным модификатором? Типа:
[[*id:is='2':then=`active`]][[*parent:is='2':then=`active`]]
pdoMenu выбирает ресурсы, строит из них дерево, и только потом выводит. Вся обработка, вся логика завязана на дерево из ресурсов.
В твоём случае дерева нет, так что используй pdoResources, а в чанке проверяй id фильтром:
В чанке вызывать так:
В твоём случае дерева нет, так что используй pdoResources, а в чанке проверяй id фильтром:
return $modx->resource->id == $input || $modx->resource->parent == $input
? 'active'
: '';
В чанке вызывать так:
<div class="[[+id:myfilter]]">бла-бла-бла</div>
А с помощью чанков? В tplInner написать
Вызвал так и все получилось:
@INLINE [[+wrapper]]
остальное по дефолту.Вызвал так и все получилось:
[[pdoMenu? &parents=`0` &tplInner=`@INLINE [[+wrapper]]` ]]
Вот так будет семантически правильно:
[[pdoMenu? &parents=`0` &tplInner=`@INLINE [[+wrapper]]` &tplParentRow=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a></li>[[+wrapper]]` ]]
Спасибо!
Замени в вызове &tplParentRow на &tpl
Точно, не подумал =)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.