记录一些实用Hugo写博客的小技巧。
—— 因为如果当时不记录,那么日后肯定不会再记录的!(懒!)
使用Archetype预设模版
在使用 hugo new
命令创建新内容时,你可以指定使用特定的 archetype。Archetype 是 Hugo 中的模板文件,用于预设新内容文件的元数据和结构。默认情况下,Hugo 会使用名为 default.md
的 archetype,但可以创建和指定其他 archetype 来满足不同类型内容的需求。
创建自定义 Archetype
-
在 Hugo 站点的根目录中,
archetypes
目录用于存放 archetype 文件。 -
可以在这个目录下创建新的 archetype 文件。例如,创建一个名为
blog.md
的文件,用于博客帖子:archetypes/blog.md
-
编辑
blog.md
文件,定义你想要预置的内容和 Front Matter,例如:--- title: "{{ replace .Name "-" " " | title }}" date: {{ .Date }} draft: true tags: [] --- 在这里写博客内容...
使用自定义 Archetype 创建内容
当创建新内容时,可以通过指定 archetype 的名称来使用它。格式如下:
hugo new <路径>/<文件名>.<扩展名> --kind <archetype名称>
或者,如果创建的内容直接位于 archetypes 下的同名目录中,你只需指定路径,Hugo 会自动寻找匹配的 archetype。例如,如果有一个名为 blog.md
的 archetype,就可以这样创建新的博客帖子:
hugo new blog/我的新博客帖子.md
这里,Hugo 会在 archetypes
目录下寻找名为 blog.md
的文件,并使用它作为新内容文件的模板。
如果想显式地使用特定的 archetype 而不依赖于目录结构,可以使用 --kind
参数,像这样:
hugo new posts/我的新博客帖子.md --kind blog
这命令会创建一个新的内容文件 posts/我的新博客帖子.md
,并使用 archetypes/blog.md
作为模板。
在文章内链接导航其他文章
在Hugo中创建文章间的超链接,最佳实践是使用相对URL或者Hugo的内置函数来生成URL。这样做的好处是可以保持链接的持久性,即使你的站点URL发生变化,链接也不会断裂。以下是几种在Hugo中链接到另一个本地文章的方法:
1. 使用相对URL
如果知道目标文章的路径,可以直接在Markdown文件中使用相对URL创建链接。例如,如果想从位于 /content/posts/my-first-post.md
的文章链接到 /content/posts/my-second-post.md
,可以这样写:
请查看我的[第二篇文章](../my-second-post/)
这里使用的是相对于当前文件的路径。注意,链接的路径部分应该与目标Markdown文件的位置相对应,且通常情况下,不包括文件扩展名.md
。
2. 使用Hugo的ref
和relref
短代码
Hugo提供了ref
和relref
短代码,这两个短代码可以生成到站点内任何页面的永久链接。这是一种更健壮的链接方法,因为它不依赖于站点的部署路径。这两个短代码的区别在于ref
可以用于任何站点(得到绝对路径)页面,而relref
仅用于相同语言(得到相对路径)的页面。
假设想链接到位于/content/posts/know/blog-tips.md
的文章,可以在任何Markdown文件中这样写:
请查看我的[第二篇文章](两个{< relref "/posts/know/blog-mac-style-code.md" >两个})
实际效果就是这样的:
请查看我的[第二篇文章](/posts/know/blog-mac-style-code/)
或者
请查看我的[第二篇文章](两个{< ref "/posts/know/blog-mac-style-code.md" >两个})
实际效果如下:
请查看我的[第二篇文章](https://ahaknow.com/posts/know/blog-mac-style-code/)
使用ref
或relref
短代码时,需要指定目标文件的路径从content
目录的下一个目录开始(也就是hugo new
时使用的路径文件名)。
- 当使用
ref
和relref
短代码时,确保路径是从content
文件夹开始的相对路径,并且包括文件的扩展名.md
。 - 如果站点支持多语言,
relref
是链接到当前语言下的相对内容,而ref
可用于链接到任何语言的内容(因为hugo的不同语言通过url区分)。 - 使用
ref
和relref
的另一个好处是,如果目标链接不存在,Hugo在构建站点时会报错,这有助于你及时发现并修正死链(所以上述使用的是真实存在的文件路径)。