MODX. Wayfinder, компонент для создания меню

Wayfinder — компонент для создания меню или списка ссылок. Существует как для MODX evo так и для revo.

Параметры

&config — Имя внешнего php файла с настройками меню

Формат: default | breadcrumb | cssplay— basicdropdown | cssplay— dropdown | cssplay— dropline | cssplay— flyout | cssplay— flyoutrev | cssplay— upmenu | mollio | slidingdoors
Значение по умолчанию: default
Примечание: В этом файле находятся шаблоны и параметры для отображения меню. Файл конфигурации должен иметь название filename.config.php. Примеры расположены в папке: /assets/snippets/wayfinder/configs/
Пример:
&config=`breadcrumb`

&debug — Режим отладки

Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Установить режим отладки для диагностики.
Пример:
&debug=`1`

&displayStart — Показать начальную папку, указанную в startId

Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Если &displayStart=1 заставит Wayfinder вывести ссылку на документ, используемый в качестве &startId, используя шаблон &startItemTpl. Параметр работает, если только &startId не равен нулю.
Пример:
&displayStart=`1`

&excludeDocs — Исключаемые документы

Формат: ID документов, разделенных запятой
Значение по умолчанию: нет
Примечание: список любых документов, разделенный запятыми
Пример:
&excludeDocs=`6,7,8`

&fullLink — Вывести полный URL

Формат: 0 | 1
Значение по умолчанию: 0
Пример:
&fullLink=`1`

&hereId — Id документа, текущего для генерируемого меню.

Значение по умолчанию: текущий id
Примечание: Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета.
Пример:
&hereId=``

&hideSubMenus — Скрывать подменю и выводить для активного пункта

Формат: 0 | 1
Значение по умолчанию: 0
Пример:
&hideSubMenus=`1`

&ignoreHidden — Выводить документы не отмеченные для показа в меню

Формат: 0 | 1
Значение по умолчанию: 0
Пример:
&ignoreHidden=`1`

&includeDocs — Документы, обязательные для вывода

Формат: ID документов, разделенных запятой
Значение по умолчанию: нет
Пример:
&includeDocs=`5,6,7`

&level — Количество уровней в меню

Формат: число
Значение по умолчанию: 0
Примечание: 0 — показывать все уровни
Пример:
&level=`3`

&limit — Максимальное число пунктов меню

Формат: целое число
Значение по умолчанию: 0
Примечание: 0 — без ограничения
Пример:
&limit=`5`

&ph — Вывод результата в плейсхолдер

Формат: плейсхолдер
Значение по умолчанию: нет
Примечание: Весь код результата будет сохранен в переменную, значение которой можно вставить в страницу при помощи плейсхолдера с именем переменной.
Пример:
&ph=`wf_menu`

&removeNewLines — Удалять символ переноса в результате

Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Убирать символ переноса строки при выводе. т. е. весь результирующий код будет в виде одной строки.
Пример:
&removeNewLines=`1`

&rowIdPrefix — Добавлять префикс к id для каждой ссылки

Значение по умолчанию: нет
Примечание: Добавлять префикс к идентификатору (id) для каждого элемента (id складывается из значения rowIdPrefix + docId)
Пример:
&rowIdPrefix=``

&showSubDocCount — Выводить количество документов в плейсхолдер wf.subitemcount

Формат: 0 | 1
Значение по умолчанию: 0
Пример:
&showSubDocCount=`1`

&sortBy — Параметр используемый для сортировки

Формат: id | menutitle | pagetitle | introtext | menuindex | pub_date | published | hidemenu | parent | isfolder | description | alias | longtitle | type | template | random
Значение по умолчанию: menuindex
Примечание: id, menutitle, pagetitle, introtext, menuindex, published, hidemenu, parent, isfolder, description, alias, longtitle, type, template, random
Пример:
&sortBy=`pagetitle`

&sortOrder — Порядок сортировки документов

