mirror of
https://github.com/docker/docs.git
synced 2026-03-27 14:28:47 +07:00
Merge pull request #23812 from dvdksn/geo
site: improve schema.org json-ld markup
This commit is contained in:
@@ -58,4 +58,4 @@
|
||||
itemprop="datePublished"
|
||||
content="{{ .PublishDate | default .Lastmod }}"
|
||||
/>
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","headline":{{ .LinkTitle | jsonify }},"description":{{ $description | jsonify }},"url":"{{ .Permalink }}"}</script>
|
||||
{{ partial "schema.html" . }}
|
||||
|
||||
110
layouts/partials/schema.html
Normal file
110
layouts/partials/schema.html
Normal file
@@ -0,0 +1,110 @@
|
||||
{{- $description := partial "utils/description.html" . -}}
|
||||
{{- $keywords := delimit (partialCached "utils/keywords.html" . .) ", " -}}
|
||||
|
||||
{{- /* Build TechArticle schema for content pages */ -}}
|
||||
{{- $schema := dict
|
||||
"@context" "https://schema.org"
|
||||
"@type" "TechArticle"
|
||||
"headline" .LinkTitle
|
||||
"description" $description
|
||||
"url" .Permalink
|
||||
-}}
|
||||
|
||||
{{- /* Add dates (from Git via enableGitInfo) */ -}}
|
||||
{{- with .PublishDate -}}
|
||||
{{- $schema = merge $schema (dict "datePublished" (time.Format "2006-01-02T15:04:05Z07:00" .)) -}}
|
||||
{{- end -}}
|
||||
{{- with .Lastmod -}}
|
||||
{{- $schema = merge $schema (dict "dateModified" (time.Format "2006-01-02T15:04:05Z07:00" .)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add author and publisher */ -}}
|
||||
{{- $logoUrl := printf "%sassets/images/docker-logo.png" (strings.TrimSuffix "/" site.BaseURL | printf "%s/") -}}
|
||||
{{- $org := dict
|
||||
"@type" "Organization"
|
||||
"name" "Docker Inc"
|
||||
"url" "https://www.docker.com"
|
||||
-}}
|
||||
{{- $schema = merge $schema (dict "author" $org "publisher" (merge $org (dict "logo" (dict "@type" "ImageObject" "url" $logoUrl)))) -}}
|
||||
|
||||
{{- /* Add article section (from Hugo section) */ -}}
|
||||
{{- with .Section -}}
|
||||
{{- $schema = merge $schema (dict "articleSection" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add keywords if present */ -}}
|
||||
{{- with $keywords -}}
|
||||
{{- $schema = merge $schema (dict "keywords" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add time required if specified in frontmatter */ -}}
|
||||
{{- with .Params.time -}}
|
||||
{{- /* Convert "20 minutes" to ISO 8601 duration "PT20M" */ -}}
|
||||
{{- $duration := . -}}
|
||||
{{- $isoDuration := "" -}}
|
||||
{{- if findRE `(\d+)\s*minutes?` $duration -}}
|
||||
{{- $mins := index (findRE `\d+` $duration) 0 -}}
|
||||
{{- $isoDuration = printf "PT%sM" $mins -}}
|
||||
{{- else if findRE `(\d+)\s*hours?` $duration -}}
|
||||
{{- $hours := index (findRE `\d+` $duration) 0 -}}
|
||||
{{- $isoDuration = printf "PT%sH" $hours -}}
|
||||
{{- end -}}
|
||||
{{- with $isoDuration -}}
|
||||
{{- $schema = merge $schema (dict "timeRequired" .) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add isPartOf relationship to parent section */ -}}
|
||||
{{- with .Parent -}}
|
||||
{{- if and (not .IsHome) .Permalink -}}
|
||||
{{- $isPartOf := dict
|
||||
"@type" "WebPage"
|
||||
"@id" .Permalink
|
||||
"name" .LinkTitle
|
||||
-}}
|
||||
{{- $schema = merge $schema (dict "isPartOf" $isPartOf) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Output the schema as JSON-LD */ -}}
|
||||
<script type="application/ld+json">{{ $schema | jsonify | safeJS }}</script>
|
||||
|
||||
{{- /* Add BreadcrumbList schema */ -}}
|
||||
{{- $breadcrumbs := slice -}}
|
||||
{{- $position := 1 -}}
|
||||
{{- range .Ancestors.Reverse -}}
|
||||
{{- if and (not .IsHome) .Permalink -}}
|
||||
{{- $item := dict
|
||||
"@type" "ListItem"
|
||||
"position" $position
|
||||
"item" (dict
|
||||
"@id" .Permalink
|
||||
"name" .LinkTitle
|
||||
)
|
||||
-}}
|
||||
{{- $breadcrumbs = $breadcrumbs | append $item -}}
|
||||
{{- $position = add $position 1 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add current page to breadcrumbs */ -}}
|
||||
{{- $currentItem := dict
|
||||
"@type" "ListItem"
|
||||
"position" $position
|
||||
"item" (dict
|
||||
"@id" .Permalink
|
||||
"name" .LinkTitle
|
||||
)
|
||||
-}}
|
||||
{{- $breadcrumbs = $breadcrumbs | append $currentItem -}}
|
||||
|
||||
{{- /* Only output breadcrumbs if there's more than just the current page */ -}}
|
||||
{{- if gt (len $breadcrumbs) 1 -}}
|
||||
<script type="application/ld+json">
|
||||
{{- dict
|
||||
"@context" "https://schema.org"
|
||||
"@type" "BreadcrumbList"
|
||||
"itemListElement" $breadcrumbs
|
||||
| jsonify | safeJS -}}
|
||||
</script>
|
||||
{{- end -}}
|
||||
Reference in New Issue
Block a user