diff options
author | Valentin Popov <valentin@popov.link> | 2024-09-12 17:06:44 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-09-12 17:06:44 +0300 |
commit | 0b57b888caf8817ff4992c59ed40ed29bee34fd4 (patch) | |
tree | 37ea0f6c9a50f5be21e5d8e5c5c844fb498c98f4 /src/pages/blog | |
parent | 4ba339984d239180a526a5ae8ffbb558f1b5642a (diff) | |
download | popov.link-0b57b888caf8817ff4992c59ed40ed29bee34fd4.tar.xz popov.link-0b57b888caf8817ff4992c59ed40ed29bee34fd4.zip |
Add PostPagination component for blog post navigation
Diffstat (limited to 'src/pages/blog')
-rw-r--r-- | src/pages/blog/[...slug].astro | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index 4ecb1e1..9262a66 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -2,17 +2,24 @@ import { type CollectionEntry, getCollection } from "astro:content"; import Comments from "../../components/Comments.astro"; import Layout from "../../layouts/PageLayout.astro"; +import Pagination from "../../components/PostPagination.astro"; export async function getStaticPaths() { const posts = await getCollection("blog"); - return posts.map((post) => ({ + const total = posts.length; + + return posts.map((post, index) => ({ params: { slug: post.slug }, - props: post, + props: { + post, + prevPost: index + 1 === total ? null : posts[index + 1], + nextPost: index === 0 ? null : posts[index - 1], + }, })); } type Props = CollectionEntry<"blog">; -const post = Astro.props; +const { post, prevPost, nextPost } = Astro.props; const { Content, remarkPluginFrontmatter } = await post.render(); --- @@ -41,6 +48,10 @@ const { Content, remarkPluginFrontmatter } = await post.render(); </section> <section> + <Pagination prevPost={prevPost} nextPost={nextPost} /> + </section> + + <section> <Comments /> </section> </article> |