Сниппет pdoCrumbs предназначен для создания навигационной цепочки (хлебных крошек) на сайте. Он является быстрой и функциональной заменой устаревшего компонента BreadCrumb, работая с документами из любых контекстов и поддерживая гибкую настройку отображения. Основное преимущество pdoCrumbs заключается в высокой скорости работы благодаря использованию библиотеки pdoTools и возможности легкого добавления семантической разметки для поисковых систем.
Хлебные крошки получили свое название от знаменитой сказки братьев Гримм и представляют собой навигационную цепочку от главной страницы до текущего раздела. Они помогают пользователям понимать где они находятся в структуре сайта и быстро переходить на вышестоящие уровни.
Параметры pdoCrumbs
Принимает все параметры pdoTools и некоторые свои:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
&from |
0 |
ID ресурса от которого начинать цепочку (0 = корень контекста) |
&to |
ID текущей страницы | ID ресурса которым заканчивать цепочку |
&exclude |
— | ID ресурсов для исключения из цепочки через запятую |
&outputSeparator |
\n |
Разделитель между элементами хлебных крошек |
&tpl |
— | Чанк для оформления обычного пункта |
&tplWrapper |
— | Обертка для всей цепочки с плейсхолдером [[+output]] |
&tplCurrent |
— | Чанк для текущей страницы (последний элемент) |
&tplMax |
— | Чанк при превышении максимальной глубины |
&showHidden |
1 |
Показывать скрытые от меню ресурсы |
&showUnpublished |
0 |
Показывать неопубликованные ресурсы |
&showDeleted |
0 |
Показывать удаленные ресурсы |
&showCurrent |
1 |
Включать текущую страницу в цепочку |
&showHome |
0 |
Включать главную страницу в начало |
&hideSingle |
0 |
Скрывать крошки если элемент всего один |
&direction |
ltr |
Направление цепочки: ltr (слева направо) или rtl |
&scheme |
— | Схема генерации ссылок |
&useWeblinkUrl |
1 |
Использовать целевой URL для weblink |
&toPlaceholder |
— | Сохранить результат в плейсхолдер |
&showLog |
0 |
Показать отладочную информацию |
Шаблоны
| Шаблон | По умолчанию |
|---|---|
&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> |
Пиимеры
Простейший вызов для генерации хлебных крошек текущей страницы:
[[pdoCrumbs]]
Генерация с ограничением по количеству пунктов:
[[pdoCrumbs? &limit=`2` ]]
Вывод с отображением текущей страницы и главной:
[[pdoCrumbs? &showCurrent=`1` &showHome=`1` ]]
Использование разделителя между пунктами:
[[pdoCrumbs? &showCurrent=`1` &showHome=`1` &outputSeparator=` < ` ]]
Простая реализация для Bootstrap 4/5:
[[pdoCrumbs?
&showHome=`1`
&showCurrent=`1`
&tplWrapper=`@INLINE <ol class="breadcrumb">[[+output]]</ol>`
&tpl=`@INLINE <li class="breadcrumb-item"><a href="[[+link]]">[[+menutitle]]</a></li>`
&tplCurrent=`@INLINE <li class="breadcrumb-item active">[[+menutitle]]</li>`
]]
Разметка хлебных крошек для поисковых систем в формате Microdata:
[[pdoCrumbs?
&showHome=`1`
&showCurrent=`1`
&tplWrapper=`@INLINE
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
[[+output]]
</ol>`
&tpl=`@INLINE
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a itemprop="item" href="[[+link]]">
<span itemprop="name">[[+menutitle]]</span>
</a>
<meta itemprop="position" content="[[+idx]]" />
</li>`
&tplCurrent=`@INLINE
<li class="active" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<span itemprop="name">[[+menutitle]]</span>
<meta itemprop="position" content="[[+idx]]" />
</li>`
]]
Современный способ добавления структурированных данных через JSON-LD:
[[pdoCrumbs?
&showHome=`1`
&showCurrent=`1`
&tplWrapper=`@INLINE
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [[[+output]]]
}
</script>
<ol class="breadcrumb">[[+output]]</ol>`
&tpl=`@INLINE
{
"@type": "ListItem",
"position": [[+idx]],
"name": "[[+menutitle]]",
"item": "[[+link]]"
},
<li><a href="[[+link]]">[[+menutitle]]</a></li>`
&tplCurrent=`@INLINE
{
"@type": "ListItem",
"position": [[+idx]],
"name": "[[+menutitle]]"
}
<li class="active">[[+menutitle]]</li>`
]]
Обратите внимание на запятую в конце JSON объекта в &tpl — она нужна для корректного формирования массива.
Использование внутри pdoResources (пример чанка):
<article class="post">
<h3>[[+pagetitle]]</h3>
<p>[[+introtext]]</p>
[[pdoCrumbs?
&to=`[[+id]]`
&showCurrent=`0`
]]
</article>
Сохранение результата в плейсхолдер вместо прямого вывода:
[[pdoCrumbs?
&showHome=`1`
&showCurrent=`1`
&toPlaceholder=`crumbs`
]]
<!-- Использование в другом месте -->
<nav aria-label="breadcrumb">
[[+crumbs]]
</nav>
Это полезно когда нужно вывести хлебные крошки в нескольких местах шаблона или использовать условную логику.
Сравнение с BreadCrumb
Основные отличия pdoCrumbs от устаревшего BreadCrumb:
| Возможность | pdoCrumbs | BreadCrumb |
|---|---|---|
| Скорость работы | Высокая благодаря pdoTools | Средняя |
| Поддержка Fenom | Да | Нет |
| Семантическая разметка | Легко добавляется | Требует доработки |
| Работа в других сниппетах | Отличная | Ограниченная |
| Гибкость шаблонов | Высокая | Средняя |
| Актуальность | Активно поддерживается | Устарел |
Для новых проектов рекомендуется использовать pdoCrumbs как современное и более производительное решение.






