pdoCrumbs
Сниппет для построения навигации в стиле хлебных крошек.
Хорошо заменяет BreadCrumb, работает с документами из любых контекстов и позволяет указывать различные условия для выборки ресурсов.
Сниппет обладает очень высокой скоростью работы, за счет выборки всех нужных элементов из БД за один запрос.
Параметры
Принимает все параметры pdoTools и некоторые свои:
Параметр | По умолчанию | Описание |
---|---|---|
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контексте «mgr». |
&from | 0 | Id ресурса, от которого строить хлебные крошки. Обычно это корень сайта, то есть «0». |
&to | Id ресурса для которого строятся хлебные крошки. По умолчанию это id текущей страницы. | |
&exclude | Список id ресурсов, которые нужно исключить из выборки. | |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. | |
&outputSeparator | \n | Разделитель между крошками |
&tpl | Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. | |
&tplCurrent | Чанк оформления текущего документа в навигации. | |
&tplMax | Чанк, который добавляется в начало результатов, если их больше чем &limit. | |
&tplHome | Чанк оформления ссылки на главную страницу. | |
&tplWrapper | Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]] . Не работает вместе с параметром &toSeparatePlaceholders. | |
&wrapIfEmpty | Включает вывод чанка-обертки &tplWrapper даже если результатов нет. | |
&showCurrent | 1 | Выводить текущий документ в навигации. |
&showHome | 0 | Выводить ссылку на главную в начале навигации. |
&showAtHome | 1 | Показывать хлебные крошки на главной странице сайта. |
&hideSingle | 0 | Не выводить результат, если он один единственный. |
&direction | ltr | Направление навигации: слева направо «ltr» или справа налево «rtl», например для Арабского языка. |
Шаблоны
Шаблон | По умолчанию |
---|---|
&tpl | @INLINE <li><a href="[[+link]]">[[+menutitle]]</a></li> |
&tplCurrent | @INLINE <li class="active">[[+menutitle]]</li> |
&tplMax | @INLINE <li class="disabled"> ... </li> |
&tplHome | |
&tplWrapper | @INLINE <ul class="breadcrumb">[[+output]]</ul> |
Примеры
Генерация хлебных крошек для текущей страницы:
modx
[[pdoCrumbs]]
Генерация в ограничением по количеству пунктов:
modx
[[pdoCrumbs?
&limit=`2`
]]
Сниппет хорошо работает при вызове из pdoResources. Например, вот такой чанк:
modx
<h3>[[+pagetitle]]</h3>
<p>[[+introtext]]</p>
[[pdoCrumbs?
&to=`[[+id]]`
&showCurrent=`0`
]]
Генерация микроразметки Schema.org в JSON-LD формате
fenom
{'!pdoCrumbs' | snippet : [
'showHome' => 1,
'tplWrapper' => '@INLINE
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [ {$output} ]
}
</script>
',
'tplHome' => '@INLINE
{
"@type": "ListItem",
"position": {$idx},
"item": {
"@id": "{$link}",
"name": "{$menutitle}"
}
},
',
'tplCurrent' => '@INLINE
{
"@type": "ListItem",
"position": {$idx},
"item": {
"@id": "{$link}",
"name": "{$menutitle}"
}
}
',
'tpl' => '@INLINE
{
"@type": "ListItem",
"position": {$idx},
"item": {
"@id": "{$link}",
"name": "{$menutitle}"
}
},
',
]}
Демо
Рабочий пример генерации хлебных крошек в результатах поиска mSearch2.