Administration

Liste arborescente, formulaire d'édition, sélecteur de parent, date de création éditable et enregistrement des pages CMS.

Le module ajoute une section Pages à la barre latérale de l'admin. Tout le contenu d'une page s'y édite : titre, slug, blocs, template, parent, visibilité et SEO. Cette page décrit ce que fait l'interface, y compris les quelques comportements qui surprennent.

Écrans

CheminÉcran
/admin/pagesListe des pages.
/admin/pages/newCréation.
/admin/pages/edit/<id>Édition.

L'accès à la section demande pages.view. Créer, modifier, dupliquer et supprimer demandent pages.manage. Voir Configuration.

Liste

La liste charge les 100 pages les plus récemment modifiées, en une seule requête et sans pagination. Le tri s'applique ensuite côté navigateur, sur le titre, la visibilité, la date de modification ou la date de création : il réordonne ce lot, il ne va pas rechercher le reste en base.

Les lignes sont alors réordonnées en arbre : chaque page apparaît sous son parent, décalée d'un cran par niveau de profondeur. Le tri choisi ordonne les racines et les fratries, il ne casse pas le groupement.

Sous le titre de chaque ligne figure le chemin public complet, reconstruit depuis la chaîne des parents. C'est ce chemin qu'ouvre le bouton de lien.

Une page dont le parent n'est pas présent dans la liste remonte au niveau racine de l'affichage. Le cas se produit quand un parent a été supprimé, puisque les enfants voient alors leur parent_id passer à NULL. Il se produit aussi au-delà de 100 pages, quand le parent est resté hors du lot chargé : la page existe, son parent aussi, seul l'affichage est aplati.

Actions de ligne

ActionDisponibilité
Ouvrir la page publiqueSeulement si la page est publique. S'ouvre dans un nouvel onglet.
ModifierToujours.
DupliquerToujours. Crée une copie titrée <titre> (copie), au même parent, dont le slug est ré-unicifié.
SupprimerToujours, après confirmation.

La duplication reprend les blocs, le SEO, le template et la visibilité de l'original. La copie porte sa propre date de création.

Colonne SEO

Quand LRVO_SEO est actif, une colonne affiche le score SEO de chaque page. Le drapeau inactif, la colonne n'existe pas. Voir Configuration.

Formulaire

La zone principale porte le titre, le slug et le contenu. La colonne latérale porte tout ce qui relève du classement : template, visibilité, parent et dates.

Slug et aperçu d'URL

Sous le champ slug, l'URL publique complète est recalculée à chaque frappe, en préfixant le chemin du parent sélectionné. Le slug saisi est normalisé à l'enregistrement, et suffixé s'il entre en collision avec celui d'une page de même parent. Les règles complètes sont dans Modèle de données.

Contenu

Le contenu s'édite au BlockEditor du core. Les blocs image passent par le registre de médias : si @lrvo/module-medias est installé, le sélecteur d'image est disponible. Voir Blocs personnalisés pour ajouter ses propres types de blocs.

Sélecteur de parent

Le sélecteur charge jusqu'à 500 pages et liste toutes celles qui ne sont ni la page courante ni un de ses descendants. Un cycle est donc impossible à créer depuis l'interface. Le serveur refuse quand même l'opération, en vérifiant toute la chaîne d'ancêtres avant d'écrire.

Chaque option porte le titre de la page suivi de son chemin, ce qui lève l'ambiguïté entre deux pages de même titre placées à des endroits différents.

Changer le parent change l'URL publique de la page, et peut changer son slug si le nouveau parent en a déjà un identique.

Dates

« Modifié le » est en lecture seule et reflète le dernier enregistrement.

« Créé le » est modifiable : le texte devient un sélecteur de date au clic. Le champ est borné à l'instant présent, et le serveur refuse à son tour toute date future. Cette date sert à antidater une page importée ou reprise d'un ancien site.

Template

Le sélecteur liste les templates de kind: 'page' enregistrés dans le projet. Voir Templates.

Si la page porte un template qui n'existe plus, le sélecteur se réaligne sur le premier template disponible, et l'enregistrement suivant écrit cette valeur. Le rendu public, lui, ne réécrit rien : il retombe sur default tant que le champ n'a pas été enregistré.

Enregistrement

Une barre de modifications non enregistrées apparaît dès qu'un champ change. Annuler restaure l'état du dernier chargement, enregistrer envoie le formulaire complet.

À la création, l'enregistrement redirige vers l'écran d'édition de la page créée. Le slug définitif y est visible, suffixe compris s'il y en a eu un.

Notes

  • Les deux plafonds de l'interface, 100 pages dans la liste et 500 dans le sélecteur de parent, ne sont pas réglables. Au-delà, passer par l'API, qui accepte limit et offset.
  • Une page privée reste éditable dans l'admin, mais son URL publique répond 404. Le bouton de lien disparaît alors de la ligne et de l'en-tête. Il n'y a pas de prévisualisation des pages privées.
  • Supprimer une page ne supprime pas ses enfants. Ils remontent à la racine, et leur URL publique change en conséquence.

Sur cette page