MODx/Встроенные сниппеты/Wayfinder

Материал из Викиучебника — открытых книг для открытого мира

Информация[править]

Назначение: Основное назначение Wayfinder — генерировать навигационные меню, автоматически отражающие изменения в структуре сайта, однако он может быть использован и с другими целями.

Wayfinder — сниппет, сканирующий заданную часть дерева документов MODx, находящий все документы, отвечающие заданным условиям, и выводящий форматированный список этих документов.

Формат вывода определяется шаблонами, он может включать любые комбинации HTML, CSS и JavaScript, что дает невероятную степень гибкости. Эти шаблоны являются чанками (т.е. для задания какого-либо шаблона следует создать новый чанк, он то и будет являться шаблоном)

На одной странице может присутствовать несколько вызовов Wayfinder, соответственно можно создавать несколько независимых меню и списков документов.

Параметры[править]

Основные[править]

  • &startId (по умолчанию — current docId) — стартовая папка (document ID)
  • &level (по умолчанию — 0) — глубина просмотра (0 — все уровни)
  • &ignoreHidden (по умолчанию — FALSE) — игнорировать флаг «show in menu» (включать всё)
  • &ph (по умолчанию — FALSE) — имя подстановщика, заменяющего непосредственно выводимые результаты
  • &debug (по умолчанию — FALSE) — включить режим отладки
  • &hideSubMenus (по умолчанию — FALSE) — установить в ‘true’, чтобы выводилось только активное подменю
  • &removeNewLines (по умолчанию — FALSE) — не включать в выводимый текст символы новой строки
  • &textOfLinks (по умолчанию — menutitle) — имя поля, используемого для текста меню (допустимы значения: menutitle, id, pagetitle, description, parent, alias, longtitle, introtext)
  • &titleOfLinks (по умолчанию — pagetitle) — имя поля, используемое для атрибута ‘title’ ссылки (допустимы значения: menutitle, id, pagetitle, description, parent, alias, longtitle, introtext)
  • &rowIdPrefix (по умолчанию — FALSE) — установить уникальный идентификатор для каждого элемента списка (id = rowIdPrefix + docId)
  • &useWeblinkUrl (по умолчанию — TRUE) — ссылка, указанная в weblink, будет замещать подстановщик [+wf.link+]
  • &fullLink (по умолчанию — FALSE) — формировать абсолютные ссылки (с "префиксом" site-url)

Параметры шаблона[править]

Эти параметры указывают чанки, содержащие шаблоны для управления выводом Wayfinder.

  • &outerTpl — имя чанка, описывающего внешний контейнер

Подстановщики:

  • [+wf.classes+] — будет заменен классом (включая class=" ")
  • [+wf.classnames+] — будет заменен именем класса (без class=" ")
  • [+wf.wrapper+] — сюда будет вставлен весь внутренний текст

Пример <ul id="topnav"[+wf.classes+]>[+wf.wrapper+]</ul>
<table [+wf.classes+]><tr>[+wf.wrapper+]</tr></table>

  • &rowTpl — чанк, описывающий элементы-строки

Подстановщики

  • [+wf.classes+] — будет заменен классом (включая class=" ")
  • [+wf.classnames+] — будет заменен именем класса (без class=" ")
  • [+wf.link+] — место для гиперссылки (значения href)
  • [+wf.title+] — место для текста атрибута title для ссылки
  • [+wf.linktext+] — место вставки текста гиперссылки
  • [+wf.wrapper+] — место вставки подменю
  • [+wf.id+] — место вставки уникального id
  • [+wf.attributes+] — место вставки атрибутов ссылки
  • [+wf.docid+] — место вставки идентификатора текущего документа
  • [+wf.description+] - описание документа

