feat: intégration plugin Kirby SEO
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s

- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-25 12:59:18 +01:00
parent baab2fb3a1
commit 58c31ea391
133 changed files with 9201 additions and 253 deletions

View file

@ -79,3 +79,5 @@ tabs:
back: "#0e1e43"
text: "{{ file.memberName }}"
info: "{{ file.role }}"
seo: seo/page

View file

@ -111,3 +111,5 @@ tabs:
query: site.find('blog').children.listed
max: 3
help: "Articles similaires à afficher en bas de page"
seo: seo/page

View file

@ -54,3 +54,5 @@ tabs:
ratio: 16/9
cover: true
info: "{{ page.published.toDate('d/m/Y') }}"
seo: seo/page

View file

@ -1,29 +1,33 @@
title: Default Page
columns:
main:
width: 2/3
sections:
fields:
type: fields
fields:
text:
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
sidebar:
width: 1/3
sections:
pages:
type: pages
template: default
files:
type: files
tabs:
content:
label: Contenu
columns:
main:
width: 2/3
sections:
fields:
type: fields
fields:
text:
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
sidebar:
width: 1/3
sections:
pages:
type: pages
template: default
files:
type: files
seo: seo/page

View file

@ -74,3 +74,5 @@ tabs:
uploads:
template: video
width: 1/2
seo: seo/page

View file

