Frontmatter 路由
在设置页写一条
album = trip → wide,这篇笔记就会套用 wide 模板;匹配是精确字符串比较,顺序从上往下。
一条路由的结构
| 字段 | 含义 | 示例 |
|---|---|---|
| 字段名 | frontmatter 的键 | album |
| 字段值 | 要匹配的值 | trip |
| 路由模板 | 命中后使用哪个模板 | wide |
| 启用 | 是否参与匹配 | 开 |
yaml
---
album: trip
---这篇笔记写 album: trip,就命中上面那条路由。下面是同一张 1:1 标定图在两个模板下的差别:
markdown

在 auto 模板下它约占栏宽的四成;命中 wide 后变成 68%(760px 栏宽下约 517px),仍然居中。
竖图则不同;wide 的第三条规则将其压窄并固定靠左:
markdown

模板的主要价值在于:同一批素材更换模板即可改变整套节奏,无需修改任何单图参数。
匹配规则
| 行为 | 说明 |
|---|---|
| 比较方式 | 键与值都做 trim() 后精确相等;Trip 不等于 trip |
| 顺序 | 从上往下,第一条命中即停止 |
| 缺省 | 没有命中任何路由时使用 auto |
| 优先级 | 图片自己的 ag:width / ag:layout / ag:side 高于模板规则 |
数组值会被拼成字符串
frontmatter 里的数组会被拼成逗号分隔的字符串再比较:
yaml
tags: [a, b] # 实际参与比较的是 "a,b"所以 tags 不适合做路由键;除非每次都写入完整字符串。用单个字符串字段(如 album、role、series)更可靠。
适用路由的场景
| 场景 | 建议 |
|---|---|
| 同一库里教程要小图、作品集要大图 | 用路由,按目录或属性分层 |
| 只有一两张图要特殊宽度 | 直接写 ag:width,不要为两张图建模板 |
| 整篇都要窄一点 | 用路由,比在几十张图上重复参数省事 |
| 需要按文件夹区分 | 路由只认 frontmatter,不认路径;在每篇笔记里写一个字段 |
排查
| 现象 | 原因 |
|---|---|
| 路由不命中 | 大小写不一致,或值前后有空格(插件会 trim,但键名不会模糊匹配) |
| 命中了但没变化 | 模板规则为空,或图片都写了 ag:width |
| 改了模板但笔记没变 | 模板是按「当前笔记」解析的,切换笔记或重新打开才会重算 |