четверг, 22 октября 2015 г.

Вывод меню (Wayfinder)


Спонсор блога Магазин детской одежды Dress

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. 

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



Официальная документация 

Комментариев нет:

Отправить комментарий