[教程] PageCMS配置示例
11248 字
56 分钟
[教程] PageCMS配置示例
前言
最近在QQ群看到了很多大佬用PageCMS写文章,正好看到有老哥分享。所以我这借用DeepSeek和ZCode将他的配置文件适配到了Firefly最新版本。现分享如下
第二版:内容按图片输入方案分隔。
# Pages CMS 配置 - Firefly 博客# 文件名必须为仓库根目录下的 .pages.yml(Pages CMS 只读取这个文件名)# 文档: https://pagescms.org/docs/configuration/
media: # 文章配图 - 对应 src/content/posts/images/ # 写入 frontmatter 的值形如 images/firefly2.avif(相对文章文件的路径) # 注意:位于子目录的文章(如 guide/index.md)需要手动写成 ../images/xxx.avif - name: post-images label: 文章配图 input: src/content/posts/images output: images categories: [image]
# 项目配图 - 对应 src/content/projects/images/ - name: project-images label: 项目配图 input: src/content/projects/images output: images categories: [image]
# 相册图片 - 对应 public/gallery/<相册id>/ # 相册的 id 与说明在 src/config/galleryConfig.ts 中配置 - name: gallery label: 相册图片 input: public/gallery output: /gallery categories: [image]
# 主题自带图片 - 对应 src/assets/images/(头像、壁纸、Logo 等,构建时会被优化) - name: site-images label: 主题图片 input: src/assets/images output: assets/images categories: [image]
# 公共静态资源 - 对应 public/assets/(音乐、歌词、封面、打赏二维码、广告图等,不经过构建优化) - name: public-assets label: 公共资源 input: public/assets output: /assets categories: [image, audio]
content: # ============================================================ # 📝 内容页面 # ============================================================ - name: content-pages label: 📝 内容页面 type: group items: # 博客文章 - name: posts label: 📝 博客文章 type: collection path: src/content/posts format: yaml-frontmatter # 文件名即默认 URL,中文标题会被转换为空值,请手动填写英文/拼音文件名; # 也可以留空 slug,仅依靠文件名作为文章地址 filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图 type: image options: media: post-images description: >- 支持 images/xxx.avif(相对文章目录)、/assets/images/xxx.avif(public 目录)或完整 URL。 另外可填入 api 使用随机封面图(需先在 coverImageConfig.ts 中开启 randomCoverImage.enable); api 无法通过本控件输入,需手动编辑文章 frontmatter,且不要点封面图右上角的删除按钮
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文 type: rich-text required: true
# 动态(说说) - name: dynamic label: 💬 动态 type: collection path: src/content/dynamic format: yaml-frontmatter description: >- 每条动态一个 md 文件,文件名即创建时间(与 scripts/new-dynamic.js 生成规则一致, 也可用 pnpm new-dynamic "内容" 生成)。本集合关闭了文件名输入框,新建时按当前时间自动命名 filename: template: "{year}-{month}-{day}-{hour}{minute}{second}.md" field: false view: primary: published fields: [published, pinned, location] sort: [published, location] search: [location] default: sort: published order: desc fields: - name: published label: 发布时间 type: date required: true options: time: true format: "yyyy-MM-dd HH:mm:ss"
- name: pinned label: 置顶 type: boolean default: false
- name: location label: 位置 type: string description: 显示在动态时间旁的地点,可留空
- name: body label: 内容 type: rich-text required: true
# 项目展示 - name: projects label: 🚀 项目 type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图 type: image options: media: project-images description: 支持 images/xxx.avif(相对项目目录)、/assets/images/xxx.avif(public 目录)或完整 URL
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明 type: rich-text
# 关于页面 - name: about label: 📄 关于页面 type: file path: src/content/spec/about.md format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: "关于我" - name: body label: 正文 type: rich-text
# 友情链接 - name: friends label: 🔗 友情链接 type: file path: src/content/spec/friends.mdx format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: 友情链接 - name: description label: 页面描述 type: string - name: body label: 正文 type: code options: format: mdx description: MDX 格式(包含 JSX 组件),使用代码模式编辑
# 留言板 - name: guestbook label: 📬 留言板 type: file path: src/content/spec/guestbook.md format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: 留言板 - name: description label: 页面描述 type: string - name: body label: 正文 type: rich-text
- name: content-pages label: 📝 内容-自由输入 type: group items: # 博客文章(自由输入封面) - name: posts-free label: 📝 博客文章(自由输入封面) type: collection path: src/content/posts format: yaml-frontmatter # 文件名即默认 URL,中文标题会被转换为空值,请手动填写英文/拼音文件名; # 也可以留空 slug,仅依靠文件名作为文章地址 filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填:api(随机封面,需先在 coverImageConfig.ts 中开启 randomCoverImage.enable)、 完整图片 URL,或相对路径(如 images/xxx.avif)。留空则不显示封面
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文 type: rich-text required: true
# 项目展示(自由输入封面) - name: projects-free label: 🚀 项目(自由输入封面) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填完整图片 URL 或相对路径(如 images/xxx.avif)。 项目封面不支持 api 随机图,留空则不显示封面
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明 type: rich-text
- name: content-pages label: 📝 内容-MDX type: group items: # 博客文章(MDX)- Pages CMS 每个集合只能对应一种扩展名, # 所以 .mdx 文章必须单独开一个集合,字段与上面的 posts 保持一致 - name: posts-mdx label: 📝 博客文章(MDX) type: collection path: src/content/posts format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图 type: image options: media: post-images description: 支持 images/xxx.avif(相对文章目录)、/assets/images/xxx.avif(public 目录)或完整 URL。 另外可填入 api 使用随机封面图(需先在 coverImageConfig.ts 中开启 randomCoverImage.enable); api 无法通过本控件输入,需手动编辑文章 frontmatter,且不要点封面图右上角的删除按钮
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 项目展示(Markdown 文章) - name: projects-mdx label: 🚀 项目(MDX) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图 type: image options: media: project-images description: 支持 images/xxx.avif(相对项目目录)、/assets/images/xxx.avif(public 目录)或完整 URL
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
- name: content-pages label: 📝 内容-MDX+自由输入 type: group items: # 博客文章(MDX·自由输入封面) - name: posts-mdx-free label: 📝 博客文章(MDX·自由输入封面) type: collection path: src/content/posts format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填:api(随机封面,需先在 coverImageConfig.ts 中开启 randomCoverImage.enable)、 完整图片 URL,或相对路径(如 images/xxx.avif)。留空则不显示封面
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 项目展示(MDX·自由输入封面) - name: projects-mdx-free label: 🚀 项目(MDX·自由输入封面) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填完整图片 URL 或相对路径(如 images/xxx.avif)。 项目封面不支持 api 随机图,留空则不显示封面
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# ============================================================ # ⚙️ 站点设置 # ============================================================ - name: site-settings label: ⚙️ 站点设置 type: group description: 核心站点配置,包括标题、域名、SEO、个人信息等 items: - name: site-config label: 🌐 站点主配置 type: file path: src/config/siteConfig.ts format: code description: 站点标题、URL、主题色、分页、页面开关、Bangumi 等核心设置
- name: profile-config label: 👤 个人信息 type: file path: src/config/profileConfig.ts format: code description: 头像、昵称、签名、社交链接等个人资料配置
- name: announcement-config label: 📢 公告栏 type: file path: src/config/announcementConfig.ts format: code description: 博客顶部公告栏的标题、内容和链接配置
- name: license-config label: 📜 许可协议 type: file path: src/config/licenseConfig.ts format: code description: 文章底部版权声明(如 CC BY-NC-SA 4.0)
# ============================================================ # 🎨 布局与外观 # ============================================================ - name: layout-appearance label: 🎨 布局与外观 type: group description: 导航栏、侧边栏、壁纸、字体等视觉相关配置 items: - name: nav-bar-config label: 🧭 导航栏 type: file path: src/config/navBarConfig.ts format: code description: 导航栏菜单项、LinkPresets 链接预设和搜索配置
- name: sidebar-config label: 📐 侧边栏布局 type: file path: src/config/sidebarConfig.ts format: code description: 侧边栏位置、组件(个人资料、公告、音乐、分类、标签等)的显示和排序
- name: footer-html label: 📏 页脚 HTML type: file path: src/config/FooterConfig.html format: code description: 页脚自定义 HTML 内容(备案号、版权信息等),留空则使用默认页脚
- name: font-config label: 🔤 字体设置 type: file path: src/config/fontConfig.ts format: code description: 全局字体、横幅字体、Google Fonts、子集化等配置
- name: cover-image-config label: 🖼️ 文章封面图 type: file path: src/config/coverImageConfig.ts format: code description: 文章详情页封面图显示和随机图 API 配置
- name: background-wallpaper label: 🏞️ 背景壁纸 type: file path: src/config/backgroundWallpaper.ts format: code description: 全屏壁纸、横幅壁纸、视频背景、水波纹、渐变等背景特效
- name: expressive-code-config label: 💻 代码块样式 type: file path: src/config/expressiveCodeConfig.ts format: code description: 代码高亮主题、折叠插件、语言徽章等代码块配置
- name: display-settings-config label: 🎛️ 显示设置面板 type: file path: src/config/displaySettingsConfig.ts format: code description: 前台设置面板总开关及各设置项(主题色、布局、壁纸、特效)开关
# ============================================================ # 🔧 功能配置 # ============================================================ - name: feature-settings label: 🔧 功能配置 type: group description: 评论、统计、音乐、打赏、相册、动态、书签等功能模块配置 items: - name: comment-config label: 💬 评论系统 type: file path: src/config/commentConfig.ts format: code description: Twikoo / Waline / Giscus / Artalk / Disqus 评论系统配置
- name: analytics-config label: 📊 数据统计 type: file path: src/config/analyticsConfig.ts format: code description: Google Analytics、Microsoft Clarity、Umami、51la 统计配置
- name: music-config label: 🎵 音乐播放器 type: file path: src/config/musicConfig.ts format: code description: 音乐播放模式(Meting API / 本地音乐)、播放列表、歌词设置
- name: sponsor-config label: 💰 打赏页面 type: file path: src/config/sponsorConfig.ts format: code description: 打赏用途、支付方式(支付宝/微信/Ko-fi/爱发电)、赞助者列表
- name: friends-data label: 🔗 友链数据 type: file path: src/config/friendsConfig.ts format: code description: 友链页面设置和友链列表(站点名、头像、描述、链接、标签、权重)
- name: gallery-config label: 🖼️ 相册配置 type: file path: src/config/galleryConfig.ts format: code description: 相册列表(ID、名称、描述、地点、日期、标签、密码)和瀑布流列宽,图片放在 public/gallery/<相册id>/
- name: dynamic-config label: 💬 动态页面 type: file path: src/config/dynamicConfig.ts format: code description: 动态页面标题、评论开关、每页条数,以及本地 JSON / Memos 数据源切换
- name: booknav-config label: 🔖 书签导航 type: file path: src/config/booknavConfig.ts format: code description: 书签导航页面标题、favicon 接口和书签分类组(开发、项目、设计、工具等)
- name: effects-config label: 🌸 樱花特效 type: file path: src/config/effectsConfig.ts format: code description: 樱花飘落动画的数量、速度、尺寸、透明度等参数
- name: pio-config label: 🎭 看板娘 type: file path: src/config/pioConfig.ts format: code description: Spine / Live2D 看板娘模型、位置、交互、气泡提示配置
- name: mermaid-config label: 🧩 Mermaid 图表 type: file path: src/config/mermaidConfig.ts format: code description: Mermaid 图表的亮色 / 暗色主题配置
- name: plantuml-config label: 📐 PlantUML 图表 type: file path: src/config/plantumlConfig.ts format: code description: PlantUML 服务器地址和明暗主题配置
settings: content: # true:保存时保留配置里未声明的 frontmatter 字段(如 slug、自定义字段),避免被清空 merge: true
# ============================================================# 📌 参考:可自由输入「api 或任意 URL」的图片字段写法# ============================================================# 上面所有 image 字段用的都是 type: image(带媒体库的上传 / 选择按钮)。# 如果改成下面这样用 type: string,就能在网页上直接手打 api(随机封面)# 或任意图片 URL,代价是失去媒体库的选择按钮。## - name: image# label: 封面图# type: string# description: 填 api 使用随机封面,也可填 https:// 完整 URL## ── 关于可选校验 pattern ───────────────────────────────────# Pages CMS 的 pattern 内部是 z.string().regex(),有两点要注意:# 1. 不会自动加首尾锚定,^ $ 必须自己写;# 2. 「留空」提交的是空字符串 ""(不是 undefined),而字段非必填时# 只会包一层 .optional(),空字符串仍然会被 pattern 校验。# 因此 pattern 必须显式允许空值,否则把封面留空的文章将无法保存:## pattern: "^(?:|api|https?://.+)$" # ✅ 允许 留空 / api / http(s) URL# pattern: "^(api|https?://.+)$" # ❌ 留空会被拒绝,文章存不回去## 完全不写 pattern 就是不做校验,可以自由输入任何内容(包括 images/xxx.avif# 这类相对路径)。仅在确实想约束取值范围时才加。## ── 两个提醒 ───────────────────────────────────────────────# 1. api 只在文章上生效:随机封面逻辑在 utils/image-utils.ts 的# processCoverImageSync() 里,只有 PostCard.astro 与 posts/[...slug].astro# 调用它;项目页没有这段逻辑,填 api 不会出随机图。生效前还需在# coverImageConfig.ts 中把 randomCoverImage.enable 设为 true。# 2. 使用 type: string 后,读到旧值不会再做路径归一化,存进去什么就是什么。第一版:内容混一块。
# Pages CMS 配置 - Firefly 博客# 文件名必须为仓库根目录下的 .pages.yml(Pages CMS 只读取这个文件名)# 文档: https://pagescms.org/docs/configuration/
media: # 文章配图 - 对应 src/content/posts/images/ # 写入 frontmatter 的值形如 images/firefly2.avif(相对文章文件的路径) # 注意:位于子目录的文章(如 guide/index.md)需要手动写成 ../images/xxx.avif - name: post-images label: 文章配图 input: src/content/posts/images output: images categories: [image]
# 项目配图 - 对应 src/content/projects/images/ - name: project-images label: 项目配图 input: src/content/projects/images output: images categories: [image]
# 相册图片 - 对应 public/gallery/<相册id>/ # 相册的 id 与说明在 src/config/galleryConfig.ts 中配置 - name: gallery label: 相册图片 input: public/gallery output: /gallery categories: [image]
# 主题自带图片 - 对应 src/assets/images/(头像、壁纸、Logo 等,构建时会被优化) - name: site-images label: 主题图片 input: src/assets/images output: assets/images categories: [image]
# 公共静态资源 - 对应 public/assets/(音乐、歌词、封面、打赏二维码、广告图等,不经过构建优化) - name: public-assets label: 公共资源 input: public/assets output: /assets categories: [image, audio]
content: # ============================================================ # 📝 内容页面 # ============================================================ - name: content-pages label: 📝 内容页面 type: group items: # 博客文章 - name: posts label: 📝 博客文章 type: collection path: src/content/posts format: yaml-frontmatter # 文件名即默认 URL,中文标题会被转换为空值,请手动填写英文/拼音文件名; # 也可以留空 slug,仅依靠文件名作为文章地址 filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图 type: image options: media: post-images description: >- 支持 images/xxx.avif(相对文章目录)、/assets/images/xxx.avif(public 目录)或完整 URL。 另外可填入 api 使用随机封面图(需先在 coverImageConfig.ts 中开启 randomCoverImage.enable); api 无法通过本控件输入,需手动编辑文章 frontmatter,且不要点封面图右上角的删除按钮
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文 type: rich-text required: true
# 博客文章(自由输入封面) - name: posts-free label: 📝 博客文章(自由输入封面) type: collection path: src/content/posts format: yaml-frontmatter # 文件名即默认 URL,中文标题会被转换为空值,请手动填写英文/拼音文件名; # 也可以留空 slug,仅依靠文件名作为文章地址 filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填:api(随机封面,需先在 coverImageConfig.ts 中开启 randomCoverImage.enable)、 完整图片 URL,或相对路径(如 images/xxx.avif)。留空则不显示封面
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文 type: rich-text required: true
# 博客文章(MDX)- Pages CMS 每个集合只能对应一种扩展名, # 所以 .mdx 文章必须单独开一个集合,字段与上面的 posts 保持一致 - name: posts-mdx label: 📝 博客文章(MDX) type: collection path: src/content/posts format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图 type: image options: media: post-images description: 支持 images/xxx.avif(相对文章目录)、/assets/images/xxx.avif(public 目录)或完整 URL。 另外可填入 api 使用随机封面图(需先在 coverImageConfig.ts 中开启 randomCoverImage.enable); api 无法通过本控件输入,需手动编辑文章 frontmatter,且不要点封面图右上角的删除按钮
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 博客文章(MDX·自由输入封面) - name: posts-mdx-free label: 📝 博客文章(MDX·自由输入封面) type: collection path: src/content/posts format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, tags, category, draft, pinned] sort: [published, title] search: [title, description, tags, category] default: sort: published order: desc fields: - name: title label: 标题 type: string required: true
- name: published label: 发布时间 type: date required: true options: time: false format: yyyy-MM-dd
- name: updated label: 更新时间 type: date options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: pinned label: 置顶 type: boolean default: false
- name: description label: 文章摘要 type: text description: 简短描述,留空则自动截取正文
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填:api(随机封面,需先在 coverImageConfig.ts 中开启 randomCoverImage.enable)、 完整图片 URL,或相对路径(如 images/xxx.avif)。留空则不显示封面
- name: tags label: 标签 type: string list: true description: 每项一个标签,无需加引号
- name: category label: 分类 type: string description: 文章分类(如"文章示例"、"技术笔记")
- name: series label: 所属系列 type: string description: 留空表示不属于任何系列
- name: seriesOrder label: 系列内排序 type: number description: 数字越小越靠前,仅在填写了所属系列时生效
- name: slug label: URL 路径(slug) type: string description: 自定义文章 URL,留空则使用文件名
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: author label: 作者 type: string description: 覆盖默认作者名(通常留空)
- name: sourceLink label: 原文链接 type: string description: 转载/翻译文章的原始出处
- name: licenseName label: 许可协议名称 type: string description: 如 CC BY-NC-SA 4.0
- name: licenseUrl label: 许可协议链接 type: string
- name: comment label: 启用评论 type: boolean default: true
- name: password label: 文章密码 type: string description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint label: 密码提示 type: string description: 提示访问者密码是什么
- name: body label: 正文(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 动态(说说) - name: dynamic label: 💬 动态 type: collection path: src/content/dynamic format: yaml-frontmatter description: >- 每条动态一个 md 文件,文件名即创建时间(与 scripts/new-dynamic.js 生成规则一致, 也可用 pnpm new-dynamic "内容" 生成)。本集合关闭了文件名输入框,新建时按当前时间自动命名 filename: template: "{year}-{month}-{day}-{hour}{minute}{second}.md" field: false view: primary: published fields: [published, pinned, location] sort: [published, location] search: [location] default: sort: published order: desc fields: - name: published label: 发布时间 type: date required: true options: time: true format: "yyyy-MM-dd HH:mm:ss"
- name: pinned label: 置顶 type: boolean default: false
- name: location label: 位置 type: string description: 显示在动态时间旁的地点,可留空
- name: body label: 内容 type: rich-text required: true
# 项目展示 - name: projects label: 🚀 项目 type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图 type: image options: media: project-images description: 支持 images/xxx.avif(相对项目目录)、/assets/images/xxx.avif(public 目录)或完整 URL
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明 type: rich-text
# 项目展示(自由输入封面) - name: projects-free label: 🚀 项目(自由输入封面) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.md" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填完整图片 URL 或相对路径(如 images/xxx.avif)。 项目封面不支持 api 随机图,留空则不显示封面
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明 type: rich-text
# 项目展示(Markdown 文章) - name: projects-mdx label: 🚀 项目(MDX) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图 type: image options: media: project-images description: 支持 images/xxx.avif(相对项目目录)、/assets/images/xxx.avif(public 目录)或完整 URL
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 项目展示(MDX·自由输入封面) - name: projects-mdx-free label: 🚀 项目(MDX·自由输入封面) type: collection path: src/content/projects format: yaml-frontmatter filename: template: "{primary}.mdx" field: true exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"] view: primary: title fields: [title, published, status, order, draft] sort: [published, order, title] search: [title, description, tags] default: sort: published order: desc fields: - name: title label: 项目名称 type: string required: true
- name: slug label: URL 路径(slug) type: string description: 自定义项目 URL,留空则使用文件名
- name: published label: 发布日期 type: date required: true options: time: false format: yyyy-MM-dd
- name: draft label: 草稿 type: boolean default: false
- name: order label: 排序权重 type: number description: 数字越大越靠前;未设置则按发布日期降序
- name: description label: 项目简介 type: text
- name: image label: 封面图(自由输入) type: string description: >- 可直接手填完整图片 URL 或相对路径(如 images/xxx.avif)。 项目封面不支持 api 随机图,留空则不显示封面
- name: tags label: 标签 type: string list: true
- name: status label: 项目状态 type: select options: values: - { name: planning, label: 计划中 } - { name: developing, label: 开发中 } - { name: published, label: 已发布 } - { name: archived, label: 已归档 }
- name: lang label: 语言 type: string description: 留空使用站点默认语言;其他语言填写如 en、ja、zh_TW、ru
- name: link label: 相关链接 type: object list: true fields: - name: label label: 链接名称 type: string required: true - name: icon label: 图标 type: string description: astro-icon 图标名(如 fa7-brands:github)、图片地址,留空则显示名称首字母 - name: value label: 链接地址 type: string required: true
- name: body label: 项目说明(MDX 源码) type: code options: format: mdx description: MDX 源码原文,含 JSX 组件与 import 语句,只能以代码模式编辑
# 关于页面 - name: about label: 📄 关于页面 type: file path: src/content/spec/about.md format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: "关于我" - name: body label: 正文 type: rich-text
# 友情链接 - name: friends label: 🔗 友情链接 type: file path: src/content/spec/friends.mdx format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: 友情链接 - name: description label: 页面描述 type: string - name: body label: 正文 type: code options: format: mdx description: MDX 格式(包含 JSX 组件),使用代码模式编辑
# 留言板 - name: guestbook label: 📬 留言板 type: file path: src/content/spec/guestbook.md format: yaml-frontmatter fields: - name: title label: 页面标题 type: string default: 留言板 - name: description label: 页面描述 type: string - name: body label: 正文 type: rich-text
# ============================================================ # ⚙️ 站点设置 # ============================================================ - name: site-settings label: ⚙️ 站点设置 type: group description: 核心站点配置,包括标题、域名、SEO、个人信息等 items: - name: site-config label: 🌐 站点主配置 type: file path: src/config/siteConfig.ts format: code description: 站点标题、URL、主题色、分页、页面开关、Bangumi 等核心设置
- name: profile-config label: 👤 个人信息 type: file path: src/config/profileConfig.ts format: code description: 头像、昵称、签名、社交链接等个人资料配置
- name: announcement-config label: 📢 公告栏 type: file path: src/config/announcementConfig.ts format: code description: 博客顶部公告栏的标题、内容和链接配置
- name: license-config label: 📜 许可协议 type: file path: src/config/licenseConfig.ts format: code description: 文章底部版权声明(如 CC BY-NC-SA 4.0)
# ============================================================ # 🎨 布局与外观 # ============================================================ - name: layout-appearance label: 🎨 布局与外观 type: group description: 导航栏、侧边栏、壁纸、字体等视觉相关配置 items: - name: nav-bar-config label: 🧭 导航栏 type: file path: src/config/navBarConfig.ts format: code description: 导航栏菜单项、LinkPresets 链接预设和搜索配置
- name: sidebar-config label: 📐 侧边栏布局 type: file path: src/config/sidebarConfig.ts format: code description: 侧边栏位置、组件(个人资料、公告、音乐、分类、标签等)的显示和排序
- name: footer-html label: 📏 页脚 HTML type: file path: src/config/FooterConfig.html format: code description: 页脚自定义 HTML 内容(备案号、版权信息等),留空则使用默认页脚
- name: font-config label: 🔤 字体设置 type: file path: src/config/fontConfig.ts format: code description: 全局字体、横幅字体、Google Fonts、子集化等配置
- name: cover-image-config label: 🖼️ 文章封面图 type: file path: src/config/coverImageConfig.ts format: code description: 文章详情页封面图显示和随机图 API 配置
- name: background-wallpaper label: 🏞️ 背景壁纸 type: file path: src/config/backgroundWallpaper.ts format: code description: 全屏壁纸、横幅壁纸、视频背景、水波纹、渐变等背景特效
- name: expressive-code-config label: 💻 代码块样式 type: file path: src/config/expressiveCodeConfig.ts format: code description: 代码高亮主题、折叠插件、语言徽章等代码块配置
- name: display-settings-config label: 🎛️ 显示设置面板 type: file path: src/config/displaySettingsConfig.ts format: code description: 前台设置面板总开关及各设置项(主题色、布局、壁纸、特效)开关
# ============================================================ # 🔧 功能配置 # ============================================================ - name: feature-settings label: 🔧 功能配置 type: group description: 评论、统计、音乐、打赏、相册、动态、书签等功能模块配置 items: - name: comment-config label: 💬 评论系统 type: file path: src/config/commentConfig.ts format: code description: Twikoo / Waline / Giscus / Artalk / Disqus 评论系统配置
- name: analytics-config label: 📊 数据统计 type: file path: src/config/analyticsConfig.ts format: code description: Google Analytics、Microsoft Clarity、Umami、51la 统计配置
- name: music-config label: 🎵 音乐播放器 type: file path: src/config/musicConfig.ts format: code description: 音乐播放模式(Meting API / 本地音乐)、播放列表、歌词设置
- name: sponsor-config label: 💰 打赏页面 type: file path: src/config/sponsorConfig.ts format: code description: 打赏用途、支付方式(支付宝/微信/Ko-fi/爱发电)、赞助者列表
- name: friends-data label: 🔗 友链数据 type: file path: src/config/friendsConfig.ts format: code description: 友链页面设置和友链列表(站点名、头像、描述、链接、标签、权重)
- name: gallery-config label: 🖼️ 相册配置 type: file path: src/config/galleryConfig.ts format: code description: 相册列表(ID、名称、描述、地点、日期、标签、密码)和瀑布流列宽,图片放在 public/gallery/<相册id>/
- name: dynamic-config label: 💬 动态页面 type: file path: src/config/dynamicConfig.ts format: code description: 动态页面标题、评论开关、每页条数,以及本地 JSON / Memos 数据源切换
- name: booknav-config label: 🔖 书签导航 type: file path: src/config/booknavConfig.ts format: code description: 书签导航页面标题、favicon 接口和书签分类组(开发、项目、设计、工具等)
- name: effects-config label: 🌸 樱花特效 type: file path: src/config/effectsConfig.ts format: code description: 樱花飘落动画的数量、速度、尺寸、透明度等参数
- name: pio-config label: 🎭 看板娘 type: file path: src/config/pioConfig.ts format: code description: Spine / Live2D 看板娘模型、位置、交互、气泡提示配置
- name: mermaid-config label: 🧩 Mermaid 图表 type: file path: src/config/mermaidConfig.ts format: code description: Mermaid 图表的亮色 / 暗色主题配置
- name: plantuml-config label: 📐 PlantUML 图表 type: file path: src/config/plantumlConfig.ts format: code description: PlantUML 服务器地址和明暗主题配置
settings: content: # true:保存时保留配置里未声明的 frontmatter 字段(如 slug、自定义字段),避免被清空 merge: true
# ============================================================# 📌 参考:可自由输入「api 或任意 URL」的图片字段写法# ============================================================# 上面所有 image 字段用的都是 type: image(带媒体库的上传 / 选择按钮)。# 如果改成下面这样用 type: string,就能在网页上直接手打 api(随机封面)# 或任意图片 URL,代价是失去媒体库的选择按钮。## - name: image# label: 封面图# type: string# description: 填 api 使用随机封面,也可填 https:// 完整 URL## ── 关于可选校验 pattern ───────────────────────────────────# Pages CMS 的 pattern 内部是 z.string().regex(),有两点要注意:# 1. 不会自动加首尾锚定,^ $ 必须自己写;# 2. 「留空」提交的是空字符串 ""(不是 undefined),而字段非必填时# 只会包一层 .optional(),空字符串仍然会被 pattern 校验。# 因此 pattern 必须显式允许空值,否则把封面留空的文章将无法保存:## pattern: "^(?:|api|https?://.+)$" # ✅ 允许 留空 / api / http(s) URL# pattern: "^(api|https?://.+)$" # ❌ 留空会被拒绝,文章存不回去## 完全不写 pattern 就是不做校验,可以自由输入任何内容(包括 images/xxx.avif# 这类相对路径)。仅在确实想约束取值范围时才加。## ── 两个提醒 ───────────────────────────────────────────────# 1. api 只在文章上生效:随机封面逻辑在 utils/image-utils.ts 的# processCoverImageSync() 里,只有 PostCard.astro 与 posts/[...slug].astro# 调用它;项目页没有这段逻辑,填 api 不会出随机图。生效前还需在# coverImageConfig.ts 中把 randomCoverImage.enable 设为 true。# 2. 使用 type: string 后,读到旧值不会再做路径归一化,存进去什么就是什么。支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
[教程] PageCMS配置示例
https://blog.ipixeloldc.com/posts/pagecms-setup-guide/相关文章智能推荐
1
[维护] 域名换新
博客2025-12-17
2
Hello World (っ ॑꒳ ॑c)ワクワク
默认2025-12-06
3
[日志] 新开了一个Minecraft服务器 ◟꒰ ´꒳` ꒱◞
MC新开了一个Minecraft服务器,速加QQ群(947957985)◟꒰ ´꒳` ꒱◞
4
[教程] 使用PicoKeys项目在树莓派RP2350上自制简易YubiKey。
博客2025-12-18
5
[教程] 怎么通过第三方皮肤站账号访问我们的MC服务器
MC2026-01-06
随机文章随机推荐