Формат: ASC | DESC
Значение по умолчанию: ASC
Примечание: ASC — по возрастанию | DESC — по убыванию
Пример:
&sortOrder=`DESC`

&startId — Источник документов для меню

Формат: ID документа
Значение по умолчанию: текущий документ
Примечание: Любой номер (ID) документа— контейнера.
Пример:
&startId=`0`

&textOfLinks — Параметр для названия ссылки

Формат: menutitle | id | pagetitle | description | parent | alias | longtitle | introtext
Значение по умолчанию: menutitle
Пример:
&textOfLinks=`longtitle`

&titleOfLinks — Параметр для title ссылки

Формат: menutitle | id | pagetitle | description | parent | alias | longtitle | introtext
Значение по умолчанию: pagetitle
Пример:
&titleOfLinks=`longtitle`

&useWeblinkUrl — Вывод ссылки в плейсхолдер wf.link

Формат: 0 | 1
Значение по умолчанию: 0
Пример:
&useWeblinkUrl=`1`

&where — Дополнительные условия запроса в БД (v 2.0.2)

Значение по умолчанию: нет
Примечание: Соответствует where в MySQL
Пример:
&where=`isfolder = 1`

Шаблоны

&activeParentRowTpl — Шаблон родителей текущего пункта меню

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Пример:
&activeParentRowTpl=`activeParentRowTpl`

&categoryFoldersTpl — Шаблон вывода категории

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Категория определяется установкой шаблона blank или атрибутом ссылки rel="category".
Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Пример:
&categoryFoldersTpl=`categoryFoldersTpl`

&cssTpl — Имя чанка содержащего CSS

Формат: имя чанка
Значение по умолчанию: нет
Пример:
&cssTpl=`cssTpl`

&hereTpl — Шаблон текущего пункта

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><span>[[+wf.linktext]]</span>[[+wf.wrapper]]</li>
Пример:
&hereTpl=`hereTpl`

&innerHereTpl — Шаблон текущего пункта подменю

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><span>[[+wf.linktext]]</span>[[+wf.wrapper]]</li>
Пример:
&innerHereTpl=`innerHereTpl`

&innerRowTpl — Шаблон для пункта подменю

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Пример:
&innerRowTpl=`innerRowTpl`

&innerTpl — Шаблон для подпапок

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.wrapper]] — место где будет выводиться содержимое меню.
Пример шаблона: <ul [[+wf.classes]]>[[+wf.wrapper]]</ul>
Пример:
&innerTpl=`innerTpl`

&jsTpl — Имя чанка содержащего JavaScript

Формат: имя чанка
Значение по умолчанию: нет
Пример:
&jsTpl=`jsTpl`

&lastRowTpl — Шаблон последнего пункта меню (v 2.0.3)

Формат: имя чанка
Значение по умолчанию: rowTpl
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Пример:
&lastRowTpl=`lastRowTpl`

&outerTpl — Шаблон контейнера меню

Формат: имя чанка
Значение по умолчанию: <ul[[+wf.classes]]>[[+wf.wrapper]]</ul>
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.wrapper]] — место где будет выводиться содержимое меню.
Пример шаблона: <ul id="topnav" [[+wf.classes]]>[[+wf.wrapper]]</ul>
Пример:
&outerTpl=`outerTpl`

&parentRowHereTpl — Шаблон вывода активного документа— контейнера

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]»</a>[[+wf.wrapper]]</li>
Пример:
&parentRowHereTpl=`parentRowHereTpl`

&parentRowTpl — Шаблон документа контейнера

Формат: имя чанка
Значение по умолчанию: нет
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]»</a>[[+wf.wrapper]]</li>
Пример:
&parentRowTpl=`parentRowTpl`

&rowTpl — Шаблон пункта меню

