Edit metadata management and robots exclusion protocol

This commit is contained in:
Paul Nicoué 2022-05-30 16:07:25 +02:00
parent d149a90c80
commit cea8f504df
21 changed files with 282 additions and 144 deletions

View file

@ -0,0 +1,19 @@
title: Meta image
accept:
mime: image/jpeg, image/png
fields:
crop:
label:
en: Social networks image crop
fr: Recadrage pour les réseaux sociaux
type: imagecrop
minSize:
width: 1200
height: 675
preserveAspectRatio: true
width: 1/2
alt_text:
label:
en: Alternative text
fr: Texte alternatif
type: text

View file

@ -0,0 +1,14 @@
headline: Image
type: files
template: meta_image
layout: cards
size: small
image:
query: file.croppedImage
ratio: 16/9
cover: false
back: white
max: 1
help:
en: "Image displayed by social networks (format: JPEG or PNG)."
fr: "Image affichée par les réseaux sociaux (format : JPEG ou PNG)."

View file

@ -5,52 +5,13 @@ fields:
type: textarea
size: small
buttons: false
# required: true
help:
en: "Short description of the page displayed by search engines and social networks (recommended maximum length: 160 characters)."
fr: "Courte description de la page affichée par les moteurs de recherche et les réseaux sociaux (taille maximale conseillée : 160 caractères)."
width: 3/4
gap:
type: gap
width: 1/4
meta_image:
label: Image
type: files
layout: cardlets
image:
cover: true
back: white
multiple: false
# required: true
help:
en: "Image displayed by social networks (format: JPEG or PNG)."
fr: "Image affichée par les réseaux sociaux (format : JPEG ou PNG)."
width: 1/4
# Hidden fields
og_image:
type: hidden
default:
og_type:
type: hidden
default: article
twitter_image:
type: hidden
default:
twitter_card_type:
type: hidden
default: summary_large_image
robots_noindex:
type: hidden
default: default
robots_nofollow:
type: hidden
default: default
robots_noarchive:
type: hidden
default: default
robots_noimageindex:
type: hidden
default: default
robots_nosnippet:
type: hidden
default: default

View file

@ -10,4 +10,5 @@ create: false
layout: cardlets
image:
cover: true
query: page.images.template('image').first
back: white

View file

@ -2,5 +2,10 @@ label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/generic_seo_metadata
columns:
- width: 3/4
sections:
seo_basic_meta: sections/generic_seo_metadata
- width: 1/3
sections:
seo_meta_image: sections/generic_seo_meta_image

View file

@ -2,5 +2,10 @@ label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/generic_seo_metadata
columns:
- width: 3/4
sections:
seo_basic_meta: sections/generic_seo_metadata
- width: 1/3
sections:
seo_meta_image: sections/generic_seo_meta_image

View file

@ -2,5 +2,10 @@ label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/generic_seo_metadata
columns:
- width: 3/4
sections:
seo_basic_meta: sections/generic_seo_metadata
- width: 1/3
sections:
seo_meta_image: sections/generic_seo_meta_image

View file

