VS-engine

CMF ModX WayFinder - формируем меню сайта

Wayfinder - сниппет, который сканирует определённую часть дерева документов MODx

Wayfinder документация на русском для MODx Revolution

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

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

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

Использование

Самый простой вызов сниппета Wayfinder может быть таким:

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

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

Параметры

Общие параметры

НазваниеОписаниеПо умолчанию
startId Идентификатор папки из которой берутся документы для формирования результата. Можно использовать любой IDдокумента-контейнера. текущий документ
displayStart Показать начальную папку, указанную в startId 0
level Число уровней меню в глубину. Например если нам не нужно отобразить только дочерние елементы первого уровня, то мы указываем 1. Значение по умолчанию будет выводить все уровни. 0
limit Максимальное число пунктов меню. Значение по умолчанию не накладывает ограничений. 0
ignoreHidden Игнорировать галочку Показывать в меню, во время редактирования ресурса и всё равно включать их в вывод меню. 0
&ph Имя плейсхолдера, устанавливающий вывод результата, вместо возвращения вывода напрямую. 0
&debug Устанавите 1, чтобы включить режим отладки для дополнительного устранения неполадок. 0
&hideSubMenus Установите 1 для вывода только активного подменю. 0
&removeNewLines Установите 1 для удаления из вывода символа новой строки. 0
&textOfLinks Из какого поля ресурса брать текст для ссылки. Возможные значения - menutitle, id, pagetitle, description, parent,alias, longtitle, introtext. menutitle
&titleOfLinks Из какого поля ресурса брать текст для заголовка ссылки (атрибут ссылки title). Возможные значения - menutitle, id,pagetitle, description, parent, alias, longtitle,introtext. pagetitle
&rowIdPrefix Если установленно, тогда этот параметр создаст уникальный ID для каждого элемента. Значение будет иметь примерно такой вид - rowIdPrefix + docId. 0
&useWeblinkUrl Если установленно 1, тогда ссылка будет выводиться в плейсхолдере [wf.link]. 1
&includeDocs Список ID документов, разделённых запятой, которые должны быть включенны в меню.  
&excludeDocs Список ID документов, разделённых запятой, которые следует исключить из меню. 0
&cacheResults Кэшировать запросы для более быстрой загрузки страницы  
&cacheTime Количество секунд для хранения кэшированного меню, еслиcacheResults равна 1. Установите 0, чтобы хранить кэш бесконечно, пока кэш не будет сброшен вручную.  
&contexts Используемый контекст для генерации меню. По умолчанию текущий контекст.  
&startIdContext Индентификатор контекста из которой берутся документы для формирования результата.  
&config Внешний PHP файл, для хранения конфигурации Wayfinder(для примера смотрите core/components/wayfinder/configs).  
&scheme
Формат для генерации URL. Возможные значения (основанны на вызове makeURL API):
-1 : (значение по умолчанию) URL по отношению кsite_url;
0: смотрите http;
1: смотрите https;
full: абсолютный URL начинающийся с site_url;
abs: абсолютный URL начинающийся с base_url;
http: абсолютный URL, заданный принуждённо в http-схеме;
https: абсолютный URL, заданный принуждённо в https-схеме.
-1
&sortBy Поле ресурса, используемое для сортировки.  
&sortOrder Порядок сортировки - ASC или DESC.  
&where JSON-стиль параметров фильтрации. Например, когда необходимо скрыть блог или новости из дополнения Articles:&where=`[{"class_key:!=": "Article"}]`  
&hereId Определять текущий ID для использования в сниппете. Используйте значение 36 если шаблон указан с помощью параметра hereTpl и activeRowParentTpl не применяеться корректно в пункте меню. повторный ID
&hereTpl Шаблон hereTpl используеться в момент, когда текущий пункт отображаеться в меню.  

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

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

В текущей версии Wayfinder для MODX Revolution, вы можете получить доступ к вашим кастомным TV используя прейсхолдэрыбез префикса wf., например [ [+my_TV] ]

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

Если вы хотете обрабатывать TV, вы можете сделать это вызовом сниппета в пределах шаблона ряда Wayfinder (&rowTpl. Например ваш TV изображения называется icon и обычно для вывода в шаблоне используется примерно такой код:

... < img src="[ [+icon] ]" / > ...

Но так как это не позволит вам обрабатывать TV, нужно заменить его на:

... < img src="[ [processTV? &myId=`[ [+id] ]` &myTV=`icon` ] ]" / > ...

И теперь внутри сниппета processTV помещаем следующий PHP код:

<?php
$doc = $modx- >getObject ('modResource', $myId);
return $doc->getTVValue($myTV);

В результате возвращается полностью обработаное TV изображения.

& outerTpl

Название чанка содержащий шаблон внешнего контейнера.

Доступные плэйсхолдэры:

  • wf.classes - выводит соответсвующий классы взятый с набора параметров Wayfinder (включая атрибутclass="")
  • wf.classnames - вывод название соответсвующих классов (без class="")
  • wf.wrapper - вывод внутренего содержимого (row). Это заполнитель объязателен.

    Параметр &innerTpl содержит такой же набор плэйсхолдэров что и &outerTpl.

    & rowTpl

    Название чанка содержащий шаблон для элементов ряда меню.

    Доступные плэсхолдэры:

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

    Пример использования:

    <li[ [+wf.id] ][ [+wf.classes] ]>[ [+wf.linktext] ][ [+wf.wrapper] ]
    

    Ещё один вариант:

    < li >[ [+wf.linktext] ] - [ [+wf.description] ]  [ [+wf.wrapper] ]