28 lines
839 B
Plaintext
28 lines
839 B
Plaintext
---
|
|
import { getCollection, render } from 'astro:content';
|
|
import Main from '@/layouts/mdx.astro';
|
|
import { basename } from '@/modules/basename';
|
|
// 1. 为每个集合条目生成一个新路径
|
|
export async function getStaticPaths() {
|
|
const posts = await getCollection('docs');
|
|
return posts.map((post) => ({
|
|
params: { id: post.id },
|
|
props: { post },
|
|
data: post,
|
|
}));
|
|
}
|
|
type Post = {
|
|
data: { title: string; tags: string[]; showMenu?: boolean };
|
|
};
|
|
// 2. 对于你的模板,你可以直接从 prop 获取条目
|
|
const { post } = Astro.props as { post: Post };
|
|
const { Content } = await render(post);
|
|
const showMenu = post.data?.showMenu;
|
|
const staticPaths = await getStaticPaths();
|
|
const menu = staticPaths.map((item) => item.data);
|
|
---
|
|
|
|
<Main showMenu={showMenu} menu={menu} basename={basename}>
|
|
<Content />
|
|
</Main>
|