feat: add custom slug validation and handling for posts

- Enhance content configuration with slug validation to ensure only valid characters are used
- Update post routing to support custom slugs with fallback to default slug
- Implement slug duplication check to prevent conflicts across different languages
- Modify various page components to use custom or default slugs in URL generation
This commit is contained in:
radishzzz 2025-01-25 03:14:52 +00:00
parent ee35006f7c
commit a26031d490
10 changed files with 67 additions and 11 deletions

View file

@ -1,11 +1,20 @@
---
import Layout from '@/layouts/Layout.astro'
import { checkSlugDuplication } from '@/utils/content.config'
import { getCollection } from 'astro:content'
export async function getStaticPaths() {
const posts = await getCollection('posts')
const duplicates = await checkSlugDuplication(posts)
if (duplicates.length > 0) {
throw new Error(`Slug conflicts found:\n${duplicates.join('\n')}`)
}
return posts.map(post => ({
params: { slug: post.slug },
params: {
slug: post.data.slug || post.slug,
},
props: { post },
}))
}