MODX. Хлебные крошки на сайте с использованием pdoCrumbs

Хлебные крошки — вид навигации на сайте, получивший свое название от знаменитой сказки Ганса Христиана Андерсена. В этой навигации на сайте отображается цепочка ресурсов, начиная от корневого каталога, до текущего отображаемого ресурса.

В системе MODX, навигацию в стиле хлебных крошек (breadcrumbs), можно создать с помощью сниппета pdoCrumbs, который входит в состав компонента pdoTools.

Простейший вызов хлебных крошек:

Fenom
Теги MODX
{'pdoCrumbs' | snippet}
[[pdoCrumbs]]
 

Вызов с доп параметрами: 

Fenom
Теги MODX
{'pdoCrumbs' | snippet : [
      'from' => '2',
      'tpl' => 'tpl.breadcrumbs',
      'tplWrapper' => 'tpl.breadcrumbs-wrap',
      'tplCurrent' => '',
      'tplMax' => '',
      'exclude' => '2,'~$_modx->resource.id
]}
 
[[pdoCrumbs?
     &from=`2`
     &tpl=`tpl.breadcrumbs`
     &tplWrapper=`tpl.breadcrumbs-wrap`
     &tplCurrent=``
     &tplMax=``
     &exclude=`2,[[*id]]`
]]

 

Документация сниппета pdoCrumbs

pdoCrumbs

01 декабря 2019, 07:00

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">&nbsp;...&nbsp;</li>
&tplHome
&tplWrapper @INLINE <ul class="breadcrumb">[[+output]]</ul>

Примеры

Генерация хлебных крошек для текущей страницы:

[[pdoCrumbs]]

Генерация в ограничением по количеству пунктов:

[[pdoCrumbs?
    &limit=`2`
]]

Сниппет хорошо работает при вызове из pdoResources. Например, вот такой чанк:

<h3>[[+pagetitle]]</h3>
<p>[[+introtext]]</p>
[[pdoCrumbs?
    &to=`[[+id]]`
    &showCurrent=`0`
]]

Генерация микроразметки Schema.org в JSON-LD формате

{'!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.

 

?

Благодарю за ответ!

Была ли эта информация полезной?

Здравствуйте!

Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи.

Инсталента
Пожалуйста, активируйте JavaScript.
Please enable JavaScript.
return; 1