前言


若對 MarkDown 語法還不熟悉,可以參考 HackMD 提供的 MarkDown語法大全

結構介紹


使用 hugo new site [project name] 新增專案後,會在專案內部生成以下項目結構:

.
├── archetypes/
│   └── default.md
├── assets
├── content
├── data
├── hugo.toml
├── layouts
├── static
└── themes

ㄧ、archetypes

存放文章模板,預設有 archetypes/default.md 作為初始模板,新增文章時會自動套用。

# default.md
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

但若有對應文章資料夾名稱的模板時會優先套用該模板。

二、assets

若有使用 Hugo Pipes,需要將 Pipes 會用到的靜態資源都放到 assets 裏。

m10c 主題為例,若要覆蓋元件樣式,需要在 assets 新增 css/_exrea.scss

Difference between asset and static folder?

三、content

存放 hugo new 新增的文章,可搭配 archetypes 讓新文章自動套用各文章分類的模板。如以下:

首先加入 archetypes/articles.md,再新增對應模板分類名稱的文章

hugo new articles/create-blog-1-prepare.md

會生成:

.
├── content/
│   └── articles/
│       └── create-blog-1-prepare.md

articles 對應到 articles.md 模板名稱, 所以 create-blog-1-prepare.md 會自動套用 articles.md 模板。

四、data

根據 官方介紹 data 資料夾可以存放靜態資料,如:JSON、YAML、TOML。

可在模板直接讀取做輸出,進一步確保資料夾職能單一,不會有太多污染。

五、hugo.toml

舊版 Hugo 會生成 `config.toml`

環境參數配置檔,用於設置網站建置參數、模板參數。

以此部落格為範例:

baseURL = 'https://shanelin-blog.com/'   # 網站網址。
title = 'Shane Lin' # 網站預設標題。
theme = 'm10c'      # 指定樣式。
paginate = 10       # 每頁文章數,預設為 10。

[taxonomies]        # 要啟用哪些文章分類。
  category = "categories"
  tag = "tags"

[params]            # 設置模板參數,非固定,需依照各模板需求做配置。
  author = "Shane Lin"
  ...

[menu]              # 設置模板 menu 參數。
  [[menu.main]]
    identifier = "home"
    name = "Home"
    url = "/"
    weight = 1
  ...

更多配置可參考 Configure Hugo

六、layouts

存放客製化佈景元件,在 .md 中無法直接使用 HTML,但可以根據 Create your own shortcodes./layouts/shortcodes 中加入屬於自己的元件。

在 Hugo 中,預設 MarkDown 連結語法會導航本站到目標網站:

[連結名稱](https://google.com "游標顯示")

這時就可以透過 shortcodes 做出開新分頁的連結元件(HyperLink.html):

.
├── layouts
│   └── shortcodes # shortcodes 為約定資料夾名稱,不可異動。
│       └── HyperLink.html
// HyperLink.html
<a href="{{ .Get "href" }}" rel="noopener" target="\_blank">{{ .Get "title" }}</a>

.md 中使用:

// 要去掉 {{ 和 }} 內的頭尾空白。
{{ <HyperLink href="https://google.com" title="Google"> }}

七、static

存放靜態資源檔案,如:圖片、js、css 等。

八、themes

存放各種佈景主題,可透過 hugo.tomlconfig.tomltheme 切換主題,以 Hugo 自架部落格(一)- 準備 為例,將會看到:

.
├── themes
│   └── m10c
Hugo 自架部落格(三)- 搭配 Godaddy 部署到 Cloudflare Pages