diff --git a/content/liens-morts/index.md b/content/liens-morts/index.md index 558ec13c..52f71654 100644 --- a/content/liens-morts/index.md +++ b/content/liens-morts/index.md @@ -1,5 +1,7 @@ --- title: Liens morts +seo: + noindex: true --- Il est inévitable, surtout quand on crée beaucoup de liens, de se retrouver confronter à des liens morts. diff --git a/content/recherche/index.md b/content/recherche/index.md index b2c03c8d..c5ed6021 100644 --- a/content/recherche/index.md +++ b/content/recherche/index.md @@ -1,3 +1,5 @@ --- title: Recherche +seo: + noindex: true --- diff --git a/content/stats/index.md b/content/stats/index.md index f38681a2..c563d105 100644 --- a/content/stats/index.md +++ b/content/stats/index.md @@ -1,5 +1,7 @@ --- title: Statistiques +seo: + noindex: true --- > Statistiques générées le {{< stats-var key="generated_at" >}} diff --git a/content/taxonomies/_index.md b/content/taxonomies/_index.md index 7f5671b0..6399a680 100644 --- a/content/taxonomies/_index.md +++ b/content/taxonomies/_index.md @@ -1,5 +1,7 @@ --- title: Taxonomies +seo: + noindex: true --- Taxonomies employées à la catégorisation du contenu de mon site. diff --git a/layouts/partials/head/json-ld.html b/layouts/partials/head/json-ld.html new file mode 100644 index 00000000..99a389fb --- /dev/null +++ b/layouts/partials/head/json-ld.html @@ -0,0 +1,139 @@ +{{- $noindex := partial "seo/noindex.html" . -}} +{{- if not $noindex -}} + {{- $language := site.LanguageCode | default site.Language.LanguageCode | default "fr-FR" -}} + {{- $description := partial "head/description.html" . -}} + {{- $pageClassification := partial "seo/page-classification.html" . -}} + {{- $websiteID := printf "%s#website" site.Home.Permalink -}} + {{- $author := partial "seo/person.html" . -}} + {{- $authorID := index $author "@id" -}} + {{- $website := dict + "@type" "WebSite" + "@id" $websiteID + "url" site.Home.Permalink + "name" site.Title + "inLanguage" $language + "author" (dict "@id" $authorID) + -}} + {{- with site.Params.description -}} + {{- $website = merge $website (dict "description" .) -}} + {{- end -}} + {{- with site.Params.search -}} + {{- with .action -}} + {{- $searchURL := . | absURL -}} + {{- $searchParam := $.Site.Params.search.param | default "q" -}} + {{- $website = merge $website (dict + "potentialAction" (dict + "@type" "SearchAction" + "target" (printf "%s?%s={search_term_string}" $searchURL $searchParam) + "query-input" "required name=search_term_string" + ) + ) -}} + {{- end -}} + {{- end -}} + + {{- $graph := slice $website $author -}} + + {{- if not .IsHome -}} + {{- $breadcrumbPages := partial "seo/breadcrumb-pages.html" . -}} + {{- if gt (len $breadcrumbPages) 1 -}} + {{- $items := slice -}} + {{- range $index, $item := $breadcrumbPages -}} + {{- $items = $items | append (dict + "@type" "ListItem" + "position" (add $index 1) + "name" (default $item.Title $item.LinkTitle) + "item" $item.Permalink + ) -}} + {{- end -}} + {{- $graph = $graph | append (dict + "@type" "BreadcrumbList" + "@id" (printf "%s#breadcrumb" .Permalink) + "itemListElement" $items + ) -}} + {{- end -}} + {{- end -}} + + {{- if .IsPage -}} + {{- $image := partial "seo/image.html" . -}} + {{- $pageSchema := dict + "@type" (index $pageClassification "jsonLdType") + "@id" (printf "%s#webpage" .Permalink) + "url" .Permalink + "name" .Title + "inLanguage" $language + "isPartOf" (dict "@id" $websiteID) + "author" (dict "@id" $authorID) + -}} + {{- with $description -}} + {{- $pageSchema = merge $pageSchema (dict "description" .) -}} + {{- end -}} + {{- with $image -}} + {{- $pageSchema = merge $pageSchema (dict "image" .) -}} + {{- end -}} + {{- with .Date -}} + {{- $pageSchema = merge $pageSchema (dict "datePublished" (.Format "2006-01-02T15:04:05Z07:00")) -}} + {{- end -}} + {{- with .Lastmod -}} + {{- $pageSchema = merge $pageSchema (dict "dateModified" (.Format "2006-01-02T15:04:05Z07:00")) -}} + {{- end -}} + + {{- if eq (index $pageClassification "jsonLdType") "BlogPosting" -}} + {{- $pageSchema = merge $pageSchema (dict + "headline" .Title + "mainEntityOfPage" .Permalink + ) -}} + {{- with .CurrentSection -}} + {{- if ne .RelPermalink "/" -}} + {{- $pageSchema = merge $pageSchema (dict "articleSection" .Title) -}} + {{- end -}} + {{- end -}} + {{- $keywords := slice -}} + {{- with .GetTerms "tags" -}} + {{- range . -}} + {{- $keywords = $keywords | append .LinkTitle -}} + {{- end -}} + {{- end -}} + {{- if gt (len $keywords) 0 -}} + {{- $pageSchema = merge $pageSchema (dict "keywords" $keywords) -}} + {{- end -}} + {{- else if eq (index $pageClassification "jsonLdType") "Review" -}} + {{- $itemReviewed := dict + "@type" (index $pageClassification "reviewedType") + "name" .Title + -}} + {{- with .Params.wikidata_id -}} + {{- $itemReviewed = merge $itemReviewed (dict "sameAs" (printf "https://www.wikidata.org/wiki/%s" .)) -}} + {{- end -}} + {{- $pageSchema = merge $pageSchema (dict + "itemReviewed" $itemReviewed + "mainEntityOfPage" .Permalink + ) -}} + {{- else if eq (index $pageClassification "jsonLdType") "Article" -}} + {{- $pageSchema = merge $pageSchema (dict + "headline" .Title + "mainEntityOfPage" .Permalink + ) -}} + {{- end -}} + + {{- $graph = $graph | append $pageSchema -}} + {{- else if not .IsHome -}} + {{- $pageSchema := dict + "@type" (index $pageClassification "jsonLdType") + "@id" (printf "%s#collection" .Permalink) + "url" .Permalink + "name" .Title + "inLanguage" $language + "isPartOf" (dict "@id" $websiteID) + -}} + {{- with $description -}} + {{- $pageSchema = merge $pageSchema (dict "description" .) -}} + {{- end -}} + {{- $graph = $graph | append $pageSchema -}} + {{- end -}} + + {{- $payload := dict + "@context" "https://schema.org" + "@graph" $graph + -}} + +{{- end -}} diff --git a/layouts/partials/head/metadata.html b/layouts/partials/head/metadata.html index b9043073..edcdcc5d 100644 --- a/layouts/partials/head/metadata.html +++ b/layouts/partials/head/metadata.html @@ -10,16 +10,13 @@ {{- $socialImage := partial "head/social-image.html" . -}} {{- $openGraphImage := $socialImage.openGraph -}} {{- $twitterImage := $socialImage.twitter -}} -{{- $searchPath := site.Params.search.action | relURL -}} -{{- $isSearchPage := eq .RelPermalink $searchPath -}} +{{- $noindex := partial "seo/noindex.html" . -}} +{{- $pageClassification := partial "seo/page-classification.html" . -}} {{- $robots := "max-image-preview:large" -}} -{{- if $isSearchPage -}} +{{- if $noindex -}} {{- $robots = "noindex, follow" -}} {{- end -}} -{{- $ogType := "website" -}} -{{- if and .IsPage (not $isSearchPage) -}} - {{- $ogType = "article" -}} -{{- end -}} +{{- $ogType := index $pageClassification "openGraphType" -}} {{- $localeCode := site.LanguageCode | default site.Language.LanguageCode | default "fr-FR" -}} {{- $locale := replace $localeCode "-" "_" -}}