diff --git a/src/pages/[category]/index.astro b/src/pages/[category]/index.astro index 436b469..8bae471 100644 --- a/src/pages/[category]/index.astro +++ b/src/pages/[category]/index.astro @@ -1,26 +1,27 @@ --- import BaseLayout from "../../layouts/BaseLayout.astro"; import { getCollection } from "astro:content"; +import * as collections from "../../content/config"; + +export async function getStaticPaths() { + return Object.keys(collections.collections) + .filter((category) => category !== "git" && category !== "gists") + .map((category) => ({ + params: { category }, + })); +} const category = Astro.params.category; const title = "Barrett Ruth"; -const allPosts = await getCollection("posts"); -const postsByCategory = allPosts.reduce((acc, post) => { - const c = post.id.split("/")[0]; - (acc[c] ||= []).push(post); - return acc; -}, {}); - -Object.keys(postsByCategory).forEach((c) => { - postsByCategory[c].sort((a, b) => { - const parseEuroDate = (dateStr) => { - if (!dateStr) return new Date(0); - const [day, month, year] = (dateStr || "").split("/"); - return new Date(year, month - 1, day); - }; - return parseEuroDate(b.data.date) - parseEuroDate(a.data.date); - }); +const posts = await getCollection(category); +posts.sort((a, b) => { + const parseEuroDate = (dateStr) => { + if (!dateStr) return new Date(0); + const [day, month, year] = (dateStr || "").split("/"); + return new Date(year, month - 1, day); + }; + return parseEuroDate(b.data.date) - parseEuroDate(a.data.date); }); --- @@ -40,16 +41,19 @@ Object.keys(postsByCategory).forEach((c) => {