MayMeow/php-encrypt

View on GitHub
docs/layouts/partials/head/structured-data.html

Summary

Maintainability
Test Coverage
{{ if .IsHome -}}
  {{ if eq .Site.Params.schemaType "Organization" -}}
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "url": "{{ "/" | absURL }}",
      "name": "{{ .Site.Params.title }}",
      "logo": "{{ "/" | absURL }}{{ .Site.Params.schemaLogo }}",
      "sameAs": [
        "{{ .Site.Params.schemaTwitter | safeURL }}",
        "{{ .Site.Params.schemaLinkedIn | safeURL }}",
        "{{ .Site.Params.schemaGitHub | safeURL }}"
      ]
    }
    </script>
  {{ end -}}
  {{ if eq .Site.Params.schemaType "Person" -}}
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Person",
      "url": "{{ "/" | absURL }}",
      "name": "{{ .Site.Params.title }}",
      "sameAs": [
        "{{ .Site.Params.schemaTwitter | safeURL }}",
        "{{ .Site.Params.schemaLinkedIn | safeURL }}",
        "{{ .Site.Params.schemaGitHub | safeURL }}"
      ]
    }
    </script>
  {{ end -}}
  {{ if .Site.Params.siteLinksSearchBox -}}
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "url": "{{ "/" | absURL }}",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "{{ "/" | absURL }}?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    }
    </script>
  {{ end -}}
{{ end -}}
{{ if .IsPage -}}
  {{ if eq .Section .Site.Params.schemaSection -}}
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "{{ .Permalink }}"
      },
      "headline": "{{ .Title }}",
      "image": [{{ range $i, $e := .Params.images }}{{ if $i }}, {{ end }}{{ printf "%s%s" $.Permalink $e }}{{ end }}],
      "datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05CET" }}",
      "dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
      "author": {
        "@type": "{{ .Site.Params.schemaType }}",
        "name": "{{ .Site.Params.title }}"
      },
      "publisher": {
        "@type": "{{ .Site.Params.schemaType }}",
        "name": "{{ .Site.Params.title }}",
        {{ if eq .Site.Params.schemaType "Organization" -}}
        "logo": {
          "@type": "ImageObject",
          "url": "{{ "/" | absURL }}{{ .Site.Params.schemaLogo }}"
        }
        {{ end -}}
      },
      "description": "{{ .Description }}"
    }
    </script>
  {{ end -}}
{{ end -}}

{{ $dot := . -}}
{{ $dot.Scratch.Set "path" "" -}}
{{ $dot.Scratch.Set "breadcrumb" slice -}}

{{ $url := replace .Permalink ( printf "%s" .Site.BaseURL) "" -}}
{{ $.Scratch.Add "path" .Site.BaseURL -}}

{{ $.Scratch.Add "breadcrumb" (slice (dict "url" .Site.BaseURL "name" "home" "position" 1 )) -}}
  {{ range $index, $element := split $url "/" -}}
    {{ $dot.Scratch.Add "path" $element -}}
    {{ $.Scratch.Add "path" "/" -}}
    {{ if ne $element "" -}}
    {{ $.Scratch.Add "breadcrumb" (slice (dict "url" ($.Scratch.Get "path") "name" . "position" (add $index 2))) -}}
  {{ end -}}
{{ end -}}

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{{ range $.Scratch.Get "breadcrumb" }}{{ if ne .position 1 }},{{ end }}{
        "@type": "ListItem",
        "position": {{ .position }},
        "name": "{{ .name | humanize | title }}",
        "item": "{{ .url }}"
    }{{ end }}]
}
</script>