From 70b389a4a53388bbfbbee3d26088892c40c70abd Mon Sep 17 00:00:00 2001 From: grassblock Date: Tue, 12 Aug 2025 11:12:21 +0800 Subject: [PATCH] feat: categories accepts strings & make description optional --- src/content/pages/_schemas.ts | 2 +- src/content/posts/_schemas.ts | 4 ++-- src/pages/llms.txt.js | 2 +- src/pages/search-index.json.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/pages/_schemas.ts b/src/content/pages/_schemas.ts index ec1c912..45708cb 100644 --- a/src/content/pages/_schemas.ts +++ b/src/content/pages/_schemas.ts @@ -2,6 +2,6 @@ import { z } from 'astro:content'; export const pages = z.object({ title: z.string(), - description: z.string(), + description: z.string().optional(), heroImage: z.string().optional() }); \ No newline at end of file diff --git a/src/content/posts/_schemas.ts b/src/content/posts/_schemas.ts index 7408b68..a83584c 100644 --- a/src/content/posts/_schemas.ts +++ b/src/content/posts/_schemas.ts @@ -3,10 +3,10 @@ import { z, reference } from 'astro:content'; // @ts-ignore export const posts = ({ image }) => z.object({ title: z.string(), - description: z.string(), + description: z.string().optional(), summary: z.string().optional(), date: z.coerce.date(), - categories: z.array(z.string()).default(['uncategorized']), + categories: z.union([z.array(z.string()), z.string()]).transform(val => Array.isArray(val) ? val : [val]).default(['uncategorized']), tags: z.array(z.string()).optional(), cover: image().optional(), author: z.union([z.array(reference('authors')), reference('authors')]).optional(), diff --git a/src/pages/llms.txt.js b/src/pages/llms.txt.js index bdee22c..204b201 100644 --- a/src/pages/llms.txt.js +++ b/src/pages/llms.txt.js @@ -29,7 +29,7 @@ async function generateMarkdownSection(collectionName, sectionTitle, baseUrl) { for (const item of sortedItems) { const { title, description, slug } = getMetaData(item); - markdown += `\n- [${title}](${baseUrl}/blog/${slug}): ${description}`; + markdown += `\n- [${title}](${baseUrl}/blog/${slug}): ${description || ''}`; } return markdown; diff --git a/src/pages/search-index.json.js b/src/pages/search-index.json.js index fe24f9f..8686b3b 100644 --- a/src/pages/search-index.json.js +++ b/src/pages/search-index.json.js @@ -4,7 +4,7 @@ export async function GET() { const posts = await getCollection('posts'); const searchIndex = posts.map(post => ({ title: post.data.title, - description: post.data.description, + description: post.data.description || '', content: post.body, date: post.data.date, slug: post.slug