Wayfinder

Cниппет Wayfinder сканирует заданную область дерева документов MODx, находит все документы по заданным критериям (определённым в параметрах), и выводит отформатированный список этих документов. Форматирование выводимых данных выполняется при помощи шаблона, и может содержать любые комбинации HTML, CSS и JavaScript, что обеспечивает большую степень гибкости.

Главная задача Wayfinder - это создание меню навигации, которое будет автоматически обновляться при изменении дерева документов, но он также с успехом может использоваться для других целей.

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

Пожалуйста обратите внимание, что с момента выхода Revolution есть два типа снипетов Wayfinder, -  для Evolution и Revolution.  Вообще говоря, функционально обе версии идентичны, как и их параметры. В Revolution сниппет вызывается как : [[!Wayfinder? &...]] , а в Evolution как [!Wayfinder? &...!].

Вы можете обсудить Wayfinder на форумах MODx. Дополнительную документацию Wayfinder 2.0 можно найти здесь.

История

Wayfinder был полностью переработан из первоначального варианта DropMenu, чтобы сделать более простым создание любого необходимого меню с использованием чанков и шаблонов вывода. При использовании шаблонов для гибкого вывода меню, многие параметры, такие как таблицы, маркированный и не маркированный списки, больше не нужны.

ВерсияДата выпускаMODx версияЗаметки
0.9 beta 1/2/3 Aug/Sept 2006 0.9.2.1 Первый выпуск
1.0 Oct 23, 2006 0.9.2.1  
1.0.1 Nov 07, 2006 0.9.2.1 - 0.9.5  
2.0 Feb 27, 2007 0.9.5 + текущий выпуск для Evolution
2.1.1 beta 1 May 21, 2009 2.0.0-beta 1  
2.1.1 beta 2 Oct 20, 2009 2.0.0-beta 4  
2.1.1 beta 4 Nov 05, 2009 2.0.0-beta 5 +  
2.3.1 May 18, 2011 2.0+  
2.3.2 Sept 20, 2011 2.0+  
2.3.3 Oct 31, 2011 2.0+ текущий выпуск для Revolution

Установка для  Revolution

В MODx Revolution, Wayfinder может быть загружен из меню управления пакетами в панели управления. Перейдите в меню "Система -> управление пакетами", нажмите "Загрузить дополнение" и загрузите Wayfinder. После этого нужно его  установить, используя стандартную процедуру.

Минимальный вызов :

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

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

Параметры общего назначения

Параметры Описание Значения по умолчанию Возможные значения
 &startId  Начальная точка (ID документа) для меню, откуда будут браться выводимые документы. Указывайте 0 для начала меню из корня сайта.  id текущего документа  0 |  id документа | [ [*parent*]] | [ [*id*]]
 &displayStart  Если &displayStart=1, это заставит Wayfinder вывести ссылку на документ, используемый в качестве &startId, согласно шаблона &startItemTpl. Параметр работает, если startId не равно 0.  0  0 | 1
 &level  Глубина (количество уровней) в меню. 0 - показывать все уровни  0  0 | целое число
 &limit Максимальное количество пунктов меню. 0 - без ограничения.  0  целое число
 &ignoreHidden Игнорировать чекбокс для документов "Не показывать в меню" и отображать их в меню в любом случае.  0  0 | 1
 &ph  Весь код результата вместо непосредственной выдачи будет сохранен в переменную, значение которой можно вставить в страницу при помощи плейсхолдера с именем переменной.  -  &ph=`wf_имя переменной`
 &debug Устанавливайте в "1" для включения режима отладки. 0 0 | 1
 &hideSubMenus  Устанавливайте в "1" для вывода только активного подменю. 0 0 | 1
 &removeNewLines  Устанавливайте в "1", чтобы удалить символы переноса строки при выводе (то есть выдаваемый результат будет в одну строку). 0 0 | 1
&textOfLinks Поле, откуда берется фактический текст ссылки.  menutitle  menutitle | id | pagetitle | description | parent | alias | longtitle | introtext
 &titleOfLinks Поле, откуда берется  title  ссылки.   pagetitle  menutitle | id | pagetitle | description | parent | alias | longtitle | introtext
 &rowIdPrefix

Если используется этот параметр, он добавляет уникальный id для каждого элемента. Сформированное значение будет  rowIdPrefix + docId.

