有时候会更新一些目录页说明,更新说明时会出现博客左上角的“最近笔记”模块显示成这些目录页的更新,于是在自定义设置中记录一下Component.RecentNotes({})的使用。
quartz 主题官方有一篇介绍:最近笔记
设置配置
- 自定义筛选:传递额外参数
Component.RecentNotes({ filter: someFilterFunction })。筛选函数应具有签名(f: QuartzPluginData) => boolean。 - 自定义排序:传递额外参数
Component.RecentNotes({ sort: someSortFunction })。默认情况下,Quartz 会按日期排序并在有相同日期时按字母顺序排序。排序函数应具有签名(f1: QuartzPluginData, f2: QuartzPluginData) => number。可参考quartz/components/PageList.tsx中的byDateAndAlphabetical示例。
import { QuartzPluginData } from "./quartz/plugins/vfile"
// ...
Component.DesktopOnly(Component.RecentNotes({ limit: 3, showTags: false, filter: (f) => f.frontmatter?.tags?.includes('intro') ? false : true, sort: (f1: QuartzPluginData, f2: QuartzPluginData) => { if (f1.frontmatter?.date && f2.frontmatter?.date) { // Sort by date if (f1.frontmatter?.date && f2.frontmatter?.date) { return f1.frontmatter.date < f2.frontmatter.date ? 1 : -1 } else if (f1.frontmatter?.date && !f2.frontmatter?.date) { return -1 } else if (!f1.frontmatter?.date && f2.frontmatter?.date) { return 1 }
const f1Title = f1.frontmatter?.title.toLowerCase() ?? "" const f2Title = f2.frontmatter?.title.toLowerCase() ?? "" return f1Title.localeCompare(f2Title) } return 0 }})),在frontmatter.ts中添加页面参数:
declare module "vfile" { interface DataMap { aliases: FullSlug[]; frontmatter: { [key: string]: unknown } & { title: string; } & Partial<{ tags: string[]; aliases: string[]; modified: string; created: string; date: string; lastmod: string; published: string; description: string; socialDescription: string; publish: boolean | string; draft: boolean | string; lang: string; enableToc: string; cssclasses: string[]; socialImage: string; featuredImage: string; comments: boolean | string; }>; }}
Comments
Quiet notes for this article.