Столкнувшись с необходимостью создания нескольких меню собранных из разных ресурсов одного раздела сайта я был неприятно удивлён тем фактом, что MODx в отличии от Wordpress не имеет такого функционала как создание своего меню, а имеющийся в системе Wayfinder не умеет обрабатывать TV параметры.

Перерыв большое количество сайтов я нашёл хорошее решение: http://www.belaychuk.ru/posts/modx-revolution-wayfinder-tv-filtration-with-getresources

Но для моей задачи – построения пары меню – он был избыточен, поэтому я его упростил. Ниже предлагаю работающий способ требующий минимальных действий:


  1. Создаём TV параметр (у меня был inLeftMenu - чекбокс)

  2. Создаём чанк со списком (leftMenuElements) с таким кодом:
    [[!getResources?
    &parents=`0`
    &limit=`100`
    &tvFilters=`inLeftMenu===1`
    &tpl=`@INLINE [[+id]]`
    &outputSeparator=`,`
    &showHidden=`1`
    ]]


  3. Наконец генерируем наше меню:
    [[!Wayfinder?
    &startId=`3`
    &includeDocs=`[[$leftMenuElements]]`
    &ignoreHidden=`1`
    ]]


    Здесь startId это номер родительского ресурса для всех элементов меню. Чтобы это правильно работало вызов Wayfinder'а должен быть не кешируемый! Т.е. [[!Wayfinder]] вместо [[Wayfinder]]


  4. Вот и всё! Теперь под каждое новое меню создаём свои чанки и TV и радуемся жизни!