From 3d6aedd272a2c73d65ce79036d63e6916e8f71b5 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Wed, 11 Jun 2025 16:05:50 +0000 Subject: feat: group blog posts by year in index page - Implemented functionality to categorize blog posts by publication year. - Updated the blog index page to display posts organized under their respective years for improved navigation. --- src/pages/blog/index.astro | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 48d33e8..0c33b66 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -1,4 +1,5 @@ --- +import type { CollectionEntry } from "astro:content"; import { getCollection } from "astro:content"; import Layout from "../../layouts/BaseLayout.astro"; import PostElement from "../../components/PostElement.astro"; @@ -8,12 +9,32 @@ const posts = await getCollection("blog", ({ data }) => { }); posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); + +const postsByYear = posts.reduce[]>>((acc, post) => { + const year = post.data.pubDate.getFullYear().toString(); + if (!acc[year]) { + acc[year] = []; + } + acc[year].push(post); + return acc; +}, {}); + +const years = Object.keys(postsByYear).sort((a, b) => Number(b) - Number(a)); ---
-
    - {posts.map((post) => )} -
+ { + years.map((year) => ( +
+
{year}
+
    + {postsByYear[year].map((post) => ( + + ))} +
+
+ )) + }
-- cgit v1.2.3