From b40682ace35b590c909e60d0c8c2556496370a51 Mon Sep 17 00:00:00 2001 From: João Augusto Costa Branco Marado Torres Date: Sun, 27 Jul 2025 20:09:43 -0300 Subject: feat: style keywords page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Augusto Costa Branco Marado Torres --- src/pages/blog/keywords/[...slug].astro | 40 --------------------- src/pages/blog/keywords/[keyword].astro | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 40 deletions(-) delete mode 100644 src/pages/blog/keywords/[...slug].astro create mode 100644 src/pages/blog/keywords/[keyword].astro (limited to 'src/pages/blog/keywords') diff --git a/src/pages/blog/keywords/[...slug].astro b/src/pages/blog/keywords/[...slug].astro deleted file mode 100644 index 724e8b7..0000000 --- a/src/pages/blog/keywords/[...slug].astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -import { type CollectionEntry, getCollection } from "astro:content"; -import Base from "@layouts/Base.astro"; -import BlogCard from "@components/BlogCard.astro"; - -type Props = { posts: CollectionEntry<"blog">[] }; - -export async function getStaticPaths() { - const posts = await getCollection("blog"); - const keywords = [ - ...new Set( - await getCollection("blog").then((x) => - x.flatMap((x) => x.data.keywords) - ), - ).values(), - ]; - return keywords.map((k) => ({ - params: { slug: k }, - props: { - posts: posts.filter((post) => - post.data.keywords.some((i) => i.localeCompare(k) === 0) - ), - }, - })); -} - -const title = "Blog"; -const description = "Latest articles."; - -const posts = Astro.props.posts.sort((a, b) => - new Date(b.data.dateCreated).valueOf() - - new Date(a.data.dateCreated).valueOf() -); ---- - - -
-

Blogue

{posts.map((post) => )} -
- diff --git a/src/pages/blog/keywords/[keyword].astro b/src/pages/blog/keywords/[keyword].astro new file mode 100644 index 0000000..8f0494b --- /dev/null +++ b/src/pages/blog/keywords/[keyword].astro @@ -0,0 +1,64 @@ +--- +import { type CollectionEntry, getCollection } from "astro:content"; +import Base from "@layouts/Base.astro"; +import BlogCard from "@components/BlogCard.astro"; +import SimplePostList from "@components/templates/SimplePostList.astro"; + +type Props = { posts: CollectionEntry<"blog">[] }; + +export async function getStaticPaths() { + const posts = await getCollection("blog"); + const keywords = [ + ...new Set( + await getCollection("blog").then((x) => + x.flatMap((x) => x.data.keywords) + ), + ).values(), + ]; + return keywords.map((k) => ({ + params: { keyword: k }, + props: { + posts: posts.filter((post) => + post.data.keywords.some((i) => i.localeCompare(k) === 0) + ), + }, + })); +} + +const title = `Blogue &ndash ${Astro.params.keyword}`; +const description = `Últimas postagens da categoria ${Astro.params.keyword}.`; + +const posts = Astro.props.posts.sort((a, b) => + new Date(b.data.dateCreated).valueOf() - + new Date(a.data.dateCreated).valueOf() +); +--- + + +
+
+

+ +

+
+ -- cgit v1.2.3