Hugo Zina - Breadcrumbs
Breadcrumbs — хлебные крошки — сделаны в двух форматах:
- JSON как рекомендует Google
- Микроданные в HTML
Анкор ссылки можно изменить в параметре страницы title_breadcrumbs.
Тестирование:
- https://search.google.com/structured-data/testing-tool — Инструмент проверки структурированных данных — прямое тестирование написанного кода или страницы сайта
- https://search.google.com/test/rich-results — Проверка расширенных результатов
- https://www.google.com/webmasters/markup-helper/u/0/ — Мастер разметки структурированных данных Google — проверка соответствия содержимого страницы микроразметке
layouts/partials/breadcrumbs.html
{{- $scratchBreadcrumbs := newScratch -}}
{{- $scratchBreadcrumbs.Set "pages" slice -}}
{{- $scratchBreadcrumbs.Set "reversed" slice -}}
{{- $scratchBreadcrumbs.Set "current" . -}}
{{- range slice 1 2 3 4 -}}
{{- if ($scratchBreadcrumbs.Get "current") -}}
{{- $scratchBreadcrumbs.Add "reversed" ($scratchBreadcrumbs.Get "current") -}}
{{- $scratchBreadcrumbs.Set "current" ($scratchBreadcrumbs.Get "current").Parent -}}
{{- end -}}
{{- end -}}
{{- $total := len ($scratchBreadcrumbs.Get "reversed") -}}
{{- $scratchBreadcrumbs.Set "position" (len ($scratchBreadcrumbs.Get "reversed")) -}}
{{- range $scratchBreadcrumbs.Get "reversed" -}}
{{- $scratchBreadcrumbs.Add "pages" (dict "position" ($scratchBreadcrumbs.Get "position") "page" .) -}}
{{- $scratchBreadcrumbs.Set "position" (sub ($scratchBreadcrumbs.Get "position") 1) -}}
{{- end }}
{{ "<!-- Breadcrumbs JSON -->" | safeHTML }}
<script type="application/ld+json">
[{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{{- range sort ($scratchBreadcrumbs.Get "pages") "position" "asc" }}
{{- if ne .position 1 -}},{{- end -}}
{
"@type": "ListItem",
"position": {{.position}},
"name": "
{{- if .page.Params.title_breadcrumbs -}}
{{- .page.Params.title_breadcrumbs -}}
{{- else -}}
{{- replace .page.Title " " " " -}}
{{- end }}",
"item": {{ .page.Permalink }}
}
{{- end }}]
}]
</script>
{{ "<!-- Breadcrumbs HTML/Microdata -->" | safeHTML }}
<ol class="breadcrumbs" itemscope itemtype="https://schema.org/BreadcrumbList">
{{- range $index, $value := sort ($scratchBreadcrumbs.Get "pages") "position" "asc" }}
<li class="breadcrumbs__item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
{{- if ne .position $total }}
<a class="breadcrumbs__link" href="{{ .page.Permalink }}" itemscope itemtype="https://schema.org/ListItem" itemprop="item" itemid="{{ .page.Permalink }}">
{{- end }}
<span itemprop="name">
{{- if .page.Params.title_breadcrumbs -}}
{{- .page.Params.title_breadcrumbs -}}
{{- else -}}
{{- .page.Title | safeHTML -}}
{{- end -}}
</span>
{{- if ne .position $total -}}
</a>
{{- end }}
<meta itemprop="position" content="{{ .position }}" />
{{- if ne .position $total }}
<span class="breadcrumbs__divider">›</span>
{{- end }}
</li>
{{- end }}
</ol>
{{ "<!-- /Breadcrumbs -->" | safeHTML }}