文章元数据¶
写着写着发现一个问题:文章页只有标题和正文,没有作者,也没有日期。读者不知道这是谁写的、什么时候写的、最近改没改。
于是给每个页面补了一段 front matter:
| YAML | |
|---|---|
1 2 3 4 5 6 7 | |
日期从哪来¶
这些文章大部分没记写作日期。想了一圈,最可靠的时间线其实是 git 提交记录:
date取第一次提交的日期,算作「文章发布」;updated取最后一次提交的日期,算作「最后修改」;- 两者同一天就不写
updated。
我写了个一次性脚本,把 28 个页面的 front matter 全补上。作者一栏,原创的写我自己,转载和翻译的写原作者。
怎么显示出来¶
Material 不会自动显示这些字段,得自己动手。加了个构建钩子 hooks/page_meta.py,在渲染前把一段元数据插到正文第一个 H1 后面:
| Python | |
|---|---|
1 2 | |
页面上就是标题下面一行小字——作者、发布于、更新于——再加一段摘要。没有 updated 就不显示「更新于」,整页没有 front matter 就整块不显示。
首页也吃这套数据¶
首页那个「最近更新」的列表,用的就是这些字段。这里定了个优先级。
排序上,先看 updated,没有再退到 date,最后才用 git 提交时间兜底。因为一篇老文章如果最近改过,应该重新冒到前面,而不是按发布日一直沉底。
摘要上,优先用作者写的 description,没写才从正文第一段截。毕竟 description 是我特意写给读者看的,机器截的那句经常不是重点。
一个附带的好处¶
description 会被 Material 顺手写进页面的 <meta name="description">。之前所有页面共用一句站点描述,现在每篇都有自己的,对搜索收录也好一点。