Hugo Zina - Breadcrumbs

Матеріал з Wiki.Zina
Перейти до навігації Перейти до пошуку

←Hugo Zina

Breadcrumbs — хлебные крошки — сделаны в двух форматах:

Анкор ссылки можно изменить в параметре страницы title_breadcrumbs.

Тестирование:

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 "&nbsp;" " " -}}
        {{- 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">&#8250;</span>
    {{- end }}
  </li>
{{- end }}
</ol>
{{ "<!-- /Breadcrumbs -->" | safeHTML }}