內容是站點最基本,也是最核心的部分,本文將介紹內容的一些基本概念,以及如何創建內容。
1tree content/blog
2content/blog
3├── _index.md
4├── hello.md
5├── foo
6| ├── feature.png
7│ ├── bar.md
8│ └── index.md
9├── posts
10│ ├── _index_.md
11│ ├── post-1.md
12│ └── post-2.md
以上內容結構具有:
blog/hello/
, blog/foo/
、blog/posts/post-1/
和 blog/posts/post-2/
。_index.md
的目錄):blog
和 posts
。hello.md
、posts/post-1.md
和 posts/post-2.md
。index.md
的目錄):foo
。Leaf bundle 將作爲一篇常規頁面,其餘的內容將作爲其頁面資源,如 foo/bar.md
是一個頁面資源,而非單頁內容。詳情請查閱 Content Organization 和 Page Bundles 。
通過 hugo new
命令創建內容。
1hugo new blog/hello/index.md
該命令將於 content
目錄下創建一個 blog/hello/index.md
的內容頁面,其初始內容類似如下:
1---
2title: "Hello"
3date: 2023-03-08T11:02:23+08:00
4draft: true
5---
draft: true
),在發佈之前,可以通過指定 hugo server
的 --buildDrafts
或 -D
參數進行預覽。當內容準備就緒,則需要將 draft
改爲 false
或者刪除 draft
以發佈該內容。內容原型是用於創建內容的模板,可以定義一些初始化的參數和內容,比如以下 notes
原型指定 type
爲 docs
以使用 docs
佈局。
1---
2type: docs
3title: '{{ replace .Name "-" " " | title }}'
4date: {{ .Date }}
5draft: true
6---
當創建時,將會使用對應的模板生成初始內容。
1hugo new notes/foo.md
2Content "content/notes/foo.md" created
1cat content/notes/foo.md
2---
3type: docs
4title: 'Foo'
5date: 2023-04-12T14:35:35+08:00
6draft: true
7---
詳情請查閱原型。
每個內容頁面由前言和主體構成。
1FRONT MATTER
2
3CONTENT BODY
也就是 Front Matter,用於定義內容的參數,如標題、日期、標籤、分類等。
Hugo 支持三種前言格式:YAML
、TOML
和 JSON
。
YAML 前言由 ---
包裹起來。
1---
2title: "Hello"
3---
TOML 前言由 +++
包裹起來。
1+++
2title = "Hello"
3+++
JSON 前言由 {
和 }
包裹起來,後跟一個新行。
1{
2 "title": "Hello"
3}
也就是字面上的內容本身,支持 Markdown 和短代碼編寫內容。