pdoMenu - как все документы вывести в один уровень

Как из дерева с вложенными документами вывести список одного уровня? Другими словами как вывести вложенные документы в один уровень с родителями?

Дано такое дерево:

  • Ресурс (1)
  • Ресурс (2)
    • Ресурс (3)
    • Ресурс (4)
    • Ресурс (5)
  • Ресурс (6)
  • Ресурс (7)
    • Ресурс (8)
    • Ресурс (9)
    • Ресурс (10)
  • Ресурс (11)
    • Ресурс (12)
    • Ресурс (13)
    • Ресурс (14)
  • Ресурс (15)
  • Ресурс (16)
Нужно составить меню из 4-х ресурсов с выделеными ID: 2,5,7,13. И нужно вывести всё это в один уровень. Возможно ли это?

Пробовал использовать следующую конструкцию:

[[!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, или это бессмысленно?
Василий Столейков
02 января 2014, 18:58
modx.pro
1
2 545
0
Поблагодарить автора Отправить деньги

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

Василий Столейков
02 января 2014, 23:01
0
Почему хотелось использовать pdoMenu, чтобы была возможность использовать класс active, если пользователь на текущей странице.
    Василий Столейков
    02 января 2014, 23:03
    0
    Или лучше делать это вручную с обычным модификатором? Типа:
    [[*id:is='2':then=`active`]][[*parent:is='2':then=`active`]]
    Василий Наумкин
    02 января 2014, 23:19
    0
    pdoMenu выбирает ресурсы, строит из них дерево, и только потом выводит. Вся обработка, вся логика завязана на дерево из ресурсов.

    В твоём случае дерева нет, так что используй pdoResources, а в чанке проверяй id фильтром:
    return $modx->resource->id == $input || $modx->resource->parent == $input
    	? 'active'
    	: '';

    В чанке вызывать так:
    <div class="[[+id:myfilter]]">бла-бла-бла</div>
      Aртур Чикин
      03 января 2014, 23:58
      0
      А с помощью чанков? В tplInner написать
      @INLINE  [[+wrapper]]
      остальное по дефолту.
      Вызвал так и все получилось:
      [[pdoMenu? &parents=`0` &tplInner=`@INLINE  [[+wrapper]]` ]]
        Aртур Чикин
        04 января 2014, 00:14
        0
        Вот так будет семантически правильно:
        [[pdoMenu? &parents=`0` &tplInner=`@INLINE [[+wrapper]]` &tplParentRow=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a></li>[[+wrapper]]` ]]
        Василий Наумкин
        04 января 2014, 09:24
        0
        Точно, не подумал =)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8