# yaml-language-server: $schema=https://unpkg.com/@sveltia/cms/schema/sveltia-cms.json # Sveltia CMS 配置(T3 试水):仅 photos 集合,见 docs 预研报告 # 纪律:不开内建图片优化(transformations 会把原图转 webp 抹掉 EXIF,构建期提取报废) backend: name: gitea repo: wait4x/blog branch: main # 走博客域同源反代(nginx /gitea/ → 127.0.0.1:13020): # ①绕开 git.wait4x.online 的 ESA 522 ②同源无 CORS ③ESA 缓存规则已排除 /artalk/api base_url: https://wait4x.online/gitea api_root: https://wait4x.online/gitea/api/v1 media_folder: content/photos site_url: https://wait4x.online output: # Astro zod optional 兼容:空可选字段不写文件(官方 Astro 指南建议) omit_empty_optional_fields: true collections: # 文章(含书评/技术/照片三轨;书=category:reading 的文章,同一集合管理) - name: posts label: 文章 label_singular: 文章 folder: content/posts create: true hint: 新文章可从置顶的《写作模板》复制起手(列表打开模板 → ⋯ 菜单 → Duplicate);英文版构建时自动机翻上线,无需在此维护 # 中文主稿;英文为 TMT 预翻译入仓的 .en.md(posts-en 集合不在后台,防误改译文) slug: '{{slug}}' summary: '{{pubDate}} · {{title}}' sortable_fields: [pubDate, title] # 注意:Sveltia 对 folder 集合的 media_folder 按"相对集合目录"解析 # (写成 content/posts/assets 会二次嵌套成 content/posts/content/posts/assets, # 实测 2026-11-02 首上传即踩),故这里必须写 assets media_folder: assets public_folder: ./assets fields: - { label: 标题, name: title, widget: string, hint: '建议 ≤32 字(搜索结果超长会截断)' } - { label: 日期, name: pubDate, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, format: 'YYYY-MM-DD' } - { label: 分轨, name: category, widget: select, options: [{label: 阅读, value: reading}, {label: 技术, value: tech}, {label: 照片, value: photo}] } - { label: 标签, name: tags, widget: list, required: true, hint: '至少一个;优先复用现有标签:read(书评)/ 写作 / 站点更新——避免同义新造(如 阅读/read 分家);schema 必填,漏了构建会拦' } - { label: 置顶, name: pinned, widget: boolean, required: false, default: false, hint: '置顶文章排在首页/归档/书架最前;只影响顺序,不改日期、URL 与 RSS 时间语义' } - { label: 情绪色(书评色脊), name: mood, widget: color, required: false, hint: '#RRGGBB,仅阅读轨使用' } - { label: 原书作者, name: bookAuthor, widget: string, required: false } - { label: 一句话描述(书架策展语), name: description, widget: text, required: false, hint: '60–120 字最佳(搜索摘要与列表导语共用)' } - { label: 书封图, name: cover, widget: image, required: false, hint: '上传后自动生成,无需手填路径;仅阅读轨展示' } - label: 附视频(可选) name: video widget: file required: false media_folder: public/media public_folder: /media hint: '展示在正文之后;mp4/webm ≤50MB(走 public/media,构建时原样拷贝,不做转码)' - label: 视频封面(可选) name: poster widget: string required: false hint: '填 /media/xxx.jpg(先上传到 public/media 取路径);缺省浏览器自取首帧' - label: 隐藏(不进列表 / RSS / sitemap) name: hidden widget: boolean required: false default: false hint: '打开后这篇不进首页/归档/书架/RSS/sitemap,但页面本身仍生成、链接可分享(想彻底不生成请用草稿)。与「置顶」同时打开时以隐藏为准——2026-11-04 修:旧开关只写一个没人读的字段,导致隐藏+置顶的文章照样显示还排第一' - { label: 草稿, name: draft, widget: boolean, required: false, default: false } - { label: 正文, name: body, widget: markdown, hint: '排版:选中文字 → Insert ▸ 排版(字体/颜色可视化选);或或手写 …。字体 17 类、颜色 24 档,清单见写作指南「文章排版类」' } # 主题旋钮(样式即数据 · 层 4):只放白名单内的 9 组,越界值会被构建期钳制 - name: site_theme label: 主题设置 # 文件集合必须是 files: [{file,label,fields}] 结构;把 file 直接写在集合层级会被 Sveltia 判非法(2026-11-02 实测报 "The file option ... is invalid") files: - name: theme label: 主题设置 file: content/site/theme.yaml format: yaml fields: - { label: 强调色(亮), name: accent_light, widget: color, required: false, hint: '亮色模式强调色,如 #3454d1;构建期校验正文对比度 ≥4.5' } - { label: 强调色(暗), name: accent_dark, widget: color, required: false, hint: '暗色模式强调色,如 #8ea2ff' } - { label: 图片圆角, name: radius_img, widget: number, required: false, value_type: int, min: 4, max: 16, hint: '范围 4–16(建议 ≤14)' } - { label: 一级标题字号, name: text_h1, widget: number, required: false, value_type: int, min: 22, max: 32, hint: '22–32,且必须大于 h2' } - { label: 二级标题字号, name: text_h2, widget: number, required: false, value_type: int, min: 22, max: 32, hint: '22–32,必须小于 h1、大于 h3' } - { label: 三级标题字号, name: text_h3, widget: number, required: false, value_type: int, min: 16, max: 32, hint: '16–32,必须小于 h2' } - { label: 书评正文字号, name: prose_size_reading, widget: number, required: false, value_type: int, min: 16, max: 22, hint: '16–22' } - { label: 技术文正文字号, name: prose_size_tech, widget: number, required: false, value_type: int, min: 16, max: 22, hint: '16–22' } - { label: 书评行高, name: leading_reading, widget: number, required: false, value_type: float, min: 1.5, max: 2.0, step: 0.05, hint: '1.5–2.0' } - { label: 技术文行高, name: leading_tech, widget: number, required: false, value_type: float, min: 1.5, max: 2.0, step: 0.05, hint: '1.5–2.0' } - { label: 间距 3, name: space_3, widget: number, required: false, value_type: int, min: 8, max: 80, hint: '8–80,必须 < 间距 4' } - { label: 间距 4, name: space_4, widget: number, required: false, value_type: int, min: 8, max: 80, hint: '8–80,必须 > 间距 3 且 < 间距 5' } - { label: 间距 5, name: space_5, widget: number, required: false, value_type: int, min: 8, max: 80, hint: '8–80,必须 > 间距 4 且 < 间距 6' } - { label: 间距 6, name: space_6, widget: number, required: false, value_type: int, min: 8, max: 80, hint: '8–80,必须 > 间距 5' } - { label: 段间距, name: flow_p, widget: number, required: false, value_type: float, min: 0, max: 2, step: 0.05, hint: '0–2(em)' } - { label: 标题下间距, name: flow_h2_post, widget: number, required: false, value_type: float, min: 0, max: 2, step: 0.05, hint: '0–2(em)' } - { label: 过渡时长, name: dur, widget: number, required: false, value_type: int, min: 150, max: 600, hint: '150–600(毫秒)' } # 瞬间:随手发(text/image 至少其一——Sveltia 无法表达条件必填,两者都设可选, # 保存前自查;pubDate 必填)。图片走图库媒体库(content/photos 同源可复用) - name: moments label: 瞬间 folder: content/moments create: true slug: '{{year}}-{{month}}-{{day}}-{{slug}}' summary: '{{fields.pubDate}} · {{fields.text}}' sortable_fields: [pubDate, text] fields: - { label: 时间, name: pubDate, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, format: 'YYYY-MM-DD' } - label: 文字 name: text widget: markdown required: false hint: '与图片至少填一项。支持 markdown 与排版类 HTML,例如 彩色+楷体;选中文字 → Insert ▸ 排版 可视化选字体/颜色(预览窗格直接显色显字体)。装饰色仍守“外壳灰阶、彩色只作强调”的纪律' - { label: 图片, name: image, widget: image, required: false, hint: '与文字至少填一项;上传后构建自动优化(WebP),原图无需手工压缩' } - label: 标签 name: tags widget: list required: true - { label: 置顶, name: pinned, widget: boolean, required: false, default: false, hint: '置顶瞬间排时间线最前(可多置顶,之间按日期倒序);只影响顺序不改日期' } - { label: 隐藏, name: hidden, widget: boolean, required: false, default: false, hint: '隐藏后从时间线移除;评论数据保留在服务端,关掉开关即恢复' } - name: photos label: 图库照片 folder: content/photos # 整文件 JSON(非 frontmatter)= 现有 sidecar 同构;不设 format 条目不列出 format: json create: true # 入口相对:jpg 与 sidecar 同目录;image 引用写裸文件名(loader new URL 等价解析) media_folder: '' public_folder: '' summary: '{{fields.group}} · {{fields.title}}' # 照片无 frontmatter 日期(JSON sidecar,时间在 exif/文件侧)——列表按标题/分组排序 sortable_fields: [title, group] fields: # title 必填:Astro schema z.string() 无 .optional(),omit 纪律下必需且有值才会落键(空 title 会让 main 不可构建) - { label: 标题, name: title, widget: string, required: true } - { label: 图片, name: image, widget: image } - { label: 分组, name: group, widget: string, hint: '小写英文短词(如 landscape / street / portrait);新分组直接输入新词,图库筛选会自动出现' } - { label: 替代文本, name: alt, widget: string, required: false } - { label: 人为描述, name: caption, widget: text, required: false, hint: 展示在灯箱里的人为描述(一句话策展文案) } - label: EXIF 覆盖(一般留空,构建期自动从图提取) name: exif widget: object required: false fields: - { label: 机身, name: make, widget: string, required: false } - { label: 镜头, name: lens, widget: string, required: false } - { label: 光圈值, name: fNumber, widget: number, required: false } - { label: 曝光秒, name: exposureTime, widget: number, required: false } - { label: ISO, name: iso, widget: number, required: false } # 页面文案单例(cms 车道 A):三个文件型入口,保存即写 content/site/*.yaml, # 字段与 Astro siteHome/siteAbout/siteOpenSource 的 schema 一一对应(zh/en 双字段,留空回落默认) - name: site_pages label: 页面文案 files: - name: pages label: 瞬间 / 书架 标题下的说明 file: content/site/pages.yaml format: yaml hint: 这两页大标题下面那一行字的文字;字体/颜色用编辑器 Insert ▸ 排版 内联标注(预览直接可见) fields: - label: 瞬间页说明 name: moments widget: object required: false fields: - { label: 中文, name: note_zh, widget: markdown, required: false, hint: '一行小字;排版(字体/颜色)选中文字 → Insert ▸ 排版' } - { label: English, name: note_en, widget: markdown, required: false } - label: 书架页说明 name: books widget: object required: false fields: - { label: 中文, name: note_zh, widget: markdown, required: false, hint: '一行小字;排版(字体/颜色)选中文字 → Insert ▸ 排版' } - { label: English, name: note_en, widget: markdown, required: false } - label: 文章页说明 name: archives widget: object required: false fields: - { label: 中文, name: note_zh, widget: markdown, required: false, hint: '一行小字;{n} 会替换为当前可见文章数(构建期);排版用 Insert ▸ 排版' } - { label: English, name: note_en, widget: markdown, required: false } - name: home label: 主页设置 file: content/site/home.yaml format: yaml # 头像上传落 content/site/assets/,yaml 写 ./assets/xxx(Astro 图片管线优化) media_folder: assets public_folder: ./assets fields: - label: 身份名片 name: identity widget: object required: false collapsed: true hint: 头像、身份语、副标题与站点图标(首页名片区 + 浏览器标签图标) fields: - { label: 身份语(中文), name: tagline_zh, widget: string, required: false, hint: '首页大字身份语(markdown 富文本);可写 … 做局部强调' } - { label: 身份语(英文), name: tagline_en, widget: string, required: false } - { label: 副标题(中文,markdown 短文本), name: subtitle_zh, widget: string, required: false, hint: '渲染在身份语下方;留空不渲染' } - { label: 副标题(英文), name: subtitle_en, widget: string, required: false } - label: 头像(可选) name: avatar widget: image required: false hint: '留空 = 内置渐变占位;上传后自动优化为 60px WebP' - label: 站点图标 favicon name: favicon widget: image required: false # media_folder 按 file 集合语义相对 content/site/ 解析(写 content/site/assets 会嵌套翻倍——5l 实测教训) media_folder: ../../public/icons public_folder: /icons hint: '直接上传 .svg/.ico/.png(建议 64–512px 方图);留空回退 /favicon.svg' - label: 文案与排版 name: copy widget: object required: false collapsed: true hint: 公告(渲染在名片区下方,留空不显示)+ 页面排版覆盖(本页正文默认字体/强调色/字号缩放,不填用全站默认,只影响主页) fields: - { label: 公告(中文,markdown), name: announcement_zh, widget: markdown, required: false, hint: '渲染在名片区下方;留空则不显示公告块' } - { label: 公告(英文), name: announcement_en, widget: markdown, required: false } - label: 正文字体类 name: typography_font widget: select required: false hint: 整页正文换字族;艺术/展示类字族体积大。5i 新增六款(小薇/庆科黄油/马善政/柳建毛草/得意黑/新晰黑)均按站内用字切片,单页增量 27–46KB;站外用字(生僻字)会回落系统字族,需按 docs 里的命令重切 options: [font-serif, font-kai, font-sans, font-mono, font-song, font-kai-sys, font-hei-sys, font-fangsong, font-huiwen, font-kuaile, font-xiaowei, font-huangyou, font-mashanzheng, font-liujianmaocao, font-smiley, font-neoxihei] - label: 强调色类 name: typography_accent widget: select required: false options: [ink-accent, ink-accent-soft, c-blue, c-blue-soft, c-teal, c-teal-soft, c-green, c-green-soft, c-yellow, c-yellow-soft, c-orange, c-orange-soft, c-red, c-red-soft, c-pink, c-pink-soft, c-purple, c-purple-soft] - { label: 字号缩放, name: typography_scale, widget: number, required: false, value_type: float, min: 0.8, max: 1.25, step: 0.05, hint: '0.8–1.25;1 = 全站默认' } - label: 内容与开关 name: content widget: object required: false collapsed: true hint: 各区块条数与显隐开关;关掉的区块不渲染,越界数值自动夹取(默认 = 现状) fields: - label: 最新影像张数 name: latestPhotos widget: number required: false default: 4 min: 0 max: 6 hint: '1-6;填 0 = 隐藏「最新影像」区块。留空默认 4' - label: 首页每轨文章条数 name: perTrackLimit widget: number required: false default: 6 min: 4 max: 8 hint: 阅读轨/技术轨各显示条数,留空默认 6 - { label: 项目墙条数, name: projectsLimit, widget: number, required: false, value_type: int, min: 1, max: 99, hint: '首页项目墙显示几条(1–99,缺省 6)' } - { label: 阅读轨, name: postsTracks_reading, widget: boolean, required: false, default: true, hint: '关掉则阅读轨文章不在首页列出(归档页仍可见);三轨全开 = 现状' } - { label: 技术轨, name: postsTracks_tech, widget: boolean, required: false, default: true } - { label: 照片轨, name: postsTracks_photo, widget: boolean, required: false, default: true } - { label: 显示文章列表, name: sections_tracks, widget: boolean, required: false, default: true } - { label: 显示最新影像, name: sections_photos, widget: boolean, required: false, default: true } - { label: 显示贡献热力图, name: sections_heatmap, widget: boolean, required: false, default: true } - { label: 显示项目墙, name: sections_projects, widget: boolean, required: false, default: true } - label: 社交链接(顺序即展示顺序) name: socials widget: list required: false summary: '{{fields.label}} → {{fields.url}}' fields: - { label: 名称(无障碍文字), name: label, widget: string } - { label: 链接, name: url, widget: string } - label: 图标 name: icon widget: select required: false options: [github, rss, email, bilibili, x] hint: '不在列表里的留空 → 显示纯文字按钮' - name: about label: 关于页 file: content/site/about.yaml format: yaml # 块内图片上传落 content/site/assets/,yaml 写 ./assets/xxx(Astro 图片管线) media_folder: assets public_folder: ./assets fields: - label: 整页正文(推荐改这里,方案 A 白纸直编) name: doc widget: object required: false hint: '整页就这一个 markdown 字段:想写什么写什么、想多长写多长(支持排版类与 ## 标题)。选中文字 → Insert ▸ 排版 可视化选字体/颜色,预览窗格直接显色显字体。清空则回落到下面的 blocks 结构化通道' fields: - { label: 中文, name: zh, widget: markdown, required: false } - { label: English, name: en, widget: markdown, required: false } - label: 块式结构(legacy,整页正文为空时才显示) name: blocks widget: list typeKey: type required: false summary: '{{fields.type}}' hint: '点「+ 添加」选块型。关掉某块用该块内的「显示」开关' types: - label: 正文(markdown) name: prose widget: object hint: markdown 正文块;可选小标题与版心/通栏宽度,长文分段改内容用 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 小标题(可选) name: title widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 正文(markdown) name: body widget: object fields: - { label: 中文, name: zh, widget: markdown, required: false } - { label: 英文, name: en, widget: markdown, required: false } - label: 宽度 name: width widget: select required: false default: narrow options: [{ label: 版心宽度, value: narrow }, { label: 通栏, value: full }] - label: 版图(图标+名称+描述) name: tracks widget: object hint: 版图块:图标 + 名称 + 描述,适合「几条主线/能力面」式介绍 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 标题 name: title widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 条目 name: items widget: list summary: '{{fields.name.zh}}' fields: - label: 图标 name: icon widget: select required: false options: [book, terminal, camera, code, git, rss, email, github, bilibili, x, star, link] hint: 白名单外或留空 → 显示首字占位 - label: 名称 name: name widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 描述 name: desc widget: object required: false fields: - { label: 中文, name: zh, widget: text, required: false } - { label: 英文, name: en, widget: text, required: false } - label: 卡片(2/3 列) name: cards widget: object hint: 卡片墙(2/3 列):每卡 = 标题 + 描述 + 可选链接/角标 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 标题(可选) name: title widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - { label: 列数, name: columns, widget: number, required: false, default: 3, min: 2, max: 3, value_type: int } - label: 卡片条目 name: items widget: list summary: '{{fields.title.zh}}' fields: - label: 标题 name: title widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 描述 name: desc widget: object required: false fields: - { label: 中文, name: zh, widget: text, required: false } - { label: 英文, name: en, widget: text, required: false } - { label: 链接(可选), name: href, widget: string, required: false } - label: 角标(可选) name: tag widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 时间线 name: timeline widget: object hint: 时间线:一条时间 + 标题 + 描述;时间可写自由文本(如 2024 — 2026) fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 标题(可选) name: title widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 条目 name: items widget: list summary: '{{fields.time}} · {{fields.title.zh}}' fields: - { label: 时间, name: time, widget: string, hint: '自由文本,如 2024 — 2026' } - label: 标题 name: title widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 描述(可选) name: desc widget: object required: false fields: - { label: 中文, name: zh, widget: text, required: false } - { label: 英文, name: en, widget: text, required: false } - label: 引文 name: quote widget: object hint: 单句引文 + 可选署名;配 font-kai 排版效果更好 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 引文 name: text widget: object fields: - { label: 中文, name: zh, widget: text, required: false } - { label: 英文, name: en, widget: text, required: false } - label: 出处(可选) name: cite widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 图片 name: figure widget: object hint: 单图 + 可选说明;图片只能后台上传(落 content/site/assets),禁外链 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - { label: 图片(必填,请用后台上传), name: image, widget: image, hint: '禁止填外链:只能上传(落 content/site/assets/),走 Astro 图片管线' } - { label: 替代文本(无障碍), name: alt, widget: string, required: false } - label: 图注(可选) name: caption widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 链接清单 name: linklist widget: object hint: 链接清单(标签 + 链接 + 备注),适合「相关阅读 / 外部资源」 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 标题(可选) name: title widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 链接条目 name: items widget: list summary: '{{fields.label.zh}} → {{fields.href}}' fields: - label: 名称 name: label widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - { label: 链接, name: href, widget: string } - label: 备注(可选) name: note widget: object required: false fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 行动按钮 name: cta widget: object hint: 行动按钮(文案 + 链接 + 按钮字);一页建议不超过一个 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 说明文字 name: text widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - { label: 按钮链接, name: href, widget: string } - label: 按钮文字 name: label widget: object fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 分隔 name: divider widget: object hint: 分隔块:细分隔线或纯留白,给长页分段 fields: - { label: 显示, name: enabled, widget: boolean, required: false, default: true } - label: 样式 name: style widget: select required: false default: line options: [{ label: 细分隔线, value: line }, { label: 纯留白, value: space }] - label: 名片区开关 name: layout widget: object required: false hint: 关掉则不显示头像/名字/社交(它们的数据在「主页设置」) fields: - { label: 显示名片区, name: showIdCard, widget: boolean, required: false, default: true } - label: 正文回退(blocks 为空时用,markdown,多段) name: intro widget: object required: false hint: 仅在「页面块」为空时渲染;与块同时存在时以块为准 fields: - { label: 中文, name: zh, widget: markdown, required: false } - { label: 英文, name: en, widget: markdown, required: false } - label: 页面排版覆盖(可选) name: typography widget: object required: false hint: 本页正文默认字体 / 强调色 / 字号缩放(0.8–1.25);不填用全站默认,只影响本页 fields: - label: 正文字体类 name: font widget: select required: false options: [font-serif, font-kai, font-sans, font-mono, font-song, font-kai-sys, font-hei-sys, font-fangsong, font-huiwen, font-kuaile, font-xiaowei, font-huangyou, font-mashanzheng, font-liujianmaocao, font-smiley, font-neoxihei] - label: 强调色类 name: accent widget: select required: false options: [ink-accent, ink-accent-soft, c-blue, c-blue-soft, c-teal, c-teal-soft, c-green, c-green-soft, c-yellow, c-yellow-soft, c-orange, c-orange-soft, c-red, c-red-soft, c-pink, c-pink-soft, c-purple, c-purple-soft] - { label: 字号缩放, name: scale, widget: number, required: false, value_type: float, min: 0.8, max: 1.25, step: 0.05 } - name: opensource label: 开源页 file: content/site/opensource.yaml format: yaml fields: - label: 打字机动效文案(可选,≤6 条) name: typing widget: list required: false summary: '{{fields.zh}}' hint: '档案卡顶部逐字打出的几行文案,2–6 条最佳;留空用内置默认。中英各一行,切换语言同步' fields: - { label: 中文, name: zh, widget: string } - { label: English, name: en, widget: string } - label: 叙述(推荐改这里) name: story widget: object required: false hint: '整段叙述写成一个字段即可(markdown + 排版类),链接直接写在句子里:[本站源码](https://git.wait4x.online/wait4x/blog) —— 这样就不用再分"链接前/链接后"。留空时才会退回下面的旧字段拼接' fields: - { label: 中文, name: zh, widget: markdown, required: false } - { label: English, name: en, widget: markdown, required: false } - label: 叙述(旧:链接前) name: blurb widget: object required: false hint: 'legacy:仅当上面的「叙述」为空时才使用(历史字段,为把仓库链接夹在中间而拆成两半)' fields: - { label: 中文, name: zh, widget: string, required: false } - { label: 英文, name: en, widget: string, required: false } - label: 页面排版覆盖(可选) name: typography widget: object required: false hint: 本页正文默认字体 / 强调色 / 字号缩放(0.8–1.25);不填用全站默认,只影响本页 fields: - label: 正文字体类 name: font widget: select required: false hint: 整页正文换字族;艺术/展示类字族体积大。5i 新增六款(小薇/庆科黄油/马善政/柳建毛草/得意黑/新晰黑)均按站内用字切片,单页增量 27–46KB;站外用字(生僻字)会回落系统字族,需按 docs 里的命令重切 options: [font-serif, font-kai, font-sans, font-mono, font-song, font-kai-sys, font-hei-sys, font-fangsong, font-huiwen, font-kuaile, font-xiaowei, font-huangyou, font-mashanzheng, font-liujianmaocao, font-smiley, font-neoxihei] - label: 强调色类 name: accent widget: select required: false options: [ink-accent, ink-accent-soft, c-blue, c-blue-soft, c-teal, c-teal-soft, c-green, c-green-soft, c-yellow, c-yellow-soft, c-orange, c-orange-soft, c-red, c-red-soft, c-pink, c-pink-soft, c-purple, c-purple-soft] - { label: 字号缩放, name: scale, widget: number, required: false, value_type: float, min: 0.8, max: 1.25, step: 0.05, hint: '0.8–1.25;1 = 全站默认' } - { label: 仓库链接地址, name: repo_url, widget: string, required: false } - { label: 仓库链接文字, name: repo_label, widget: string, required: false } - label: 叙述(链接后) name: blurb_after widget: object fields: - { label: 中文, name: zh, widget: text, required: false } - { label: 英文, name: en, widget: text, required: false } - label: 置顶项目(仓库短名,顺序即展示顺序) name: pinned widget: list required: false hint: '如 blog;留空则回落默认 blog。填写的名字须与仓库短名一致' - label: 项目墙模式 name: mode widget: select required: false default: all options: [{ label: 全部, value: all }, { label: 仅白名单, value: only }, { label: 排除黑名单, value: exclude }] hint: only/exclude 需配合下面的名单 - label: 白名单(仓库短名) name: include widget: list required: false hint: 'mode=仅白名单时生效,如 pi-board' - label: 黑名单(仓库短名) name: exclude widget: list required: false hint: 'mode=排除黑名单时生效,如 blog' - label: 排序 name: sort widget: select required: false default: pinned-first options: - { label: 置顶优先,其余按星数, value: pinned-first } - { label: 星数降序, value: stars } - { label: 最近更新, value: updated } - label: 来源过滤 name: perSource widget: select required: false default: both options: [{ label: 双源合并, value: both }, { label: 仅 GitHub, value: github }, { label: 仅自托管 gitea, value: gitea }] - label: 开篇文案来源 name: intro_from widget: select required: false default: 'off' options: - { label: 用本页叙述(默认), value: 'off' } - { label: GitHub profile README, value: github-readme } hint: 'github-readme = 构建期取 wait4xx/wait4xx 的 README 渲染为开篇;缓存入仓 content/.github-readme.md,取不到自动回落叙述'