|
1 | 1 | {{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }} |
2 | 2 | {{- if eq .Kind "home" }} |
| 3 | + {{- $schema := dict "@context" "http://schema.org" "@type" "WebSite" "name" .Site.Title "url" .Site.BaseURL "inLanguage" .Lang }} |
| 4 | + {{- with partial "utils/description" . }} |
| 5 | + {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }} |
| 6 | + {{- end }} |
| 7 | + {{- with partial "utils/featured" . }} |
| 8 | + {{- $schema = merge $schema (dict "thumbnailUrl" .) }} |
| 9 | + {{- end }} |
| 10 | + {{- with .Site.Params.geekdocContentLicense }} |
| 11 | + {{- $schema = merge $schema (dict "license" .name) }} |
| 12 | + {{- end }} |
3 | 13 | <script type="application/ld+json"> |
4 | | - { |
5 | | - "@context": "http://schema.org", |
6 | | - "@type": "WebSite", |
7 | | - "name": {{ .Site.Title }}, |
8 | | - "url": {{ .Site.BaseURL }}, |
9 | | - {{- with partial "utils/description" . }} |
10 | | - "description": "{{ . | plainify | htmlUnescape | chomp }}", |
11 | | - {{- end }} |
12 | | - {{- with partial "utils/featured" . }} |
13 | | - "thumbnailUrl": {{ . }}, |
14 | | - {{- end }} |
15 | | - {{- with .Site.Params.geekdocContentLicense }} |
16 | | - "license": "{{ .name }}", |
17 | | - {{- end }} |
18 | | - "inLanguage": {{ .Lang }} |
19 | | - } |
| 14 | + {{- $schema | jsonify | safeJS }} |
20 | 15 | </script> |
21 | 16 | {{- else if $isPage }} |
| 17 | + {{- $title := partial "utils/title" . }} |
| 18 | + {{- $schema := dict |
| 19 | + "@context" "http://schema.org" |
| 20 | + "@type" "TechArticle" |
| 21 | + "articleSection" (.Section | humanize | title) |
| 22 | + "name" $title |
| 23 | + "url" .Permalink |
| 24 | + "headline" $title |
| 25 | + "wordCount" (string .WordCount) |
| 26 | + "inLanguage" .Lang |
| 27 | + "isFamilyFriendly" "true" |
| 28 | + "copyrightHolder" .Site.Title |
| 29 | + "copyrightYear" (.Date.Format "2006") |
| 30 | + "dateCreated" (.Date.Format "2006-01-02T15:04:05.00Z") |
| 31 | + "datePublished" (.PublishDate.Format "2006-01-02T15:04:05.00Z") |
| 32 | + "dateModified" (.Lastmod.Format "2006-01-02T15:04:05.00Z") |
| 33 | + }} |
| 34 | + {{- with .Params.lead }} |
| 35 | + {{- $schema = merge $schema (dict "alternativeHeadline" .) }} |
| 36 | + {{- end }} |
| 37 | + {{- with partial "utils/description" . }} |
| 38 | + {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }} |
| 39 | + {{- end }} |
| 40 | + {{- with partial "utils/featured" . }} |
| 41 | + {{- $schema = merge $schema (dict "thumbnailUrl" .) }} |
| 42 | + {{- end }} |
| 43 | + {{- with .Site.Params.geekdocContentLicense }} |
| 44 | + {{- $schema = merge $schema (dict "license" .name) }} |
| 45 | + {{- end }} |
| 46 | + {{- $mainEntity := dict "@type" "WebPage" "@id" .Permalink }} |
| 47 | + {{- $schema = merge $schema (dict "mainEntityOfPage" $mainEntity) }} |
| 48 | + {{- with $tags := .Params.tags }} |
| 49 | + {{- $schema = merge $schema (dict "keywords" $tags) }} |
| 50 | + {{- end }} |
| 51 | + {{- $logoUrl := default "brand.svg" .Site.Params.logo | absURL }} |
| 52 | + {{- $logo := dict "@type" "ImageObject" "url" $logoUrl "width" "32" "height" "32" }} |
| 53 | + {{- $publisher := dict "@type" "Organization" "name" .Site.Title "url" .Site.BaseURL "logo" $logo }} |
| 54 | + {{- $schema = merge $schema (dict "publisher" $publisher) }} |
22 | 55 | <script type="application/ld+json"> |
23 | | - { |
24 | | - "@context": "http://schema.org", |
25 | | - "@type": "TechArticle", |
26 | | - "articleSection": "{{ .Section | humanize | title }}", |
27 | | - "name": {{ partial "utils/title" . }}, |
28 | | - "url" : {{ .Permalink }}, |
29 | | - "headline": {{ partial "utils/title" . }}, |
30 | | - {{- with .Params.lead }} |
31 | | - "alternativeHeadline": {{ . }}, |
32 | | - {{- end }} |
33 | | - {{- with partial "utils/description" . }} |
34 | | - "description": "{{ . | plainify | htmlUnescape | chomp }}", |
35 | | - {{- end }} |
36 | | - {{- with partial "utils/featured" . }} |
37 | | - "thumbnailUrl": {{ . }}, |
38 | | - {{- end }} |
39 | | - "wordCount" : "{{ .WordCount }}", |
40 | | - {{- with .Site.Params.geekdocContentLicense }} |
41 | | - "license": "{{ .name }}", |
42 | | - {{- end }} |
43 | | - "inLanguage": {{ .Lang }}, |
44 | | - "isFamilyFriendly": "true", |
45 | | - "mainEntityOfPage": { |
46 | | - "@type": "WebPage", |
47 | | - "@id": {{ .Permalink }} |
48 | | - }, |
49 | | - {{- with $tags := .Params.tags }} |
50 | | - "keywords" : [ {{ range $i, $tag := $tags }}{{ if $i }}, {{ end }}"{{ $tag }}" {{ end }}], |
51 | | - {{- end }} |
52 | | - "copyrightHolder" : "{{ .Site.Title }}", |
53 | | - "copyrightYear" : "{{ .Date.Format "2006" }}", |
54 | | - "dateCreated": "{{ .Date.Format "2006-01-02T15:04:05.00Z" | safeJS }}", |
55 | | - "datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05.00Z" | safeJS }}", |
56 | | - "dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05.00Z" | safeJS }}", |
57 | | - "publisher":{ |
58 | | - "@type":"Organization", |
59 | | - "name": {{ .Site.Title }}, |
60 | | - "url": {{ .Site.BaseURL }}, |
61 | | - "logo": { |
62 | | - "@type": "ImageObject", |
63 | | - "url": {{ (default "brand.svg" .Site.Params.logo) | absURL }}, |
64 | | - "width":"32", |
65 | | - "height":"32" |
66 | | - } |
67 | | - } |
68 | | - } |
| 56 | + {{- $schema | jsonify | safeJS }} |
69 | 57 | </script> |
70 | 58 | {{- end }} |
0 commit comments