Пример : &rowIdPrefix=`topMenu` выведет для doc # 29: id="topMenu29"

 нет  -
 &useWeblinkUrl Вывод ссылки в плейсхолдер wf.link 0 | 1 
 &includeDocs  Разделенный запятыми список id документов, которые должны быть включены в меню.  нет  id документов, разделенные запятыми
 &excludeDocs  Разделенный запятыми список id документов, которые должны быть исключены из меню.  нет  id документов, разделенные запятыми
 &cacheResults Сохранение результатов в кэше при некэшируемом вызове Wayfinder для более быстрой загрузки. 0 0 | 1
 &cacheTime Количество секунд хранения меню в кэше, если  &cacheResults установлено в "1".  Устанавливайте в "0", чтобы данные хранились неограниченное время до сброса кэша вручную. 3600  -
 &contexts Контекст для использования в меню.   текущий контекст  
 &config Внешний php файл для конфигурирования Wayfinder ( в качестве примера можно посмотреть core/components/wayfinder/configs )    
 &sortBy Параметр sortBy позволяет сортировать выводимые данные по одному из указанных полей на определенном отдельном уровне. Это означает, что каждое подменю будет сортироваться независимо от всех других подменю этого же уровня. Значение Random будет сортировать выходные данные по-разному при каждой загрузке страницы, если сниппет вызывается некэшируемым.  menuindex   id | menutitle | pagetitle | introtext | menuindex | published | hidemenu | parent | isfolder | description | alias | longtitle | type | template | random
 &sortOrder  Позволяет сортировать меню по возрастанию (ASC) или по убыванию (DESC).  ASC  ASC | DESC
 &where

Вариант фильтрации в стиле JSON. Например, для случая, когда нужно спрятать блог или новости от дополнения Articles : &where=`[{"class_key:!=": "Article"}]`

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

 

Параметры шаблона

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

В существующей версии WayFinder для Revolution вы можете осуществлять доступ к своим tv-параметрам без префикса wf., например, [[+my_TV]].

В настоящий момент возвращается необработанное значение tv-параметра, оно не будет форматировано. Например, если вашим tv-параметром является изображение, при обычном использовании tv-параметра внутри вашего шаблона вы получите тег с полным изображением, а при использовании внутри шаблона WayFinder  вы получите только путь к изображению.

&outerTpl — имя чанка, содержащего внешний контейнер для генерируемых WayFinder данных. Все документы и папки будут обрабатываться и вставляться в плейсхолдер [[+wf.wrapper]]. Если &outerTpl не указан, он полагается равным "<ul> [[+wf.wrapper]] </ul>".

Используемые плейсхолдеры :

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

Пример &outerTpl или связанного с ним чанка :

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

&rowTpl — имя чанка для шаблона пункта меню

Используемые плейсхолдеры :

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

 Примеры &rowTpl или связанного с ним чанка :

<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>

 Далее, в таблице ниже показаны параметры, которые используют те же плейсхолдеры, что и &rowTpl.

Параметр Описание
 &startItemTpl  Имя чанка, содержащего шаблон для начального документа, если это разрешено при помощи параметра &displayStart. Замечание : шаблон по умолчанию показывает начальный документ, но не дает ссылку на него. Если ссылка вам не нужна, шаблону по умолчанию может быть присвоен класс, используя параметр &firstClass=`className`
 &parentRowHereTpl  Имя чанка, содержащего шаблон для текущего документа, если он контейнер и имеет дочерние ресурсы. Используйте плейсхолдер для выдачи дочерних документов.
 &parentRowTpl  Имя чанка, содержащего шаблон для любого документа, если он контейнер и имеет дочерние ресурсы. Используйте плейсхолдер для выдачи дочерних документов.
  &hereTpl  Имя чанка, содержащего шаблон для текущего документа.
 &innerTpl  Имя чанка, содержащего шаблон для каждого подменю. Если параметр &innerTpl не указан, вместо него используется &outerTpl.
 &innerRowTpl  Имя чанка, содержащего шаблон для пунктов подменю.
 &innerHereTpl  Имя чанка, содержащего шаблон для текущего документа, если он находится в подменю.
  &activeParentRowTpl  Имя чанка, содержащего шаблон для документов, которые являются контейнерами, имеют дочерние ресурсы и в настоящее время активны.
  &categoryFoldersTpl  Имя чанка, содержащего шаблон для папок категорий. Папки категорий задаются путем установки шаблона blank или же атрибутом ссылки rel="category".

Параметры имени класса CSS

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

Параметр  Описание Значение по умолчанию
 &firstClass  Класс CSS для первого элемента на данном уровне меню.  
 &lastClass  Класс CSS для последнего элемента на данном уровне меню.  last
 &hereClass  Класс CSS, определяющий вашу позицию для всей цепочки.  active
 &selfClass  Класс CSS для текущего элемента.  
 &parentClass  Класс CSS для элементов меню, которые являются контейнерами и имеют дочерние элементы.  parent
 &rowClass  Класс CSS для всех пунктов меню.  
 &levelClass  Класс CSS, определяющий уровень каждого пункта меню. Номер уровня будет добавлен к указанному классу (например, level1, level2, level3 и т.д., если вы указали "level").  
 &outerClass  Класс CSS для внешнего шаблона меню (применяется к контейнеру, использующему outerTpl).  
 &innerClass  Класс CSS внутреннего шаблона меню (применяется к контейнеру, использующему innerTpl).  
 &webLinkClass  Класс CSS для веб-ссылок.  

 

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

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

 

Параметр Описание
 &cssTpl Имя чанка, содержащего подключение CSS, которое вы хотите добавить в раздел  HEAD той страницы, из которой вызван Wayfinder.
 &jsTpl  Имя чанка, содержащего подключение JavaScript, которое вы хотите добавить в раздел  HEAD той страницы, из которой вызван Wayfinder.
НазадВперёд