mirror of
				https://github.com/Wonderfall/hugo-WonderMod.git
				synced 2025-10-31 03:45:24 +01:00 
			
		
		
		
	json-schema: add support for Rich Results: Json schema for structured data (#36)
* json-schema: init * sameAs can be set through .Site.Params.schema.sameAs * if it is not specified but social-icons exsists, we use social-icons for sameAs vars * .Site.Params.schema.sameAs overrides social-icons * publisherType can be changed via .Site.Params.schema.publisherType
This commit is contained in:
		| @@ -51,5 +51,5 @@ | |||||||
| {{- template "_internal/google_analytics_async.html" . }} | {{- template "_internal/google_analytics_async.html" . }} | ||||||
| {{- template "partials/templates/opengraph.html" . }} | {{- template "partials/templates/opengraph.html" . }} | ||||||
| {{- template "partials/templates/twitter_cards.html" . }} | {{- template "partials/templates/twitter_cards.html" . }} | ||||||
| {{- template "partials/templates/schema.html" . }} | {{- template "partials/templates/schema_json.html" . }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| <meta itemprop="name" content="{{ .Title }}"> |  | ||||||
| <meta itemprop="description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}"> |  | ||||||
|  |  | ||||||
| {{- if .IsPage }}{{ $ISO8601 := "2006-01-02T15:04:05-07:00" }}{{ if not .PublishDate.IsZero }} |  | ||||||
| <meta itemprop="datePublished" {{ .PublishDate.Format $ISO8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }} |  | ||||||
| {{ if not .Lastmod.IsZero }}<meta itemprop="dateModified" {{ .Lastmod.Format $ISO8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }} |  | ||||||
| <meta itemprop="wordCount" content="{{ .WordCount }}"> |  | ||||||
| {{- if .Params.cover.image -}} |  | ||||||
| {{- if (ne .Params.cover.relative true) }} |  | ||||||
| <meta itemprop="image" content="{{ .Params.cover.image | absURL }}" /> |  | ||||||
| {{- else}} |  | ||||||
| <meta itemprop="image" content="{{ (path.Join .RelPermalink .Params.cover.image ) | absURL }}" /> |  | ||||||
| {{- end}} |  | ||||||
| {{- else }} |  | ||||||
| {{ with $.Params.images }}{{ range first 6 . -}} |  | ||||||
| <meta itemprop="image" content="{{ . | absURL }}"> |  | ||||||
| {{ end }}{{ else -}} |  | ||||||
| {{- $images := $.Resources.ByType "image" -}} |  | ||||||
| {{- $featured := $images.GetMatch "*feature*" -}} |  | ||||||
| {{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} |  | ||||||
| {{- with $featured -}} |  | ||||||
| <meta itemprop="image" content="{{ $featured.Permalink }}"> |  | ||||||
| {{ else -}} |  | ||||||
| {{- with $.Site.Params.images -}} |  | ||||||
| <meta itemprop="image" content="{{ index . 0 | absURL }}"/> |  | ||||||
| {{ end }}{{ end }}{{ end }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| <!-- Output all taxonomies as schema.org keywords --> |  | ||||||
| <meta itemprop="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" /> |  | ||||||
| {{- end }} |  | ||||||
							
								
								
									
										65
									
								
								layouts/partials/templates/schema_json.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								layouts/partials/templates/schema_json.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | {{ if .IsHome }} | ||||||
|  | <script type="application/ld+json"> | ||||||
|  | { | ||||||
|  |   "@context": "https://schema.org", | ||||||
|  |   "@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | humanize -}}", | ||||||
|  |   "name": {{ .Site.Title }}, | ||||||
|  |   "url": {{ .Site.BaseURL }}, | ||||||
|  |   "description": {{ .Site.Params.description | plainify | truncate 180 | safeHTML }}, | ||||||
|  |   "thumbnailUrl": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}, | ||||||
|  |   "sameAs": [ | ||||||
|  |     {{- if .Site.Params.schema.sameAs }} | ||||||
|  |       {{ range $i, $e := .Site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} | ||||||
|  |     {{- else}} | ||||||
|  |       {{ range $i, $e := .Site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ $e.url }}{{ end }} | ||||||
|  |     {{- end}} | ||||||
|  |   ] | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | {{- else if .IsPage }} | ||||||
|  | <script type="application/ld+json"> | ||||||
|  | { | ||||||
|  |   "@context": "https://schema.org", | ||||||
|  |   "@type": "BlogPosting", | ||||||
|  |   "headline": {{ .Title | plainify}}, | ||||||
|  |   "name": "{{ .Title | plainify }}", | ||||||
|  |   "description": {{ .Summary | plainify | truncate 180 | safeHTML }}, | ||||||
|  |   "keywords": [ | ||||||
|  |     {{- if .Params.keywords }} | ||||||
|  |     {{ range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} | ||||||
|  |     {{- else }} | ||||||
|  |     {{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} | ||||||
|  |     {{- end }} | ||||||
|  |   ], | ||||||
|  |   "articleBody": {{ .Content | safeJS | htmlUnescape | plainify }}, | ||||||
|  |   "wordCount" : "{{ .WordCount }}", | ||||||
|  |   "inLanguage": {{ .Language.Lang | default "en-us" }}, | ||||||
|  |   {{ if .Params.cover.image -}} | ||||||
|  |   "image": | ||||||
|  |     {{- if (ne .Params.cover.relative true) -}} | ||||||
|  |     {{ .Params.cover.image | absURL }}, | ||||||
|  |     {{- else -}} | ||||||
|  |     {{ (path.Join .RelPermalink .Params.cover.image ) | absURL }}, | ||||||
|  |     {{- end}} | ||||||
|  |   {{- end}} | ||||||
|  |   "datePublished": {{ .PublishDate }}, | ||||||
|  |   "dateModified": {{ .Lastmod }}, | ||||||
|  |   "author": { | ||||||
|  |     "@type": "Person", | ||||||
|  |     "name": {{ .Params.author | default .Site.Params.author }} | ||||||
|  |   }, | ||||||
|  |   "mainEntityOfPage": { | ||||||
|  |     "@type": "WebPage", | ||||||
|  |     "@id": {{ .Permalink | safeHTML }} | ||||||
|  |   }, | ||||||
|  |   "publisher": { | ||||||
|  |     "@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | humanize -}}", | ||||||
|  |     "name": {{ .Site.Title }}, | ||||||
|  |     "logo": { | ||||||
|  |       "@type": "ImageObject", | ||||||
|  |       "url": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }} | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | {{ end }} | ||||||
		Reference in New Issue
	
	Block a user
	 Aditya Telange
					Aditya Telange