摘要
摘要会在文章列表的标题下方展示,分为自动摘要和手动摘要,其中手动摘要优先级高于自动摘要
摘要的内容会将文章的各级标题、代码块移除,仅展示文章正文内容
提示
无论摘要内容多少,在文章列表中 PC 端最多展示一行;移动端最多展示两行
自动摘要
通过 usePosts 方法的 excerpt 参数进行启用,值为摘要的字数,默认为 0 不开启。当填入数字后,所有文章都会开启自动摘要
ts
const { posts } = await usePosts({ excerpt: 100 });手动摘要
手动摘要可以单独为一篇文章启用摘要功能,无需与自动摘要同时启用。当自动摘要与手动摘要同时开启时,也会优先展示手动摘要的内容。
手动摘要分为 description 与 <!--more-->,前者用于完全自定义的摘要内容,与正文内容无关;后者则用于指示正文摘要的结束位置。同时前者的优先级也高于后者,如果文章存在 description,会优先展示。
description
通过在 Frontmatter 中设置 description 可以为文章添加自定义的摘要内容 。
yaml
description: '自定义摘要内容'<!--more-->
在 Markdown 文章中可以手动添加 <!--more--> 标记,用于指示摘要的结束位置,当标记存在时,标记前面的内容均为摘要内容,可以不受自动摘要的字数限制。
meta
VitePress 会自动将 Frontmatter 中的 description 添加到 <meta> 标签中,但另外两种摘要不会自动添加,我们需要通过 transformPageData 钩子将它添加进去。
ts
const { posts, descriptionMap } = await usePosts({ excerpt: 150 });
export default defineConfig<ThemeConfig>({
transformPageData(pageData) {
const { frontmatter, description } = pageData;
const { id } = frontmatter;
if (!description) {
pageData.description = descriptionMap.get(id) as string;
}
}
});
