Add SEO improvements: canonical, hreflang, schema fixes, robots.txt
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- Fix breadcrumb schema position bug (3 → 2) for Google Rich Results - Override article/post schemas to use post image instead of site logo - Fix og:type to emit "article" on post pages with published/modified times - Add canonical link and hreflang alternate tags (incl. x-default) for bilingual site - Add organizationName/organizationLogo params for valid Organization schema - Add robots.txt with sitemap pointer - Add preconnect hint for analytics host
This commit is contained in:
parent
eca951d47e
commit
c8ff5c1d68
9 changed files with 164 additions and 20 deletions
|
|
@ -1,3 +1,11 @@
|
|||
<link rel="canonical" href="{{ .Permalink }}" />
|
||||
{{ if .IsTranslated }}
|
||||
{{ range .AllTranslations }}
|
||||
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}" />
|
||||
{{ end }}
|
||||
{{ range .AllTranslations }}{{ if eq .Lang "en" }}<link rel="alternate" hreflang="x-default" href="{{ .Permalink }}" />{{ end }}{{ end }}
|
||||
{{ end }}
|
||||
<link rel="preconnect" href="https://pythagore.p0m.fr" />
|
||||
<script async defer data-website-id="714f2f10-3a65-4c5b-971f-7cea9eac1ecd" src="https://pythagore.p0m.fr/pythagore.js"></script>
|
||||
<link rel="stylesheet" href="{{ "css/custom.css" | absURL }}" />
|
||||
<style>
|
||||
|
|
|
|||
|
|
@ -90,14 +90,15 @@
|
|||
|
||||
{{ if $thumbs }}
|
||||
<div class="container">
|
||||
{{range $i, $thumb := $thumbs}}
|
||||
<a href="{{ $thumb.link | absURL }}" target="_blank">
|
||||
<div class="thumbApp" style="background-image:url('{{ $thumb.src | absURL }}')">
|
||||
{{ if $thumb.desc }}<p><span>{{ $thumb.desc }}</span></p>{{end}}
|
||||
</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
<span style="clear:both; display: block"></span>
|
||||
<div class="thumbApps">
|
||||
{{range $i, $thumb := $thumbs}}
|
||||
<a href="{{ $thumb.link | absURL }}" target="_blank">
|
||||
<div class="thumbApp" style="background-image:url('{{ $thumb.src | absURL }}')">
|
||||
{{ if $thumb.desc }}<p><span>{{ $thumb.desc }}</span></p>{{end}}
|
||||
</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
<hr class="small">
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
|||
21
layouts/partials/seo/opengraph.html
Normal file
21
layouts/partials/seo/opengraph.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{{- with .Title | default .Site.Title }}
|
||||
<meta property="og:title" content="{{ . }}" />
|
||||
{{- end }}
|
||||
{{- with .Description | default .Params.subtitle | default .Summary }}
|
||||
<meta property="og:description" content="{{ . }}">
|
||||
{{- end }}
|
||||
{{- with .Params.share_img | default .Params.image | default .Site.Params.logo }}
|
||||
<meta property="og:image" content="{{ . | absURL }}" />
|
||||
{{- end }}
|
||||
{{- with .Site.Params.fb_app_id }}
|
||||
<meta property="fb:app_id" content="{{ . }}" />
|
||||
{{- end }}
|
||||
<meta property="og:url" content="{{ .Permalink | absLangURL }}" />
|
||||
{{- if .IsPage }}
|
||||
<meta property="og:type" content="article" />
|
||||
{{- with .PublishDate }}<meta property="article:published_time" content="{{ .Format "2006-01-02T15:04:05Z07:00" }}" />{{- end }}
|
||||
{{- with .Lastmod }}<meta property="article:modified_time" content="{{ .Format "2006-01-02T15:04:05Z07:00" }}" />{{- end }}
|
||||
{{- else }}
|
||||
<meta property="og:type" content="website" />
|
||||
{{- end }}
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}" />
|
||||
28
layouts/partials/seo/structured/article.html
Normal file
28
layouts/partials/seo/structured/article.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "Article",
|
||||
"author": {
|
||||
"name" : "{{ if .Params.author -}}{{ .Params.author }}{{- else if .Site.Params.author.name -}}{{ .Site.Params.author.name }}{{- end }}"
|
||||
},
|
||||
"headline": "{{ .Title }}",
|
||||
"description" : "{{ if .Description }}{{ .Description | plainify }}{{ else }}{{if .IsPage}}{{ .Summary | plainify }}{{ end }}{{ end }}",
|
||||
"inLanguage" : "{{ .Lang }}",
|
||||
"wordCount": {{ .WordCount }},
|
||||
"datePublished" : "{{ .PublishDate.Format "2006-01-02T15:04:05-07:00" }}",
|
||||
"dateModified" : "{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" }}",
|
||||
"image" : "{{ .Params.share_img | default .Params.image | default .Site.Params.logo | absURL }}",
|
||||
"keywords" : [ "{{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}" ],
|
||||
"mainEntityOfPage" : "{{ .Permalink }}",
|
||||
"publisher" : {
|
||||
"@type": "Organization",
|
||||
"name" : "{{ .Site.BaseURL }}",
|
||||
"logo" : {
|
||||
"@type" : "ImageObject",
|
||||
"url" : "{{ .Site.Params.logo | absURL }}",
|
||||
"height" : 60 ,
|
||||
"width" : 60
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
21
layouts/partials/seo/structured/breadcrumb.html
Normal file
21
layouts/partials/seo/structured/breadcrumb.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [{
|
||||
"@type": "ListItem",
|
||||
"position": 1,
|
||||
"item": {
|
||||
"@id": "{{ .Site.BaseURL }}",
|
||||
"name": "home"
|
||||
}
|
||||
},{
|
||||
"@type": "ListItem",
|
||||
"position": 2,
|
||||
"item": {
|
||||
"@id": "{{ .Permalink }}",
|
||||
"name": "{{ .Title | humanize }}"
|
||||
}
|
||||
}]
|
||||
}
|
||||
</script>
|
||||
47
layouts/partials/seo/structured/post.html
Normal file
47
layouts/partials/seo/structured/post.html
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<script type="application/ld+json"> {
|
||||
"@context" : "http://schema.org",
|
||||
"@type" : "BlogPosting",
|
||||
{{ if .Params.categories }}{{ range .Params.categories }}"articleSection" : "{{ . }}",{{ end }}{{ end }}
|
||||
"name" : "{{ .Title | safeJS }}",
|
||||
"headline" : "{{ .Title | safeJS }}",
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "{{ .Permalink }}"
|
||||
},
|
||||
"description" : "{{ if .Description }}{{ .Description | plainify }}{{ else }}{{if .IsPage}}{{ .Summary | plainify }}{{ end }}{{ end }}",
|
||||
"inLanguage" : "{{ .Lang }}",
|
||||
{{ if .Params.author -}}
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "{{ .Params.author }}"
|
||||
},
|
||||
{{- else if .Site.Params.author.name -}}
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "{{ .Site.Params.author.name }}"
|
||||
},
|
||||
{{- end }}
|
||||
"copyrightYear" : "{{ .Site.Params.since }} - {{ .Site.Lastmod.Format "2006" }}",
|
||||
{{ if not .PublishDate.IsZero -}}
|
||||
"datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
|
||||
{{- else if not .Date.IsZero -}}
|
||||
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
|
||||
{{- end }}
|
||||
{{ with .Lastmod -}}
|
||||
"dateModified": "{{ .Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
|
||||
{{- end }}
|
||||
"url" : "{{ .Permalink }}",
|
||||
"wordCount" : "{{ .WordCount }}",
|
||||
"image" : "{{ .Params.share_img | default .Params.image | default .Site.Params.logo | absURL }}",
|
||||
"keywords" : [ "{{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}" ],
|
||||
"publisher" : {
|
||||
"@type": "Organization",
|
||||
"name" : "{{ .Site.BaseURL }}",
|
||||
"logo" : {
|
||||
"@type" : "ImageObject",
|
||||
"url" : "{{ .Site.Params.logo | absURL }}",
|
||||
"height" : 60 ,
|
||||
"width" : 60
|
||||
}
|
||||
}
|
||||
} </script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue