Éditer des pages
Pages dynamiques
Depuis la 2.5, l’URL d’une page peut contenir des paramètres : une seule page affiche alors un enregistrement par adresse, comme une page d’article de blog en /blog/:slug.
Qu’est-ce qu’une page dynamique ?
Une page dont l’URL contient un segment qui commence par : est une page dynamique. La page /blog/:slug répond à /blog/mon-premier-article, /blog/nouveautes-automne, etc. : les blocs sont les mêmes, seul l’enregistrement affiché change.
Elle fonctionne comme une page CMS de votre thème avec url = "/blog/:slug", mais la page se construit avec des blocs dans l’éditeur.
Syntaxe de l’URL
L’URL suit la syntaxe d’October CMS :
| URL | Signification |
|---|---|
/blog/:slug | Paramètre obligatoire. |
/blog/:page? | Paramètre facultatif : /blog est aussi servie. |
/blog/:page?1 | Paramètre facultatif avec une valeur par défaut (1). |
/produit/:id|^[0-9]+$ | Paramètre vérifié par une expression régulière : /produit/42 est servie, /produit/abc ne l’est pas. |
/docs/:path* | Paramètre joker : il prend la suite de l’URL, barres obliques comprises (/docs/guide/installation). |
L’URL est vérifiée à l’enregistrement. Deux règles s’appliquent :
- la page d’accueil (
/) ne peut pas être dynamique ; - deux pages ne peuvent pas utiliser le même motif avec des noms de paramètres différents (
/blog/:sluget/blog/:name).
Quelle page est servie ?
Les pages dynamiques passent en dernier :
- les pages CMS du thème ;
- les pages PageTree statiques (URL sans paramètre) ;
- les pages PageTree dynamiques. Entre elles, l’URL la plus précise l’emporte.
/blog/archives garde donc sa propre page même si /blog/:slug existe. Contrairement à une page PageTree statique, une page dynamique ne prend jamais l’URL d’une page CMS du thème.
La règle de visibilité est celle de toutes les pages (Active, Publiée, date de publication) : voir Publication et URL.
Afficher l’enregistrement de l’URL
Les paramètres arrivent aux blocs de trois façons :
- Blocs personnalisés : une source de données peut être filtrée par un paramètre d’URL et renvoyer un seul enregistrement. C’est la façon habituelle de construire une page dynamique. Voir Filtrer par paramètre d’URL.
- Templates de blocs : ils lisent les paramètres avec
this.param, par exemple{{ this.param.slug }}. - Composants CMS placés comme blocs : leurs propriétés acceptent
{{ :slug }}, comme sur une page CMS. Le composant d’article de RainLab.Blog, par exemple, prend{{ :slug }}comme slug. Voir Composants CMS comme blocs.
Quand aucun enregistrement ne correspond
Une source de données avec l’option Afficher la page 404 si aucun résultat remplace la page par la page 404 du thème, avec le statut 404, quand elle ne trouve rien : /blog/inconnu est une vraie « page introuvable ».
- L’option ne vaut que pour les pages dynamiques : une page statique ne devient jamais une 404.
- En mode édition sur le site, la page reste affichée pour pouvoir être modifiée.
- Un paramètre facultatif absent de l’URL ne filtre pas : une liste affiche tous les enregistrements, une source à un seul enregistrement est vide.
Prévisualiser avec des valeurs d’exemple
Dans l’éditeur, l’aperçu n’a pas d’URL. Pour voir la page avec un vrai enregistrement, choisissez les valeurs de ses paramètres :
- Cliquez sur Aperçu avec… dans la barre d’outils de l’aperçu.
- Pour chaque paramètre, choisissez une valeur parmi les enregistrements des sources filtrées, ou saisissez-la. Les valeurs sont regroupées par source, avec les blocs qui les lisent.
- L’aperçu est recalculé avec ces valeurs ; le bouton les affiche ensuite (Aperçu avec : mon-premier-article).
Les valeurs sont enregistrées avec la page et partagées par tous ses blocs. Ouvrir la page ouvre le site à l’URL construite avec elles. Elles ne font pas partie de l’historique : les changer n’enregistre aucune version.
Le panneau signale un paramètre filtré sur plusieurs modèles (une URL ne peut correspondre qu’à l’un d’eux), et un bloc qui filtre sur un paramètre absent de l’URL de la page : ce filtre est alors ignoré.
SEO d’une page dynamique
Le titre et la description d’une page dynamique peuvent suivre l’enregistrement affiché, avec des jetons comme {{ post.title }} dans les champs SEO, ou avec une source de données utilisée pour le SEO de la page. Voir SEO.
Exemple : un blog
Les articles sont rangés dans une section Tailor Blog\Post.
- Créez un bloc personnalisé Article avec une source de données
post(TailorBlog\Post), filtrée sur la colonneslugpar le paramètre d’URLslug, avec Un seul enregistrement et Afficher la page 404 si aucun résultat cochés. Son template :<article> <h1>{{ post.title }}</h1> {{ post.content|raw }} </article> - Créez une page d’URL
/blog/:sluget ajoutez-y le bloc Article. - Cliquez sur Aperçu avec… et choisissez un article pour vérifier la page.
- Dans les réglages SEO, mettez le titre méta à
{{ post.title }} | Mon blog.
/blog/mon-premier-article affiche cet article avec son titre dans l’onglet du navigateur, /blog/inconnu affiche la page 404.