Installation

Installer @lrvo/module-posts, déclarer un premier type, créer les tables et brancher le rendu public.

Cette page couvre l'installation de @lrvo/module-posts dans un projet déjà structuré par @lrvo/start. Le module n'est jamais déclaré à la main : il est découvert au boot par scan des dépendances, comme décrit dans Cycle de vie d'un module.

Prérequis

  • Un projet généré par npx @lrvo/start, avec @lrvo/core installé.
  • L'accès au registre privé configuré. Voir Installation.

Installer

npm i @lrvo/module-posts

Déclarer un premier type

Contrairement aux autres modules, activer @lrvo/module-posts ne suffit pas : sans type déclaré, il ne crée aucune section d'admin et ne rend rien.

#------ MODULE - POSTS ------#
LRVO_MODULE_POSTS=true
LRVO_MODULE_POSTS_TYPES=blogue:Blogue:Moon02Icon
LRVO_MODULE_POSTS_TYPE_BLOGUE=title:title|slug:slug|date:date:now:sidebar|content:editor:Contenu

Trois lignes, dans cet ordre : le drapeau d'activation, la liste des types, puis les champs de chaque type. Le nom de la variable de champs est dérivé de la clé du type en majuscules.

La syntaxe complète est dans Types et champs.

Créer les tables

npx lrvo-modules sync    # déclenché automatiquement au postinstall
npx lrvo-db init         # crée les tables du module

lrvo-db init est sensible à la configuration pour ce module. Il ne crée les tables de taxonomies que si au moins un type déclare un champ taxonomy, et la table des relations que si au moins un type déclare un champ relation.

Conséquence directe : après avoir ajouté une taxonomie ou une relation à un type existant, il faut relancer npx lrvo-db init. La commande est idempotente, elle ne touche pas aux données en place.

Voir Modèle de données pour le détail des tables et des migrations.

Brancher le rendu public

Le start template officiel monte un seul catch-all qui interroge le registre de contenu public :

app/(public)/[...slug]/page.js

Ce fichier itère les résolveurs de core/public-content. Le module y enregistre le sien au boot, à la priorité 10. Il n'y a donc rien à importer : l'installation suffit.

Le sous-chemin @lrvo/module-posts/public exporte bien une vue par défaut, PostPublicView({ postType, slug }), mais elle sert de repli de débogage pour un projet qui voudrait court-circuiter le registre. Le start template ne l'utilise pas : une URL de post porte toujours son type en premier segment, elle ne se prête donc pas à un fichier de route fixe. Voir API.

Fournir un template

Le module enregistre lui-même un template default par type, qui rend le titre puis les blocs bruts via BlockListRenderer. C'est suffisant pour vérifier l'installation, pas pour un site.

Pour reprendre la main sur la mise en page, écrire un template dans components/lrvo/templates/ et le déclarer sur le type. Voir Templates.

Vérifier

  1. La connexion à la base répond :
    npx lrvo-db test
  2. Une section Blogue apparaît dans la barre latérale de l'admin, avec un item Posts.
  3. Créer un post depuis /admin/posts/blogue/list, le laisser en visibilité publique, puis l'ouvrir à /blogue/<slug>. Voir Administration.

Les permissions du module sont enregistrées et attribuées au rôle admin pendant lrvo-db init. Un module ajouté après coup n'a donc besoin que d'un npx lrvo-db init pour que posts.view et posts.manage apparaissent dans /admin/roles.

Médias

Si un type déclare un champ image, thumbnail ou gallery sans que @lrvo/module-medias soit installé et activé, le module journalise un avertissement au boot listant les champs concernés. Le module démarre quand même, mais le sélecteur d'image reste indisponible dans l'éditeur.

npm i @lrvo/module-medias

Puis, dans .env :

LRVO_MODULE_MEDIAS=true

Voir Module Médias.

Mettre à jour

npx lrvo-update

Le module déclare la version minimale de @lrvo/core dont il a besoin. Un npm i @lrvo/module-posts@latest sur un projet dont le core est trop ancien produit un ERESOLVE au message peu parlant : lrvo-update résout au contraire le core et les modules ensemble, et laisse en place tout module qu'il ne peut pas monter.

Les notes de version sont livrées avec le package, dans node_modules/@lrvo/module-posts/CHANGELOG.md.

Notes

  • Le module dépend de @lrvo/core en peerDependency. Il n'embarque pas sa propre copie du core.
  • Désinstaller le module ne supprime pas les tables. dropTables est exporté depuis @lrvo/module-posts pour le faire explicitement.
  • Retirer un type de LRVO_MODULE_POSTS_TYPES fait disparaître sa section d'admin et son rendu public, mais laisse ses lignes en base. Les remettre en ligne ne demande que de redéclarer le type avec la même clé.

Sur cette page