Kontent.ai & Astro
Kontent.ai est un CMS headless qui vous permet de gérer le contenu de manière structurée et modulaire, en s’appuyant sur les capacités de l’IA.
Intégration avec Astro
Titre de la section Intégration avec AstroDans cette section, vous utiliserez le Kontent.ai TypeScript SDK pour connecter votre projet Kontent.ai à votre application Astro.
Prérequis
Titre de la section PrérequisPour commencer, vous aurez besoin des éléments suivants :
-
Projet Kontent.ai - Si vous n’avez pas encore de compte Kontent.ai, inscrivez-vous gratuitement et créez un nouveau projet.
-
Clés API de livraison - Vous aurez besoin de l’identifiant d’environnement pour le contenu publié et de la clé API de prévisualisation pour récupérer les brouillons (facultatif). Les deux clés sont situées dans l’onglet Environment Settings -> API keys dans Kontent.ai.
Configuration des informations d’identification
Titre de la section Configuration des informations d’identificationPour ajouter vos identifiants Kontent.ai à Astro, créez un fichier .env
à la racine de votre projet avec les variables suivantes :
Ces variables d’environnement peuvent maintenant être utilisées dans votre projet Astro.
Si vous souhaitez obtenir TypeScript IntelliSense pour ces variables d’environnement, vous pouvez créer un nouveau fichier env.d.ts
dans le répertoire src/
et configurer ImportMetaEnv
comme ceci :
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 connecter Astro à votre projet Kontent.ai, installez le Kontent.ai TypeScript SDK :
Ensuite, créez un nouveau fichier appelé kontent.ts
dans le répertoire src/lib/
de votre projet Astro.
En savoir plus sur l’obtention de variables d’environnement dans Astro.
Cette implémentation crée un nouvel objet DeliveryClient
en utilisant les informations d’identification du fichier .env
.
La clé previewApiKey
est optionnelle. Lorsqu’elle est utilisée, vous pouvez configurer chaque requête vers le point de terminaison Delivery API pour qu’il renvoie les dernières versions des éléments de contenu, quel que soit leur état dans le flux de travail. Sinon, seuls les éléments publiés sont renvoyés.
Enfin, le répertoire racine de votre projet Astro devrait maintenant inclure ces nouveaux fichiers :
Répertoiresrc/
- …
Répertoirelib/
- …
- kontent.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
Récupération de données
Titre de la section Récupération de donnéesLe DeliveryClient
est maintenant disponible pour tous les composants. Pour récupérer du contenu, utilisez le DeliveryClient
et le chaînage de méthodes pour définir les éléments désirés. Cet exemple montre une récupération basique d’articles de blog et rend leurs titres dans une liste :
Vous trouverez d’autres options d’interrogation dans la documentation Kontent.ai.
Créer un blog avec Astro et Kontent.ai
Titre de la section Créer un blog avec Astro et Kontent.aiAvec la configuration ci-dessus, vous êtes maintenant en mesure de créer un blog qui utilise Kontent.ai comme source de contenu.
Prérequis
Titre de la section Prérequis-
Projet Kontent.ai - Pour ce tutoriel, il est recommandé d’utiliser un projet vierge. Si vous avez déjà des types de contenu dans votre modèle de contenu, vous pouvez les utiliser, mais vous devrez modifier les extraits de code pour qu’ils correspondent à votre modèle de contenu.
-
Projet Astro configuré pour récupérer le contenu de Kontent.ai - voir ci-dessus pour plus de détails sur la façon de configurer un projet Astro avec Kontent.ai.
Configuration du modèle de contenu
Titre de la section Configuration du modèle de contenuDans Kontent.ai, naviguez vers Modèle de contenu et créez un nouveau type de contenu avec les champs et valeurs suivants :
- Name: Blog Post
- Elements:
- Text field
- Name: Title
- Element Required: yes
- Rich text field
- Name: Teaser
- Element Required: yes
- Allowed in this element: only check Text
- Rich text field
- Name: Content
- Element Required: yes
- Date & time field
- Name: Date
- URL slug field
- Name: URL slug
- Element Required: yes
- Auto-generate from: select “Title”
Cliquez ensuite sur Save Changes.
Création de contenu
Titre de la section Création de contenuNaviguez maintenant dans l’onglet Content & assets et créez un nouvel élément de contenu de type Blog Post. Remplissez les champs en utilisant les valeurs suivantes :
- Content item name: Astro
- Title: Astro est incroyable
- Teaser: Astro est un framework tout-en-un pour construire des sites web rapides plus rapidement.
- Content: Vous pouvez utiliser JavaScript pour mettre en œuvre la fonctionnalité du site web, mais aucun paquet client n’est nécessaire.
- Date & time: Sélectionnez “today”
- URL slug: astro-is-amazing
Lorsque vous avez terminé, publiez l’article de blog en utilisant le bouton Publier en haut de la page.
Remarque : vous pouvez créer autant d’articles de blog que vous le souhaitez avant de passer à l’étape suivante.
Générer un modèle de contenu en TypeScript
Titre de la section Générer un modèle de contenu en TypeScriptEnsuite, vous allez générer des types TypeScript à partir de votre modèle de contenu.
Cette étape est facultative, mais elle offre une bien meilleure expérience au développeur et permet de découvrir des problèmes potentiels au moment de la construction plutôt qu’au moment de l’exécution.
Tout d’abord, installez Kontent.ai JS model generator, ts-node, et dotenv :
Ensuite, ajoutez le script suivant au fichier package.json :
Comme les types nécessitent des informations structurelles sur votre projet qui ne sont pas disponibles dans l’API publique, vous devez également ajouter une clé API de gestion de contenu au fichier .env
. Vous pouvez générer la clé sous Environment settings -> API keys -> Management API.
Enfin, ajoutez le script generate-models.ts
qui configure le générateur de modèles pour générer les modèles :
Maintenant, exécutez-le :
Affichage d’une liste d’articles de blog
Titre de la section Affichage d’une liste d’articles de blogVous êtes maintenant prêt à récupérer du contenu. Allez sur la page Astro où vous voulez afficher une liste de tous les articles de blog, par exemple, la page d’accueil index.astro
dans src/pages
.
Récupérez tous les articles de blog dans le frontmatter de la page Astro :
Si vous avez ignoré la génération du modèle, vous pouvez également utiliser un objet non typé et une chaîne littérale pour définir le type :
L’appel fetch renvoie un objet response
qui contient une liste de tous les articles de blog dans data.items
. Dans la section HTML de la page Astro, vous pouvez utiliser la fonction map()
pour lister les articles du blog :
Générer des articles de blog individuels
Titre de la section Générer des articles de blog individuelsLa dernière étape du tutoriel consiste à générer des pages d’articles de blog détaillées.
Génération de sites statiques
Titre de la section Génération de sites statiquesDans cette section, vous allez utiliser le Mode Static (SSG) avec Astro.
Tout d’abord, créez un fichier [slug].astro
dans /src/pages/blog/
qui doit exporter une fonction getStaticPaths
qui collecte toutes les données du CMS :
Jusqu’à présent, la fonction récupère tous les articles de blog de Kontent.ai. L’extrait de code est exactement le même que celui que vous avez utilisé sur la page d’accueil.
Ensuite, la fonction doit exporter les chemins et les données pour chaque article de blog. Vous avez nommé le fichier [slug].astro
, donc le paramètre qui représente l’URL slug est appelé slug
:
La dernière partie consiste à fournir le modèle HTML et à afficher chaque article de blog :
Naviguez vers votre aperçu Astro (http://localhost:4321/blog/astro-is-amazing/ par défaut) pour voir le rendu de l’article de blog.
Rendu côté serveur
Titre de la section Rendu côté serveurSi vous avez opté pour le mode SSR, vous utiliserez des routes dynamiques pour récupérer les données de la page depuis Kontent.ai.
Créez un nouveau fichier [slug].astro
dans /src/pages/blog/
et ajoutez le code suivant. La récupération des données est très similaire aux cas d’utilisation précédents mais ajoute un equalsFilter
qui nous permet de trouver le bon article de blog basé sur l’URL utilisée :
Si vous n’utilisez pas de types générés, vous pouvez utiliser des chaînes de caractères pour définir le type d’élément de contenu et le nom de code de l’élément filtré :
Enfin, ajoutez le code HTML pour rendre l’article de blog. Cette partie est la même que pour la génération statique :
Publier votre site
Titre de la section Publier votre sitePour déployer votre site, visitez les guides de déploiement et suivez les instructions de votre hébergeur préféré.
Reconstruction sur les changements de Kontent.ai
Titre de la section Reconstruction sur les changements de Kontent.aiSi 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é webhook pour déclencher une nouvelle construction à partir des événements Kontent.ai.
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 à Kontent.ai
Titre de la section Ajouter un webhook à Kontent.aiDans l’application Kontent.ai app, allez dans Environment settings -> Webhooks. Cliquez sur Create new webhook et donnez un nom à votre nouveau webhook. Collez l’URL que vous avez copiée depuis Netlify ou Vercel et sélectionnez les événements qui doivent déclencher le webhook. Par défaut, pour reconstruire votre site lorsque le contenu publié change, vous n’avez besoin que des événements Publish et Unpublish sous Delivery API triggers. Lorsque vous avez terminé, cliquez sur Enregistrer.
Maintenant, chaque fois que vous publiez un nouvel article de blog dans Kontent.ai, une nouvelle construction sera déclenchée et votre blog sera mis à jour.