@ -12,75 +12,80 @@ status:
label: Public
text: Le jeu est visible publiquement
columns:
- width: 2/10
fields:
thumbnail:
label: Vignette
type: files
layout: cards
size: small
max: 1
accept: image/*
translate: false
image:
ratio: 1/1
uploads:
template: image
help: Pour le carousel de navigation parmi les jeux
- width: 2/10
fields:
lettering:
label: Lettrage
type: files
multiple: false
translate: false
layout: cards
size: tiny
uploads:
template: image
help: Affiché au-dessus de la description
width: 1/3
- width: 3/10
fields:
description:
label: Description
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
maxlength: 200
playLink:
label: Lien(s) pour jouer
help: Laissez vide pour afficher "à venir / coming soon"
translate: false
type: url
- width: 3/10
sections:
previewCol:
type: fields
tabs:
content:
label: Contenu
columns:
- width: 2/10
fields:
backgroundColor:
label: Couleur d'arrière plan
type: code-editor
language: css
size: custom-size
default: radial-gradient(circle at 20% 80%, rgb(240, 154, 110) 0%, rgb(233, 101, 122) 100%)
translate: false
help: À remplir avec la valeur de la propriété CSS `background-color` souhaitée
preview:
label: Aperçu
thumbnail:
label: Vignette
type: files
layout: cards
multiple: false
size: small
max: 1
accept: image/*
translate: false
image:
ratio: 1/1
uploads:
template: image
help: Image affichée à droite de la description (sur ordinateur uniquement)
help: Pour le carousel de navigation parmi les jeux
- width: 2/10
fields:
lettering:
label: Lettrage
type: files
multiple: false
translate: false
layout: cards
size: tiny
uploads:
template: image
help: Affiché au-dessus de la description
width: 1/3
- width: 3/10
fields:
description:
label: Description
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
maxlength: 200
playLink:
label: Lien(s) pour jouer
help: Laissez vide pour afficher "à venir / coming soon"
translate: false
type: url
- width: 3/10
sections:
previewCol:
type: fields
fields:
backgroundColor:
label: Couleur d'arrière plan
type: code-editor
language: css
size: custom-size
default: radial-gradient(circle at 20% 80%, rgb(240, 154, 110) 0%, rgb(233, 101, 122) 100%)
translate: false
help: À remplir avec la valeur de la propriété CSS `background-color` souhaitée
preview:
label: Aperçu
type: files
layout: cards
multiple: false
translate: false
uploads:
template: image
help: Image affichée à droite de la description (sur ordinateur uniquement)
seo: seo/page

View file

@ -85,3 +85,5 @@ tabs:
cover: true
help: Image affichée au besoin pendant le chargement de la vidéo
width: 1/2
seo: seo/page

View file

@ -24,3 +24,5 @@ tabs:
template: game
info: "{{ page.statusLabel }}"
create: game
seo: seo/page

View file

@ -44,3 +44,5 @@ tabs:
template: project
info: "{{ page.catchPhrase }}"
create: project
seo: seo/page

View file

@ -12,150 +12,155 @@ icon: image
# label: Publié
# text: Le projet est visible publiquement
columns:
# Colonne principale
main:
width: 2/3
sections:
# Informations principales
info:
type: fields
fields:
catchPhrase:
label: Phrase d'accroche
type: writer
nodes: false
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
help: "Ex: Transformez votre lecture en aventure."
description:
label: Description
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
maxlength: 500
help: Description complète du projet
images:
type: fields
fields:
imagesGallery:
width: 2/3
label: Galerie d'images
type: files
layout: cards
size: small
min: 6
accept: image/*
translate: false
image:
back: #ffffff
uploads:
template: image
help: "Une animation sera générée à partir des images de ce champ. Minimum optimal d'images : 6"
mockup:
width: 1/3
label: Image de mise en situation
type: files
layout: cards
max: 1
size: small
accept: image/*
translate: false
image:
ratio: 1/1
back: #ffffff
uploads:
template: image
help: Écran de jeu mis en situation sur un appareil
# Sidebar
sidebar:
width: 1/3
sections:
meta:
type: fields
fields:
thumbnail:
label: Vignette
type: files
required: true
layout: cards
size: small
max: 1
accept: image/*
translate: false
image:
ratio: 1/1
uploads:
template: image
help: Petite image carrée représentant le jeu
galleryAnimationMode:
label: Mode d'animation de la galerie
type: toggles
default: vertical
options:
- value: vertical
text: Vertical
icon: arrow-up-down
- value: horizontal
text: Horizontal
icon: arrow-left-right
help: "Direction du défilement des images dans la galerie animée"
galleryBackgroundColor:
label: Couleur d'arrière-plan de la galerie animée
type: color
alpha: false
galleryBackgroundImage:
label: Image d'arrière-plan
type: files
multiple: false
keywords:
label: Mots clés
type: structure
tabs:
content:
label: Contenu
columns:
# Colonne principale
main:
width: 2/3
sections:
# Informations principales
info:
type: fields
fields:
label:
label: Label
required: true
type: text
width: 1/2
placeholder: "Ex: Impact, Catégorie..."
text:
label: Texte
required: true
type: text
width: 1/2
catchPhrase:
label: Phrase d'accroche
type: writer
nodes: false
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
help: "Ex: Transformez votre lecture en aventure."
description:
label: Description
type: writer
marks:
- bold
- italic
- green
- pixel
- underline
- strike
- clear
- link
maxlength: 500
help: Description complète du projet
# Liens externes
links:
type: fields
fields:
externalLinks:
label: Liens externes
type: structure
images:
type: fields
fields:
label:
label: Nom du bouton
imagesGallery:
width: 2/3
label: Galerie d'images
type: files
layout: cards
size: small
min: 6
accept: image/*
translate: false
image:
back: #ffffff
uploads:
template: image
help: "Une animation sera générée à partir des images de ce champ. Minimum optimal d'images : 6"
mockup:
width: 1/3
label: Image de mise en situation
type: files
layout: cards
max: 1
size: small
accept: image/*
translate: false
image:
ratio: 1/1
back: #ffffff
uploads:
template: image
help: Écran de jeu mis en situation sur un appareil
# Sidebar
sidebar:
width: 1/3
sections:
meta:
type: fields
fields:
thumbnail:
label: Vignette
type: files
required: true
type: text
width: 1/2
placeholder: "Ex: App Store, Site web..."
url:
label: URL
required: true
type: url
width: 1/2
layout: cards
size: small
max: 1
accept: image/*
translate: false
image:
ratio: 1/1
uploads:
template: image
help: Petite image carrée représentant le jeu
galleryAnimationMode:
label: Mode d'animation de la galerie
type: toggles
default: vertical
options:
- value: vertical
text: Vertical
icon: arrow-up-down
- value: horizontal
text: Horizontal
icon: arrow-left-right
help: "Direction du défilement des images dans la galerie animée"
galleryBackgroundColor:
label: Couleur d'arrière-plan de la galerie animée
type: color
alpha: false
galleryBackgroundImage:
label: Image d'arrière-plan
type: files
multiple: false
keywords:
label: Mots clés
type: structure
fields:
label:
label: Label
required: true
type: text
width: 1/2
placeholder: "Ex: Impact, Catégorie..."
text:
label: Texte
required: true
type: text
width: 1/2
# Liens externes
links:
type: fields
fields:
externalLinks:
label: Liens externes
type: structure
fields:
label:
label: Nom du bouton
required: true
type: text
width: 1/2
placeholder: "Ex: App Store, Site web..."
url:
label: URL
required: true
type: url
width: 1/2
seo: seo/page

View file

@ -59,3 +59,5 @@ tabs:
accept: application/pdf
translate: false
help: Fichier téléchargé après soumission du formulaire
seo: seo/page

View file

@ -88,3 +88,5 @@ tabs:
downloadedAt:
type: text
label: Date
seo: seo/page

View file

@ -1,6 +1,7 @@
title: World Game
tabs:
seo: seo/site
mainTab:
label: Principal
columns: