Ajouter un flux RSS
Astro prend en charge la génération rapide et automatique de flux RSS pour les blogs et autres sites web de contenu. Les flux RSS permettent aux utilisateurs de s’abonner facilement à votre contenu.
Mise en place de @astrojs/rss
Titre de la section Mise en place de @astrojs/rssLe paquet @astrojs/rss
fournit des aides pour générer des flux RSS en utilisant des points de terminaison d’API. . Cela débloque à la fois les constructions statiques et la génération à la demande lors de l’utilisation d’un adaptateur SSR (EN).
-
Installez
@astrojs/rss
en utilisant votre gestionnaire de paquets préféré :Fenêtre du terminal npm install @astrojs/rssFenêtre du terminal pnpm add @astrojs/rssFenêtre du terminal yarn add @astrojs/rss -
Créez un fichier dans
src/pages/
avec un nom de votre choix et l’extension.xml.js
qui sera utilisé comme URL de sortie pour votre flux. Certains noms d’URL de flux RSS courants sontfeed.xml
ourss.xml
.Le fichier d’exemple ci-dessous
src/pages/rss.xml.js
créera un flux RSS à l’adressesite/rss.xml
. -
Importez l’aide
rss()
du paquetage@astrojs/rss
dans votre fichier.xml.js
et exportez une fonction qui la retourne en utilisant les paramètres suivants :src/pages/rss.xml.js import rss from '@astrojs/rss';export function GET(context) {return rss({// `<title>` champ dans le fichier xml de sortietitle: 'Blog de Buzz',// `<description>` champ dans le fichier xml de sortiedescription: 'Le guide des étoiles d'un humble astronaute',// Insérez le "site" de votre projet dans le contexte du point de terminaison.// https://docs.astro.build/fr/reference/api-reference/#contextsitesite: context.site,// Tableau des `<item>`s dans la sortie xml// Voir la section "Génération d'éléments" pour des exemples utilisant des collections de contenu et des importations globales.items: [],// (optional) injecter du xml personnalisécustomData: `<language>fr-FR</language>`,});}
Générer des items
Titre de la section Générer des itemsLe champ items
accepte une liste d’objets de flux RSS, chacun avec un link
, un title
et un pubDate
obligatoires. Trois valeurs optionnelles peuvent également être incluses : description
(un court extrait), content
(le contenu complet de votre article), et un champ customData
pour inclure des données supplémentaires, telles que d’autres propriétés de vos articles de blog.
Vous pouvez générer ce tableau à partir d’un schéma de collection de contenu ou en utilisant glob imports pour les articles de blog situés dans src/pages/
.
Utilisation des collections de contenu
Titre de la section Utilisation des collections de contenuPour créer un flux RSS de pages gérées dans les collections de contenu (EN), utilisez la fonction getCollection()
pour récupérer la liste de vos éléments.
import rss from '@astrojs/rss';import { getCollection } from 'astro:content';
export async function GET(context) { const blog = await getCollection('blog'); return rss({ title: 'Blog de Buzz', description: 'Le guide des étoiles d'un humble astronaute', site: context.site, items: blog.map((post) => ({ title: post.data.title, pubDate: post.data.pubDate, description: post.data.description, customData: post.data.customData, // Calculer le lien RSS à partir de l'article `slug` // Cet exemple suppose que tous les articles sont rendus sous forme de routes `/blog/[slug]`. link: `/blog/${post.slug}/`, })), });}
Facultatif : remplacez votre schéma de collection de blogs existant pour appliquer les propriétés RSS attendues.
Pour vous assurer que chaque entrée de blog produise un élément de flux RSS valide, vous pouvez éventuellement importer et appliquer rssSchema
au lieu de définir chaque propriété individuelle de votre schéma.
import { defineCollection } from 'astro:content';import { rssSchema } from '@astrojs/rss';
const blog = defineCollection({ schema: rssSchema,});
export const collections = { blog };
Utilisation des importations globales
Titre de la section Utilisation des importations globales@astrojs/rss@2.1.0
Pour créer un flux RSS à partir des documents contenus dans src/pages/
, utilisez l’aide pagesGlobToRssItems()
. Elle accepte un résultat import.meta.glob
et produit un tableau d’éléments de flux RSS valides (voir plus d’informations sur l’écriture de motifs glob pour spécifier les pages à inclure).
import rss, { pagesGlobToRssItems } from '@astrojs/rss';
export async function GET(context) { return rss({ title: 'Blog de Buzz', description: 'Le guide des étoiles d'un humble astronaute', site: context.site, items: await pagesGlobToRssItems( import.meta.glob('./blog/*.{md,mdx}'), ), });}
Inclure le contenu intégral de l’article
Titre de la section Inclure le contenu intégral de l’articleastro@1.6.14
La clé content
contient le contenu complet de l’article en HTML. Cela vous permet de mettre l’intégralité du contenu de votre article à la disposition des lecteurs de flux RSS.
Lorsque vous utilisez des collections de contenu, rendez le body
du message en utilisant un analyseur Markdown standard comme markdown-it
et désinfectez le résultat :
import rss from '@astrojs/rss';import { getCollection } from 'astro:content';import sanitizeHtml from 'sanitize-html';import MarkdownIt from 'markdown-it';const parser = new MarkdownIt();
export async function GET(context) { const blog = await getCollection('blog'); return rss({ title: 'Blog de Buzz', description: 'Le guide des étoiles d'un humble astronaute', site: context.site, items: blog.map((post) => ({ link: `/blog/${post.slug}/`, // Note : ceci ne traitera pas les composants ou les expressions JSX dans les fichiers MDX. content: sanitizeHtml(parser.render(post.body)), ...post.data, })), });}
Lorsque vous utilisez des importations globales avec Markdown, vous pouvez utiliser l’aide compiledContent()
pour récupérer le HTML rendu pour l’assainissement. Note : cette fonctionnalité n’est pas supportée pour les fichiers MDX.
import rss from '@astrojs/rss';import sanitizeHtml from 'sanitize-html';
export function GET(context) { const postImportResult = import.meta.glob('../posts/**/*.md', { eager: true }); const posts = Object.values(postImportResult); return rss({ title: 'Blog de Buzz', description: 'Le guide des étoiles d'un humble astronaute', site: context.site, items: posts.map((post) => ({ link: post.url, content: sanitizeHtml(post.compiledContent()), ...post.frontmatter, })), });}
Ajouter une feuille de style
Titre de la section Ajouter une feuille de styleStylez votre flux RSS pour une expérience utilisateur plus agréable lorsque vous visualisez le fichier dans votre navigateur.
Utilisez l’option stylesheet
de la fonction rss
pour spécifier un chemin absolu vers votre feuille de style.
rss({ // ex. utilisez votre feuille de style depuis "public/rss/styles.xsl" stylesheet: '/rss/styles.xsl',});
Prochaines étapes
Titre de la section Prochaines étapesAprès avoir consulté votre flux dans le navigateur à l’adresse votre-domaine.com/rss.xml
et confirmé que vous pouvez voir les données de chacun de vos articles, vous pouvez maintenant promouvoir votre flux sur votre site web. L’ajout de l’icône RSS standard sur votre site permet à vos lecteurs de savoir qu’ils peuvent s’abonner à vos articles dans leur propre lecteur de flux.
Resources
Titre de la section ResourcesPlus de méthodes
-
Partage d'État
Apprenez à partager l'état entre les composants du framework avec les Nano Stores.
-
Ajouter un flux RSS
Ajoutez un flux RSS à votre site Astro pour permettre aux utilisateurs de s'abonner à votre contenu.
-
Installation d'un plugin Vite ou Rollup
Découvrez comment vous pouvez importer des données YAML en ajoutant un plugin Rollup à votre projet.
-
Créer un composant image personnalisé
Apprendre à construire un composant image personnalisé qui supporte les requêtes média en utilisant la fonction getImage.
-
Construire des formulaires avec des routes API
Apprendre à utiliser JavaScript pour envoyer les soumissions de formulaires à une route API.
-
Créer des formulaires HTML dans Astro Pages
Apprenez à construire des formulaires HTML et à gérer les soumissions dans votre frontmatter.
-
Use Bun with Astro
Learn how to use Bun with your Astro site.
-
Call endpoints from the server
Learn how to call endpoints from the server in Astro.
-
Vérifier un Captcha
Apprenez à créer une route API et à la récupérer auprès du client.
-
Construisez votre site Astro avec Docker
Apprendre à construire votre site Astro en utilisant Docker.
-
Dynamically Import Images
Learn how to dynamically import images using Vite's import.meta.glob function
-
Ajouter des icônes aux liens externes
Apprendre à installer un plugin rehype pour ajouter des icônes aux liens externes dans vos fichiers Markdown.
-
Add i18n features
Use dynamic routing and content collections to add internationalization support to your Astro site.
-
Ajouter l'heure de la dernière modification
Construire un plugin Remark pour ajouter l'heure de la dernière modification à votre Markdown et MDX.
-
Ajout du temps de lecture
Construire un plugin remark pour ajouter le temps de lecture à vos fichiers Markdown ou MDX.
-
Partage d'état entre composants Astro
Apprendre à partager des états entre composants Astro avec Nano Stores.
-
Utilisation de la diffusion en continu pour améliorer les performances des pages
Apprendre à utiliser la diffusion en continu pour améliorer les performances des pages.
-
Styliser le rendu Markdown avec la typographie Tailwind
Apprenez à utiliser @tailwind/typography pour styliser votre rendu Markdown.