В 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. Вы можете выбрать наиболее подходящий для вас способ в зависимости от требований и настроек вашего проекта.