C'est quoi ghost ?
Ghost est un headless CMS utilisé sur RES'in pour la gestion du contenu éditorial.
Fonctionnement
Ghost fournit une interface admin ainsi qu'un site sous forme d'un blog. L'avantage majeur de cette technologie est qu'elle expose des API permettant la récupération des actualités, auteurs, tag ... Rendant son intégration plus aisée.
Pour le cas d'usage de RES'in, seule la partie administrateur a été utilisée, un front spécifique a été utilisé pour l'affichage des articles sur le site.
Les articles
Les métadonnées des articles rédigés sur Ghost doivent impérativement contenir les données suivantes :
- Un tag
- Un titre
- Un auteur. Le champ expert a été utilisé pour renseigner l'auteur de manière provisoire.
Il peut de plus contenir (optionnel):
- Une image
- Une date de publication différée
Le corps de l'article lui peut contenir toute sorte de contenu: texte, image, lien etc...
Sous Ghost il est possible de planifier la sortie d'un article via l'onglet scheduled
.
Les tags
Les tags utilisés sur le site sont directement gérés depuis l'interface de Ghost. Trois types de tags ont été mis en place :
- Main tags: les tags principaux (Appels a projet, Info, ...). Ce tag doit être choisit en premier dans la liste des tags sur un article.
- Tags de commune: tag possédant en description 'commune'. Ils seront affichés sur le site dans le select des communes sous forme de filtre.
- Tags de public: tag possédant en description 'public'. Ils seront également affichés sur le site dans le select des communes sous forme de filtre.
Si aucun tag n'est présent pour les catégories commune ou type de public, ils sont masqués aux utilisateurs.
Un administrateur peut changer à sa guise la liste de tag, soit en en ajoutant de nouveaux, en en modifiant d'autres ou en en supprimant.
Cas particuliers
Les appels à projets sont affichés dans un panneau latéral du site (voir capture).
L'article 'À la une' fait également l'objet d'un tag. Un seul article peut être à la une, si plusieurs sont tagués le plus récent sera affiché. Cet article est affiché en haut de la liste et possède un format plus important.
Liens
Architecture
Le moteur de blog Ghost a été conteneurisé avec docker, il fonctionne avec une base de donnée mysql elle aussi conteneurisée. Il y a 2 façons d'utiliser Ghost pour Rés'in :
- Les administrateurs / créateurs de contenu éditorial utilise l'interface d'admin Ghost pour créer facilement des articles (mise en page, gestion des liens, vidéos etc...)
- Le backend NestJs est responsable de la récupération des articles et des tags pour l'affichage côté utilisateur dans l'application Rés'in.
Installation en local
En local il faut se rendre au lien suivant http://localhost:2368/ghost afin d'avoir accès au panel d'administration du blog. Une partie onboarding sera affichée lors du premier lancement.
Une fois l'initialisation réalisée, deux étapes sont encore nécessaires pour configurer correctement l'environnement local.
-
Création du token API. Pour cela il suffit de se rendre ici et de créer une intégration appelée resin-front. Il faut ensuite relever les token Content API key et Admin API key afin de les reporter dans le fichier
.env
de configuration.
- Initialisation de la BDD. Afin d'avoir des données, un script a été créé pour populer la base mysql de ghost. Il faut lancer les commandes suivantes
cd /scripts
node init-ghost.js drop # Supprime les données de test par default de Ghost
node init-ghost.js up # Ajoute les données de test RES'in
Les images des posts de test (qui sont définies dans le champ "feature_image" et stockées dans le dossier /scripts/data
), sont bien copiées dans le répertoire "content" de ghost quand on lance le script.