fix: no 'uncategorized' category in categories page

This commit is contained in:
grassblock 2025-05-29 20:56:40 +08:00
parent 6e89919cd4
commit b103c045e2
3 changed files with 12 additions and 7 deletions

View file

@ -5,8 +5,8 @@ export const posts = ({ image }) => z.object({
description: z.string(),
pubDate: z.coerce.date(),
updatedDate: z.coerce.date().optional(),
categories: z.array(z.string()).optional().default(['uncategorized']),
tags: z.array(z.string()).optional().default([]),
categories: z.array(z.string()).default(['uncategorized']),
tags: z.array(z.string()).optional(),
cover: image().optional(),
author: z.string().optional(),
});

View file

@ -7,6 +7,8 @@ tags:
- 'design'
- 'code'
- 'minimalism'
categories:
- 'thinking'
---
Minimalism isn't just about having less, it's about making room for what matters.

View file

@ -1,14 +1,16 @@
---
import Layout from '../../layouts/Layout.astro';
import {getCollection} from "astro:content";
import {categoryLabel} from "astro/client/dev-toolbar/apps/audit/rules";
export async function getStaticPaths() {
const allPosts = await getCollection('posts');
console.log(allPosts)
const uniqueCategories = [...new Set(allPosts.map((post: any) => post.data.categories ? post.data.categories : []).flat())];
// Get all categories, ensuring the default 'uncategorized' is used when categories is undefined
const uniqueCategories = [...new Set(allPosts.map((post: any) =>
post.data.categories || ['uncategorized']).flat())];
return uniqueCategories.map((category) => {
const filteredPosts = allPosts.filter((post: any) => post.data.categories?.includes(category));
const filteredPosts = allPosts.filter((post: any) =>
(post.data.categories || ['uncategorized']).includes(category));
return {
params: { category },
props: { posts: filteredPosts },
@ -31,3 +33,4 @@ const { posts } = Astro.props;
)}
</ul>
</Layout>