目录

Hugo 写作提示


1 标题(必写)

Hugo 使用的是 frontmatter 里的 title 属性作为标题。

Hugo 不在乎你的文件名,可以随便取,不在乎你 Markdown 文档里的一级标题。

2 日期(必写)

在 frontmatter 里指定 date 属性,不用全部写完,写成"2022-6-20"这种形式就可以了(注意没有前导 0)。

日期格式不能写错,一旦写错 hugo 会当这个文件不存在

如果不写,日期会是 0000-00-01,这样会让博客排到最后一页去(默认是按更新顺序排列博客,权重高的例外),不符合直觉。

3 banner(可选)

因为浏览器的同源策略,banner 只能放在本地,不能使用其他网络图片。 img, script, link 标签没有同源策略。

添加方法:在 frontmatter 里设置 resources,“featured-image"即为 banner。

1
2
3
resources:
- name: "featured-image"
  src: "<相对于本markdown的路径>"

如果希望首页内文章列表的 banner 和文章内的 banner 分开,可以增加 featured-image-preview 属性。

如果不分开,那么 featured-image-preview 的图片会是 banner 图片遮住上下保留中间的图。

1
2
3
4
5
resources:
- name: "featured-image"
  src: "<相对于本markdown的路径>"
- name: "featured-image-preview"
  src: "<相对于本markdown的路径>"

4 权重(可选)

权重可以让首页博客列表的排序不完全按照修改日期来排,权重高的会排在前面,可以起到置顶文章的目的。

1
weight: <一个很大的值>

5 posts 文件夹组织

如果要放到文件夹内,那么文件夹名称中不能含有中文和空格。

对于这样一个组织结构

1
2
3
4
5
posts
  |- topic
    |- index.md
    |- index.en.md
    |- some_writing.md

访问 /topic 时,会打开 index.md 对应的文章。(其他的生成器可能用 README.md 作为索引)

如果在顶栏中指定语言,比如英语(en),那么会打开 index.en.md 对应的文章。

访问 /topic/some_writing.md 时,可以访问到 some_writings.md。 而如果这个文件放在 posts 下,那么不需要中间加上 topic.

6 严格换行

markdown 里其实严格换行需要两个回车(即空一行)才能真正断开和上一个元素的连接,Hugo 遵循了这一原则。 对于一个回车(即换一行接着写),相当于和上一行拼在一起。

而有些 markdown 编辑器(typora, obsidian),默认没有开启严格换行。所以在编写博客文章时,注意这个 gap.

1
2
3
4
你以为我换行了
其实没有

真要换行还得空一行

你以为我换行了 其实没有

真要换行还得空一行

7 tags 和 categories

注意 tags 和 categories 都是列表,不是字符串,写成字符串会导致 hugo 渲染失败。

tags 系统和 obsidian 的是兼容的,在 frontmatter 里指定 tags 属性即可。

categories 是和 tags 并行的一套系统,主要用来像文件夹一样唯一分类。 在本地浏览的时候可能刷新 /categories 页面,但是上线后是正确的。

8 完全引用他人文章

每篇文章的作者和作者链接是可以单独设置的,只是如果你不设置,默认是你自己。

1
2
author: "FeelIt"
authorLink: "https://feelit.khusika.com"