Breadcrumb Stuctured data using pdoCrumbs, Bootstrap5 and, JSON

Body
I show you how to provide breadcrumb structured data for SEO for MODX2 and MODX3 using pdoCrumbs, a pdoTools component with bootstrap 5, with html5 and JSON outputs.

Authored on

Framework

Websites may benefit from the use of structured data. One of the components recognized by search engines are Breadcrumbs, a hierarchical navigation structure for showing depth of the current content. 

Requires: pdoTools to be installed using the Extras Installer in your MODX Manager.

Implementation

The following can be placed in a template, resource, or chunk.

[[!pdoCrumbs?
&tpl=`@INLINE
<li class="breadcrumb-item" aria-current="page">
   <a href="[[+link]]">[[+pagetitle]]</a>
</li>
`
&tplCurrent=`@INLINE
<li class="breadcrumb-item active font-weight-bold text-uppercase disabled" aria-current="page">[[+pagetitle]]</li>
`
&tplMax=`@INLINE <span> ... </span>`
&tplHome=`@INLINE
<li class="breadcrumb-item" aria-current="page">
   <a href="[[++site_url]]">Home</a>
</li>
`
&tplWrapper =`@INLINE
<nav aria-label="breadcrumb" role="navigation" class="mb-4">
   <div class="container clearfix">
       <div class="row float-end">
           <ol class="breadcrumb bg-white border-bottom border-top border-dark">
               [[+output]]
           </ol>
       </div>
   </div>
</nav>

&showHome=`1`
&showAtHome=`0`
&scheme=`1`
]]
[[!pdoCrumbs?
&scheme=`https`
&tpl=`@INLINE
{
"@type": "ListItem",
"position": [[+idx]],
"name": "[[+pagetitle]]",
"item": "[[++site_url]][[+link]]"
},
`
&tplCurrent=`@INLINE
{
"@type": "ListItem",
"position": [[+idx]],
"name": "[[+pagetitle]]",
"item": "[[++site_url]][[+link]]"
}
`
&tplHome=`@INLINE
{
"@type": "ListItem",
"position": [[+idx]],
"name": "Home",
"item": "[[++site_url]]"
},
`
&tplWrapper =`@INLINE
<script type="application/ld+json">
   {
       "@context": "https://schema.org",
       "@type": "BreadcrumbList",
       "name":"[[++sitename]] Breadcrumbs",
       "itemListElement": [
           [[+output]]
   ]
   }
</script>
` &showHome=`1`
&showAtHome=`0`
&scheme=`1`
]]