Как не выводить subnav у определённых пунктов меню?

В MODX CMS существует несколько способов, чтобы не выводить subnav у определенных пунктов меню. Рассмотрим некоторые из них.

1. Использование условий в чанке меню:
Вы можете использовать условие в чанке, который используется для вывода меню, чтобы не выводить subnav для определенных пунктов меню. Для этого можно использовать системную переменную [[+isfolder]], которая будет возвращать 1, если текущий пункт меню является директорией (и имеет subnav), и 0, если это просто страница без subnav. Пример:

   <ul>
       [[!pdoMenu?
           &parents=`0`
           &level=`0`
           &outerTpl=`@CODE:<ul>[[+wrapper]]</ul>`
           &rowTpl=`@CODE:<li[[+classes]]><a href="[[+url]]">[[+menutitle]]</a>[[+subnav]]</li>`
           &hereClass=`is-active`
           &rowClass=`[[+isfolder:is=`1`:then=`has-submenu`]]`
           &displayStart=`1`
           &displayChildren=`1`
       ]]
   </ul>

В этом примере, если [[+isfolder]] равен 1, то к классу li будет добавлен класс has-submenu, который может использоваться для скрытия subnav с помощью стилей CSS.

2. Использование расширенных опций pdoMenu:
В MODX Revolution существует пакет pdoTools, который предоставляет различные расширенные опции для pdoMenu. Вы можете использовать опцию &where для определения условий, по которым будут выбираться страницы для создания меню. Пример:

   <ul>
       [[!pdoMenu?
           &parents=`0`
           &level=`0`
           &outerTpl=`@CODE:<ul>[[+wrapper]]</ul>`
           &rowTpl=`@CODE:<li[[+classes]]><a href="[[+url]]">[[+menutitle]]</a>[[+subnav]]</li>`
           &hereClass=`is-active`
           &displayStart=`1`
           &displayChildren=`1`
           &where=`{"template:=": "your-template-alias", "nav_show_subnav:=": "0"}`
       ]]
   </ul>

В этом примере используется условие {"template:=": "your-template-alias", "nav_show_subnav:=": "0"}, которое выбирает только страницы с определенным шаблоном и с nav_show_subnav равным 0, что означает, что subnav не будет выводиться для этих страниц.

3. Использование сниппета Wayfinder:
Кроме pdoMenu, MODX также предоставляет сниппет Wayfinder, который может использоваться для создания меню. Сниппет Wayfinder имеет опцию showSubMenus, которая по умолчанию установлена в true. Если установить его в false, то subnav не будет выводиться для всех пунктов меню. Пример:

   <ul>
       [[Wayfinder?
           &startId=`0`
           &level=`0`
           &outerClass=`menu`
           &innerTpl=`@CODE:<ul>[[+wrapper]]</ul>`
           &rowTpl=`@CODE:<li[[+classes]]><a href="[[+url]]">[[+menutitle]]</a>[[+subnav]]</li>`
           &hereClass=`is-active`
           &showSubMenus=`0`
       ]]
   </ul>

В этом примере опция showSubMenus установлена в 0, что означает, что subnav не будет выводиться для всех пунктов меню.

Это некоторые из способов, которые можно использовать, чтобы не выводить subnav у определенных пунктов меню в MODX CMS. Вы можете выбрать наиболее подходящий для вас способ в зависимости от требований и настроек вашего проекта.