Пример <li[+wf.id+][+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>[+wf.wrapper+]</li>
<li><a href="[+wf.link+]">[+wf.linktext+]</a> - [+wf.description+] [+wf.wrapper+]</li>

<td [+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>[+wf.wrapper+]</td>


  • &parentRowHereTpl — шаблон текущего документа, если он является папкой

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>


  • &parentRowTpl — шаблон для любого документа, являющегося папкой

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>


  • &hereTpl — шаблон для текущего документа

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><span>[+wf.linktext+]</span>[+wf.wrapper+]</li>


  • &innerTpl — шаблон для любых вложенных подпапок

Подстановщики — как в outerTpl

Пример <ul[+wf.classes+]>[+wf.wrapper+]</ul>


  • &innerRowTpl — шаблон элементов-строк в подпапке

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>


  • &innerHereTpl — шаблон для текущего документа, если он в подпапке

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><span>[+wf.linktext+]</span>[+wf.wrapper+]</li>


  • &activeParentRowTpl — шаблон для папок, которые в данный момент активны

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>


  • &categoryFoldersTpl — шаблон для папок-категорий. Определяются установкой пустого шаблона или установкой поля атрибутов ссылки в rel="category"

Подстановщики — как в rowTpl

Пример <li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>

Параметры имени класса CSS[править]

CSS можно использовать для управления видом (а в некоторых случаях — действием) различных частей выводимого фрагмента. Однако необходимо указать Wayfinder, какие имена классов CSS используются, и какие элементы разметки фрагмента связываются с ними.

  • &firstClass (по умолчанию — ‘’) — Класс CSS, определяющий первый элемент на данном уровне меню
  • &lastClass (по умолчанию — ‘last’) — Класс CSS, определяющий последний элемент на данном уровне меню
  • &hereClass (по умолчанию — ‘active’) — Класс CSS, определяющий позицию «вы здесь» для всей цепи
  • &selfClass (по умолчанию — ‘’) — Класс CSS, определяющий позицию «вы здесь» только для текущего документа
  • &parentClass (по умолчанию — ‘parent’) — Класс CSS, определяющий элемент меню, являющийся папкой
  • &rowClass (по умолчанию — ‘’) — Класс CSS, определяющий каждую строку
  • &levelClass (по умолчанию — ‘’) — Класс CSS, определяющий каждый уровень строк, номер уровня добавляется к указанной строке (напр., level1, level2, level3 и т.д.)
  • &outerClass (по умолчанию — ‘’) — Класс CSS внешнего шаблона
  • &innerClass (по умолчанию — ‘’) — Класс CSS внутреннего шаблона
  • &webLinkClass (по умолчанию — ‘’) — Класс CSS внешних ссылок (weblinks)

Параметры включения кода (Code-Embedding)[править]

Если выводимый при вызове Wayfinder фрагмент требует присутствия некоторого фрагмента CSS или JavaScript, можно сохранить CSS в одном чанке, JavaScript — в другом, а затем использовать эти параметры, чтобы указать Wayfinder скопировать один или оба чанка в раздел HEAD той страницы, из которой вызван Wayfinder.

  • &cssTpl (по умолчанию — FALSE) — имя чанка, содержащего включаемый в страницу CSS
  • &jsTpl (по умолчанию — FALSE) — имя чанка, содержащего включаемый в страницу javascript


Примеры[править]

Простейший вызов:[править]

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

В результате будет выведен многоуровневый ненумерованный список, представляющий все дерево документов сайта ModX, при этом каждый элемент будет являться ссылкой на соответствующий документ.

Другие примеры: [1]

Как использовать шаблоны[править]

Рассмотрим на примере &rowTpl. Необходимо создать чанк, например Row, в него поместить шаблон, созданный из html-кода и постановщиков:

"<ul id="topnav"[+wf.classes+]>[+wf.wrapper+]</ul> <table [+wf.classes+]><tr>[+wf.wrapper+]</tr></table>"

Затем создать запрос [[Wayfinder? &startId=`0` &rowTpl=`Row`]]

Ссылки[править]