Формат: имя чанка
Значение по умолчанию: <li[[+wf.id]][[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]" [[+wf.attributes]]>[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Примечание: Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <li[[+wf.classes]]><a href="[[+wf.link]]" title="[[+wf.title]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
Пример:
&rowTpl=`rowTpl`

&startItemTpl — Шаблон ссылки на начальную папку, указанную в startId

Формат: имя чанка
Значение по умолчанию: <h2[[+wf.id]][[+wf.classes]]>[[+wf.linktext]]</h2>[[+wf.wrapper]]
Примечание: Используется при &displayStart=`1`
Возможные плэйсхолдеры:
[[+wf.classes]] — место для указания используемого CSS-класса (включает class=" ")
[[+wf.classnames]] — содержит только название CSS-класса (не включает class=" ")
[[+wf.link]] — адрес (href) для ссылки
[[+wf.title]] — текст для title ссылки
[[+wf.linktext]] — текст названия ссылки
[[+wf.wrapper]] — место для вывода подменю
[[+wf.id]] — вывод уникального идентификатора (id)
[[+wf.attributes]] — вывод дополнительных атрибутов ссылки
[[+wf.docid]] — идентификатор документа для текущего элемента
[[+wf.subitemcount]] — количество элементов в папке
[[+wf.description]] — выводит значения поля описания
[[+wf.introtext]] — выводит значения поля интротекста
Пример шаблона: <h2>[[+wf.linktext]]</h2>[[+wf.wrapper]]
Пример:
&startItemTpl=`startItemTpl`

Классы

&firstClass — CSS-класс первого пункта меню на данном уровне

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&firstClass=`firstClass`

&hereClass — CSS-класс текущей цепочки пунктов меню

Формат: название CSS класса
Значение по умолчанию: active
Пример:
&hereClass=`hereClass`

&innerClass — CSS-класс для подпунктов меню

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&innerClass=`innerClass`

&lastClass — CSS-класс последнего пункта меню

Формат: название CSS класса
Значение по умолчанию: last
Пример:
&lastClass=`lastClass`

&levelClass — CSS-класс для каждого уровня меню

Формат: название CSS класса
Значение по умолчанию: нет
Примечание: Число уровня будет добавлено к указанному классу (то есть level1, level2, level3, и т.д... )
Пример:
&levelClass=`level`

&outerClass — CSS-класс для контейнера меню

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&outerClass=`outerClass`

&parentClass — CSS-класс документов-контейнеров

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&parentClass=`parentClass`

&rowClass — CSS-класс для всех пунктов меню

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&rowClass=`rowClass`

&selfClass — CSS-класс текущего пункта меню

Формат: название CSS класса
Значение по умолчанию: нет
Примечание: Определяет только текущий документ.
Пример:
&selfClass=`selfClass`

&webLinkClass — CSS-класс для пунктов меню — ссылок

Формат: название CSS класса
Значение по умолчанию: нет
Пример:
&webLinkClass=`webLinkClass`

Примеры

Простой вариант вызова

 [[Wayfinder? &startId=`15`]] 

15 — ID папки, из которой нам необходимо вывести документы в меню

Дочерние документы

 [[Wayfinder? &startId=`[[*id]]`]] 

где [[*id]] автоматически заменяется на ID текущего документа.

Соседние документы/разделы

 [[Wayfinder? &startId=`[[*parent]]`]] 

где [[*parent]] автоматически заменяется ID родителя текущего документа.

Примечание: [[*parent]] у главной страницы равен 0.

Карта сайта

 [[Wayfinder? &startId=`0`]] 

Примечание: Проверяйте результат на наличие документов, которые не выводятся в основных меню, но могут попасть в карту сайта. Так как галочка «показывать в меню» по умолчанию включена, то можно случайно пропустить служебные документы (результаты поиска, страница 404, RSS и т.д.)

Вывод подменю не у всех разделов 

Если надо выводить подменю во всех разделах кроме 5, сперва инициализируем просчет параметра , можно сделать это в атрибуте id, затем пишем условие, не выводить подменю для id 5

<li>
<a href="[[+wf.link]]" id="[[+id]]">[[+wf.linktext]]</a>
[[+id:ne=`5`:then=`[[+wf.wrapper]]`]]
</li>