Strapi & Astro
Strapi est un CMS Headless open-source et personnalisable.
Intégration avec Astro
Titre de la section Intégration avec AstroCe guide va construire une fonction wrapper pour connecter Strapi avec 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 serveur CMS Strapi - Vous pouvez configurer un serveur Strapi dans un environnement local.
Ajouter l’URL de Strapi dans .env
Titre de la section Ajouter l’URL de Strapi dans .envPour ajouter votre URL Strapi à Astro, créez un fichier .env
à la racine de votre projet (s’il n’existe pas déjà) et ajoutez la variable suivante :
Vous pouvez maintenant utiliser cette variable d’environnement dans votre projet Astro.
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 :
Votre répertoire racine devrait maintenant contenir le(s) nouveau(x) fichier(s) :
Répertoiresrc/
- …
- env.d.ts
- .env
- astro.config.mjs
- package.json
Création de l’API wrapper
Titre de la section Création de l’API wrapperCréez un nouveau fichier src/lib/strapi.ts
et ajoutez la fonction wrapper suivante pour interagir avec l’API Strapi :
Cette fonction nécessite un objet ayant les propriétés suivantes :
endpoint
- Le point d’accès que vous récupérez.query
- Les paramètres de requête à ajouter à la fin de l’URLwrappedByKey
- La clédata
dans l’objet qui enveloppe votreResponse
.wrappedByList
- Un paramètre pour “déballer” la liste retournée par Strapi, et ne retourner que le premier élément.
Facultatif : Création de l’interface Article
Titre de la section Facultatif : Création de l’interface ArticleSi vous utilisez TypeScript, créez l’interface Article suivante pour correspondre aux types de contenu Strapi dans src/interfaces/article.ts
:
Vous pouvez modifier cette interface, ou en créer plusieurs, pour qu’elle corresponde à vos propres données de projet.
Répertoiresrc/
- …
Répertoireinterfaces/
- …
- article.ts
Répertoirelib/
- …
- strapi.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
Affichage d’une liste d’articles
Titre de la section Affichage d’une liste d’articles-
Mettez à jour votre page d’accueil
src/pages/index.astro
pour afficher une liste d’articles de blog, chacun avec une description et un lien vers sa propre page. -
Importez la fonction wrapper et l’interface. Ajoutez l’appel API suivant pour récupérer vos articles et renvoyer une liste :
L’appel API demande des données à
http://localhost:1337/api/articles
et renvoiearticles
: un tableau d’objets json représentant vos données : -
En utilisant les données du tableau
articles
renvoyé par l’API, affichez les articles de votre blog Strapi dans une liste. Ces articles seront liés à leur propre page individuelle, que vous allez créer à l’étape suivante.
Générer des pages d’articles
Titre de la section Générer des pages d’articlesCréez le fichier src/pages/blog/[slug].astro
pour générer dynamiquement une page pour chaque article.
Répertoiresrc/
- …
Répertoireinterfaces/
- …
- article.ts
Répertoirelib/
- …
- strapi.ts
Répertoirepages/
- …
- index.astro
Répertoireblog/
- …
- [slug].astro
- env.d.ts
- .env
- astro.config.mjs
- package.json
Génération du site statique
Titre de la section Génération du site statiqueDans le mode statique par défaut d’Astro (SSG), utilisez getStaticPaths()
pour récupérer votre liste d’articles à partir de Strapi.
Créer le modèle pour chaque page en utilisant les propriétés de chaque objet post.
Veillez à choisir le bon rendu pour votre contenu. Pour le markdown, consultez notre guide du markdown. Si vous effectuez un rendu html, reportez-vous à ce guide pour plus de sécurité.
Rendu côté serveur
Titre de la section Rendu côté serveurSi vous avez opté pour le mode SSR (EN) avec output : server
ou output : hybrid
, générez vos routes dynamiques en utilisant le code suivant :
Créez le fichier src/pages/blog/[slug].astro
:
Ce fichier va récupérer et rendre les données de la page de Strapi qui correspondent au paramètre dynamique slug
.
Puisque vous utilisez une redirection vers /404
, créez une page 404 dans src/pages
:
Si l’article n’est pas trouvé, l’utilisateur sera redirigé vers cette page 404 et sera accueilli par un adorable chat.
Publier votre site
Titre de la section Publier votre sitePour déployer votre site, consultez nos guides de déploiement et suivez les instructions de votre hébergeur préféré.
Reconstruction en cas de modifications
Titre de la section Reconstruction en cas de modificationsSi votre projet utilise le mode statique par défaut d’Astro, vous devrez configurer un webhook pour déclencher une nouvelle construction lorsque votre contenu change. Si vous utilisez Netlify ou Vercel comme hébergeur, vous pouvez utiliser sa fonctionnalité de webhook pour déclencher une nouvelle compilation à partir de Strapi.
Netlify
Titre de la section NetlifyPour configurer un webhook dans Netlify :
-
Allez dans le tableau de bord de votre site et cliquez sur Build & deploy.
-
Sous l’onglet Continuous Deployment, trouvez la section Build hooks et cliquez sur Add build hook.
-
Donnez un nom à votre webhook et sélectionnez la branche sur laquelle vous souhaitez déclencher la construction. Cliquez sur Save et copiez l’URL générée.
Pour configurer un webhook dans Vercel :
-
Allez sur le tableau de bord de votre projet et cliquez sur Settings.
-
Sous l’onglet Git, trouvez la section Deploy Hooks.
-
Donnez un nom à votre webhook et indiquez la branche sur laquelle vous souhaitez déclencher la construction. Cliquez sur Add et copiez l’URL générée.
Ajouter un webhook à Strapi
Titre de la section Ajouter un webhook à StrapiSuivez le guide Strapi webhooks pour créer un webhook dans votre panneau d’administration Strapi.
Ressources officielles
Titre de la section Ressources officielles- Strapi Blog Guide For React par Strapi