Ghost & Astro
Ghost est un système de gestion de contenu open-source, headless, construit sur Node.js.
Intégration avec Astro
Titre de la section Intégration avec AstroDans cette section, nous utiliserons l’API Ghost content API pour intégrer vos données dans votre projet Astro.
Prérequis
Titre de la section PrérequisPour commencer, vous devez disposer des éléments suivants :
-
Un projet Astro - Si vous n’avez pas encore de projet Astro, notre Guide d’installation vous permettra d’être opérationnel en un rien de temps.
-
Un site Ghost - Nous supposons que vous avez un site configuré avec Ghost. Si ce n’est pas le cas, vous pouvez en configurer un sur un environnement local.
-
Clé API de contenu - Vous pouvez effectuer une intégration dans les
Settings > Integrations
de votre site. A partir de là, vous pouvez trouver votreContent API key
Configuration des informations d’identification
Titre de la section Configuration des informations d’identificationPour ajouter les identifiants de votre site à Astro, créez un fichier .env
à la racine de votre projet avec la variable suivante :
Maintenant, vous devriez être capable d’utiliser cette variable d’environnement dans votre projet.
Si vous voulez avoir IntelliSense pour votre variable d’environnement, vous pouvez créer un fichier env.d.ts
dans le répertoire src/
et configurer ImportMetaEnv
comme ceci :
En savoir plus sur l’utilisation des variables d’environnement at les fichiers .env
dans Astro.
Votre répertoire racine doit maintenant contenir ces nouveaux fichiers :
Répertoiresrc/
- env.d.ts
- .env
- astro.config.mjs
- package.json
Installation des dépendances
Titre de la section Installation des dépendancesPour se connecter à Ghost, installez l’API de contenu officielle @tryghost/content-api
en utilisant la commande ci-dessous pour votre gestionnaire de paquets préféré et, éventuellement, un paquet utile contenant des définitions de types si vous utilisez TypeScript :
Créer un blog avec Astro et Ghost
Titre de la section Créer un blog avec Astro et GhostAvec la configuration ci-dessus, vous êtes maintenant en mesure de créer un blog qui utilise Ghost comme CMS.
Prérequis
Titre de la section Prérequis- A blog Ghost
- Un projet Astro intégré à l’API de contenu Ghost - Voir intégration avec Astro pour plus de détails sur la façon de configurer un projet Astro avec Ghost.
Cet exemple crée une page d’index qui répertorie les articles avec des liens vers des pages individuelles générées dynamiquement.
Récupération de données
Titre de la section Récupération de donnéesVous pouvez récupérer les données de votre site avec l’API de contenu de Ghost.
Tout d’abord, créez un fichier ghost.ts
dans un répertoire lib
.
Répertoiresrc/
Répertoirelib/
- ghost.ts
Répertoirepages/
- index.astro
- astro.config.mjs
- package.json
Initialiser une instance API avec l’API Ghost en utilisant la clé API de la page Intégrations du tableau de bord Ghost.
Afficher une liste d’articles
Titre de la section Afficher une liste d’articlesLa page src/pages/index.astro
affichera une liste d’articles, chacun avec une description et un lien vers sa propre page.
Répertoiresrc/
- …
Répertoirelib/
- ghost.ts
Répertoirepages/
- index.astro
- astro.config.mjs
- package.json
Importez ghostClient()
dans le frontmatter Astro pour utiliser la méthode posts.browse()
afin d’accéder aux articles du blog depuis Ghost. Définissez limit : all
pour récupérer tous les articles.
La recherche via l’API de contenu renvoie un tableau d’objets contenant les propriétés de chaque article telles que :
title
- le titre de l’articlehtml
- le rendu HTML du contenu de l’articlefeature_image
- l’URL source de l’image vedette de l’articleslug
- le nom de l’article.
Utilisez le tableau posts
renvoyé par la recherche pour afficher une liste d’articles de blog sur la page.
Génération des pages
Titre de la section Génération des pagesLa page src/pages/post/[slug].astro
génère dynamiquement une page pour chaque post.
Répertoiresrc/
- …
Répertoirelib/
- ghost.ts
Répertoirepages/
- index.astro
Répertoirepost/
- [slug].astro
- astro.config.mjs
- package.json
Importez ghostClient()
pour accéder aux articles de blogs en utilisant posts.browse()
et renvoyer un article en tant que props à chacune de vos routes dynamiques.
Créez le modèle pour chaque page en utilisant les propriétés de chaque objet post
.
<Fragment />
est un composant Astro intégré qui vous permet d’éviter un élément wrapper inutile. Cela peut être particulièrement utile lorsque vous récupérez du HTML à partir d’un CMS (par exemple Ghost ou WordPress).
Publier votre site
Titre de la section Publier votre sitePour déployer votre site, consultez notre guide de déploiement et suivez les instructions de votre hébergeur préféré.
Ressources communautaires
Titre de la section Ressources communautairesastro-starter-ghost
sur GitHubastro-ghostcms
sur GitHub- Astro + Ghost + Tailwind CSS par Andre Carrera
- Tutoriel Ghost CMS & Astro par Adam Matthiesen