Wayfinder служит для организации списков ссылок для MODX. Благодаря поддержке шаблонов позволяет выводить списки в любом необходимом виде:
- Меню в виде списка, таблицы, изображений, с иконками и т.д.
- Статичные меню
- Меню с различными эффектами (выпадающие, раскрывающиеся и т.д.)
- Карта сайта
Пример вызова:
[[!Wayfinder? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`active`
&rowClass=`eNav_li`]]
Параметры снипета:
&startId - id родительской страницы, если указать 0 будет от корня сайта. По умолчанию стоит значение id активной страницы
&displayStart - показывать документ со startId в заголовке меню, по умолчанию false
&level - глубина вложенности, по умолчанию 0 - все уровни
&limit - ограничение количества страниц в выводе (по умолчанию 0 - без ограничений)
&ignoreHidden - игнорировать чек бокс страницы "Показывать в меню", т.е. если указать 1, выведет все страницы. По умолчанию 0. Выводятся только те страницы, у которых отмечен чек бокс "Показывать в меню"
&ph - имя подстановщика, заменяющего непосредственно выводимые результаты. По умолчанию 0.
&debug - режим отладки (по умолчанию 0)
&hideSubMenus - раскрывать только активное подменю ( по умолчанию 0)
&removeNewLines - убирает символ переноса строки при выводе (по умолчанию 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 - выводит ссылку в переменную [
wf.link] . По умолчанию 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-схеме.
&sortBy - Поле, по которому происходит сортировка. (по умолчанию menuindex)
Варианты:
id, menutitle, pagetitle, introtext, menuindex, published, hidemenu, parent, isfolder, description, alias, longtitle, type, template
&sortOrder - Порядок сортировки. 'ASC' или 'DESC'. По умолчанию ASC
&where - JSON-стиль параметров фильтрации (Соответствует where в MySQL) . Например, когда необходимо скрыть блог или новости из дополнения Articles: &where=`[{"class_key:!=": "Article"}]`
Примеры:
вывод только папок: &where=`isfolder = 1
&hereId - Определять текущий ID для использования в сниппете. Используйте значение [[*id]] если шаблон указан с помощью параметра hereTpl и activeRowParentTpl не применяеться корректно в пункте меню. По умолчанию текущий ид.
Нужно указывать только если скрипт сам его неверно определяет, например, при выводе меню из чанка другого сниппета.
&hereTpl - Шаблон 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>
Параметры шаблона
Эти параметры указывают чанки, которые содержат шаблоны, которые будут генерировать вывод 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
).
<ul id="topnav" [[+wf.classes]]>[[+wf.wrapper]]</ul>
Параметр
&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
- текущий уровень вложенности
Пример использования:
<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>
Примеры
Первого уровня
[[!Wayfinder? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`active`
&rowClass=`eNav_li`]]
Код чанка outerTpl
<ul class="eNav_ul">
[[+wf.wrapper]]
</ul>
Код чанка rowTpl
<ul class="eNav_ul">
[[+wf.wrapper]]
</ul>
Второго уровня (в этом примере меню и пункты подменю были визуально на одном уровне
[[!Wayfinder? &startId=`0` &level=`2`
&rowTpl=`rowTplFooterMenu`
&outerTpl=`outerTplFooterMenu`
&innerTpl=`innerTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`active`]]
Код чанка outerTplFooterMenu
<!--footer menu-->
<div class="bFootMenu">
[[+wf.wrapper]]
</div>
код чанка rowTplFooterMenu
<ul class="eFootMenu">
<li [[+wf.classes]]>
<a href="[[+wf.link]]">
[[+wf.title]]
</a>
</li>
[[+wf.wrapper]]
</ul>
код чанка innerTplFooterMenu
[[+wf.wrapper]]
код чанка innerRowTplFooterMenu
<li [[+wf.classes]]>
<a href="[[+wf.link]]">
[[+wf.title]]
</a>
</li>
Комментариев нет:
Отправить комментарий