From 612dfd3bd82035894beeee54259c723dff3d8bb6 Mon Sep 17 00:00:00 2001 From: Rafael Bardini Date: Mon, 10 Jan 2022 23:00:42 +0100 Subject: [PATCH] Add Astro Blog RSS feed (#2301) * Generate RSS feed * Add RSS feed link --- www/src/components/BaseHead.astro | 1 + www/src/pages/blog/[slug].astro | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/www/src/components/BaseHead.astro b/www/src/components/BaseHead.astro index dbebff48cf..53b52ce77d 100644 --- a/www/src/components/BaseHead.astro +++ b/www/src/components/BaseHead.astro @@ -14,6 +14,7 @@ const { title, description, image = 'https://astro.build/social.jpg?v=1', canoni + diff --git a/www/src/pages/blog/[slug].astro b/www/src/pages/blog/[slug].astro index 0390801cc0..93260f90e1 100644 --- a/www/src/pages/blog/[slug].astro +++ b/www/src/pages/blog/[slug].astro @@ -4,10 +4,26 @@ import BlogHeader from '../../components/BlogHeader.astro'; import BlogPost from '../../components/BlogPost.astro'; import GoogleAnalytics from '../../components/GoogleAnalytics.astro'; -export function getStaticPaths() { - const posts = Astro.fetchContent('../../data/blog-posts/*.md'); +export function getPostSlug(post) { + return post.file.pathname.split('/').pop().split('.').shift(); +} + +export function getStaticPaths({rss}) { + const posts = Astro.fetchContent('../../data/blog-posts/*.md').sort((a, b) => new Date(b.publishDate) - new Date(a.publishDate)); + + rss({ + title: 'Astro Blog', + description: 'Everything you need to know about Astro, direct from mission control.', + items: posts.map(p => ({ + title: p.title, + description: p.description, + link: `blog/${getPostSlug(p)}`, + pubDate: p.publishDate, + })) + }); + return posts.map((p) => ({ - params: { slug: p.file.pathname.split('/').pop().split('.').shift() }, + params: { slug: getPostSlug(p) }, props: { post: p }, })); }