@ -7,16 +7,10 @@ return [
'language' => 'fr',
'css' => 'assets/css/panel.min.css'
],
// Meta Knight plugin options
'diesdasdigital.meta-knight' => [
'siteTitleAfterPageTitle' => false,
'separator' => ' | ',
'metaAuthor' => false
],
// Sitemapper plugin options
'kirbyzone.sitemapper' => [
'intro' => false,
'byLine' => 'Sitemap automatically generated by Sitemapper, by <a href="https://github.com/kirbyzone" target="_blank">Kirbyzone</a>.'
'byLine' => 'Sitemap generated with Sitemapper by <a href="https://github.com/kirbyzone" target="_blank">Kirbyzone</a>.'
],
// Hooks
'hooks' => [
@ -28,23 +22,6 @@ return [
]);
}
},
'page.update:after' => function($newPage) {
// Populate page og_image and twitter_image fields with page meta_image field value after page update
if ($newPage->meta_image()) {
$newPage->update([
'og_image' => $newPage->meta_image()->value(),
'twitter_image' => $newPage->meta_image()->value()
]);
}
// Populate site meta_description, og_image and twitter_image fields with home page meta_description, og_image and twitter_image fields value after home page update
if ($newPage->template()->name() === 'home' && $newPage->meta_description()) {
$this->site()->update([
'meta_description' => $newPage->meta_description()->value(),
'og_image' => $newPage->og_image()->value(),
'twitter_image' => $newPage->twitter_image()->value()
]);
}
},
'kirbytext:after' => function (string $text) {
// Replace any HTML <h1> or <h2> tag by <h3> tag after Markdown parsing
return preg_replace(['/<h1>|<h2>/', '/<\/h1>|<\/h2>/'], ['<h3>', '</h3>'], $text);

View file

@ -0,0 +1,5 @@
<!-- Favicon -->
<link rel="icon" sizes="any" href="assets/favicon/xiao-wang-favicon.ico">
<link rel="icon" type="image/svg+xml" href="assets/favicon/xiao-wang-favicon.svg">
<link rel="apple-touch-icon" href="assets/favicon/xiao-wang-apple-touch-icon.png">
<link rel="manifest" href="assets/favicon/xiao-wang.webmanifest">

View file

@ -0,0 +1,73 @@
<!-- Basic metadata -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<html lang="fr">
<!-- Schema -->
<style itemscope itemtype="https://schema.org/WebSite" itemref="schema_name schema_description schema_image"></style>
<!-- Title -->
<title>{{ site.title }} | {{ page.title }}</title>
<meta id="schema_name" itemprop="name" content="{{ site.title }} | {{ page.title }}">
<!-- Description -->
{% if page.meta_description is not empty %}
<meta name="description" content="{{ page.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta name="description" content="{{ site.homePage.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ site.homePage.meta_description }}">
{% endif %}
<!-- Canonical URL -->
<link rel="canonical" href="{{ page.url }}">
<!-- Author -->
<meta name="author" content="{{ site.title }}">
<!-- Date -->
<meta name="date" content="{{ page.modified('Y-m-d') }}">
<!-- Image -->
{% if page.images.template('meta_image') is not empty %}
<meta id="schema_image" itemprop="image" content="{{ page.images.template('meta_image').first.url }}">
{% elseif site.homePage.images.template('meta_image') is not empty %}
<meta id="schema_image" itemprop="image" content="{{ site.homePage.images.template('meta_image').first.url }}">
{% endif %}
{% if page.template != 'error' %}
<!-- Open Graph -->
<meta property="og:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %}
<meta property="og:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta property="og:description" content="{{ site.homePage.meta_description }}">
{% endif %}
{% if page.images.template('meta_image') is not empty %}
<meta property="og:image" content="{{ page.images.template('meta_image').first.croppedImage.resize(1200, 675).url }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675">
{% elseif site.homePage.images.template('meta_image') is not empty %}
<meta property="og:image" content="{{ site.homePage.images.template("meta_image").first.croppedImage.resize(1200, 675).url }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675">
{% endif %}
<meta property="og:url" content="{{ page.url }}">
<meta property="og:type" content="{{ page.og_type }}">
<!-- Twitter Card -->
<meta name="twitter:card" content="{{ page.twitter_card_type.value }}">
<meta name="twitter:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %}
<meta name="twitter:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta name="twitter:description" content="{{ site.homePage.meta_description }}">
{% endif %}
{% if page.images.template('meta_image') is not empty %}
<meta name="twitter:image" content="{{ page.images.template('meta_image').first.croppedImage.resize(1200, 675).url }}">
{% elseif site.homePage.images.template('meta_image') is not empty %}
<meta name="twitter:image" content="{{ site.homePage.images.template("meta_image").first.croppedImage.resize(1200, 675).url }}">
{% endif %}
{% endif %}

View file

@ -3,15 +3,9 @@
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
{{ snippet('meta_information') }}
{{ snippet('robots') }}
<link rel="icon" sizes="any" href="assets/favicon/xiao-wang-favicon.ico">
<link rel="icon" type="image/svg+xml" href="assets/favicon/xiao-wang-favicon.svg">
<link rel="apple-touch-icon" href="assets/favicon/xiao-wang-apple-touch-icon.png">
<link rel="manifest" href="assets/favicon/xiao-wang.webmanifest">
{{ snippet('metadata') }}
{{ snippet('favicon') }}
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('assets/css/style.min.css') }}">
@ -32,15 +26,17 @@
</a>
</div>
<nav class="header-bar__nav" aria-label="Menu">
<button class="header-bar__nav-button" tabindex="-1" aria-hidden="true">
<div class="header-bar__nav-button-line-1"></div>
<div class="header-bar__nav-button-line-2"></div>
<div class="header-bar__nav-button-line-3"></div>
</button>
<ul class="header-bar__nav-menu">
</ul>
</nav>
{% if page != site.homePage %}
<nav class="header-bar__nav" aria-label="Menu">
<button class="header-bar__nav-button" tabindex="-1" aria-hidden="true">
<div class="header-bar__nav-button-line-1"></div>
<div class="header-bar__nav-button-line-2"></div>
<div class="header-bar__nav-button-line-3"></div>
</button>
<ul class="header-bar__nav-menu">
</ul>
</nav>
{% endif %}
</div>
@ -75,7 +71,7 @@
</a>
</div>
<div class="footer-bar__copyright">
<p>&copy; {{ 'now' | date('Y') }} {{ site.meta_author }}</p>
<p>&copy; {{ 'now' | date('Y') }} {{ site.title }}</p>
</div>
</div>

View file

@ -15,8 +15,8 @@
{% if page.text.isNotEmpty %}
<div class="gallery__introduction">{{ page.text.kirbytext|raw }}</div>
{% endif %}
{% if page.files.isNotEmpty %}
{% set artworks = page.files.sortBy('sort') %}
{% if page.files.template("artwork").isNotEmpty %}
{% set artworks = page.files.template("artwork").sortBy('sort') %}
{% for artwork in artworks %}
<figure class="gallery__artwork">
{% if artwork.type == 'video' %}

View file

@ -19,7 +19,7 @@
{% set navItemNo = navItemNo + 1 %}
{% endfor %}
<div class="home__nav-image" aria-hidden="true">
<img src="{{ page.image.url }}" srcset="{{ page.image.srcset() }}" alt="{{ page.image.alt_text }}">
<img src="{{ page.images.template("image").first.url }}" srcset="{{ page.images.template("image").first.srcset() }}" alt="{{ page.images.template("image").first.alt_text }}">
</div>
</nav>
</div>