前情提要
上一篇 Hugo 架站教學 - 建立網站 說明如何新增網站,在本機編譯及上傳版本控制。主題設定也是我碰到最多問題的地方,所以本篇會著重在系統主題設定,並且進行網站佈署。
步驟上沒有先後,可以先佈署在做主題設定,也可以先設定主題在佈署,我採用後者。
重點
- 主題設定
- 佈署網站
Visual Studio Code
在配置 Hugo 主題前,需要一個編輯器來調整網站的相關設定。我推薦用 Visual Studio Code(VS Code) 編輯檔案。它輕量、免費,支援 Markdown 和 TOML,適合 Hugo 專案。加裝 hugo 相關套件 擴充方便。但想使用其他編輯器也行。
開啟專案
- 開啟 Visual Studio Code,開啟終端機「control + `(數字 1 的左邊)」

- 切換 HugoSampleSite 目錄
| 1
 | cd Documents/HugoSampleCode
 | 
- 開啟 HugoSampleCode 專案
-r:reuse this window,使用目前的視窗
.:目前的目錄
如果沒有 -r,vscode 會在新的視窗開啟專案,整行指令的意思是說,用目前 vscode 視窗開啟目前所在目錄檔案

開啟後可以看到左邊 檔案總管 有完整的專案目錄
主題設定
主題設定參考下列兩個網站
- Hugo 官網
- Stack 主題官網
開啟目錄下的 hugo.toml,這個檔案就是網站的設定檔,開啟後會看到之前設定所套用的主題名稱。
| 1
 | theme = 'hugo-theme-stack'
 | 

到 Stack 主題官網設定說明,可以看到設定檔接受 3 種格式,可以選擇自己喜歡或習慣的格式來調整。
- TOML:- .toml
- YAML:- .yaml
- JSON:- .json
由於我比較習慣 yaml,所以我會先把 toml 轉成 toml,網路上有很多轉換工具,如 https://transform.tools/toml-to-yaml 將設定檔內容做轉換,並將 hugo.toml 存成 hugo.yaml

預設的設定
建立網站時的初始設定
baseUrl
網站的網址,本機開發不需要去改它,如果之後買自己的網址才需要去更改。
參考 hugo baseUrl configuration
languageCode
網站的語系編碼,這個下面的設定會調整。參考 語系設定
title
網站的標題,也就是標籤上顯示的標題,這邊改成 HugoSampleSite。
hugo.yaml
並在終端機將本機網站執行

theme
套用的主題名稱,前一篇已經知道了
本機執行
在改完設定後,可以直接儲存,不需要重新啟動本機伺服器,hugo 會即時渲染最新結果
如果想要結束本機執行,在終端機按下「control + c」
語系設定
下面有兩種設定方式可以擇一設定,如果設定了可以刪除初始的語系設定。
Stack i18n
Stack 主題使用 i18n 來設定網站的語系,在 hugo.yaml 加入繁體中文設定,儲存。
如果還在執行模式就可以切換到瀏覽器查看最新結果
| 1
2
3
 | # 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
 | 

Hugo 內建語系設定
在 Hugo 內建的語系設定 會發現 languageCode 的設定結構不太一樣,如果有需要更細的設定或其他客製需求,可以把 Configure languages 的設定值複製下來,改成中文設定。
相關設定如下
- disabled:不翻譯網站內容,預設是啟用翻譯功能
- languageCode:網頁內容語系編碼 zh-tw(臺灣繁體中文),你會發現上面初始設定有一個一樣的設定,可以刪除初始設定的語系。
- languageName:語言名稱
- title:可以針對這個語系設定標題
- weight:語系的排序
- languageDirection:文字閱讀方向,左到右或右到左,不需要可以刪除,採網頁預設的方向。
另外要注意的是,如果是用 Hugo 內建的語系設定方法,需要提供 defaultContentLanguage 這個設定,因為 Hugo 預設是英文,要將它設定成 zh-tw
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 | defaultContentLanguage: zh-tw
languages:
  zh-tw:
    disabled: false
    languageCode: "zh-tw"
    languageName: "中文"
    title: "示範網站"
    weight: 1
# 如果需要其他語系設定,可以再複製 zh-tw 再修改成其他語系
# en:
#   disabled: false
#   languageCode: "en"
#   languageName: "English"
#   title: "HugoSampleSite"
#   weight: 2
 | 
語系總結
最後設定完,設定檔 hugo.yaml 會長這樣,如果是用 Hugo 內建的設定要注意每個語系的結構,語系的最上層要對齊,跟 Python 一樣是用縮排在表示物件結構
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 | baseURL: https://example.org/
title: HugoSampleSite
theme: hugo-theme-stack
# 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
# 參考 https://gohugo.io/content-management/multilingual/#configure-languages
# 因為 Hugo 預設的系統語言是英文,所以需要將預設的語言改成中文
# defaultContentLanguage: zh-tw
# languages:
#   zh-tw:
#     disabled: false
#     weight: 1
#     languageCode: zh-tw
#     languageName: 中文
#     title: "示範網站"
 | 
這裡特別說明一下,我每做完一個設定就會上傳一個版本,你也可以等到所有設定都完成後一次上傳,上傳流程請參考上一篇 第一版程式上傳,如果要上版的話,請先結束執行中的網站「control + c」,才有辦法上傳。
Site-Wide 設定
參考 Site-Wide settings
全站設定,會套用到整個網站,在 params 的下面,也就是說架構要像下面這樣
這裡不會全列出來,只說明幾個比較會用到的。
mainSections
指首頁或文庫頁要呈現的內容,預設是 post,也就是 post 目錄 下的內容,因此可以將 po 文都放在 post 目錄下,可以改成自己想要的目錄,呈現自己想要的內容,範例用預設值就好
| 1
2
 | params:
  mainSections: <dirname>
 | 
featuredImageField
這個設定關係到 po 文,featuredImage 就是 po 文上面的縮圖

而 featuredImageField 就是 po 文上面的圖片,設定的欄位要叫什麼,預的名稱是 image
也就是說如果在 hugo.yaml 設定改成 img
| 1
2
 | params:
  featuredImageField: img
 | 
那在 po 文的地方,想要加入縮圖的話就要變成下面這樣
index.md
favicon
就是網頁標籤左邊的縮圖,可以不設定

Site-wide 總結
簡單來說上面的三項設定,都可以用預的值,所以 hugo.yaml 設定檔不變
參考 Date format 設定
日期的格式設定,需要放在 params 下面,格式如下
| 1
2
3
 | params:
  dateFormat:
    # 其它日期格式相關設定
 | 
這裡要特別注意,Hugo 是用 Go 語言寫出來的,所以要用的日期格式設定。
而 Go 的日期與其他程式語言不同,不是用字串模版的產生的
如 C#,yyyy(4 位數年份)、MM(2 位數月份,不足補 0)、dd(2 位數的日期,不足補 0)
| 1
2
3
4
5
 | DateTime Now = DateTime.Now;
Console.WriteLine($"{Now:yyyy-MM-dd}");
// Output 2025-03-04
 | 
Go 有一個固定的日期,一定要是 2006 年 1 月 2 日,下午 3 點 04 分 05 秒,我原本以為是個隨意的日期,所以就設定成了架設網站當天的日期,結果 po 文的時間完全的錯的。
後來 Google 才知道原來這是故意設計的,上面的時間點會變成 6 1 2 3 4 5 沒有一個數字是重複的
published
在 dateFormat 下面,po 文日期的呈現樣式設定(可以參考 featuredImage 那張圖,閱讀時間旁有 po 文的日期),這邊改成我比較熟悉的格式
| 1
2
3
4
5
 | params:
  # 日期格式設定
  dateFormat:
    # po 文日期格式設定
    published: 2006-01-02
 | 
lastUpdated
一樣在 dateFormat 下面,po 文最後更新時間格式的設定,在 dateFormat 下面加上,T 用來分隔日期跟時間,+0800 是因為臺灣的時區是 GMT+8
| 1
2
 | # 最後更新時間格式設定
lastUpdated: 2006-01-02T15:04+0800
 | 
最後完成的設定檔如下
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 | baseURL: https://example.org/
title: HugoSampleSite
theme: hugo-theme-stack
# 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
# 參考 https://gohugo.io/content-management/multilingual/#configure-languages
# 因為 Hugo 預設的系統語言是英文,所以需要將預設的語言改成中文
# defaultContentLanguage: zh-tw
# languages:
#   zh-tw:
#     disabled: false
#     weight: 1
#     languageCode: zh-tw
#     languageName: 中文
#     title: "示範網站"
params:
  # 日期格式設定
  # 參考 https://stack.jimmycai.com/config/date-format
  dateFormat:
    # po 文日期格式設定
    published: 2006-01-02
    # 最後更新時間格式設定
    lastUpdated: 2006-01-02T15:04+0800
 | 
設定完成後,將程式上傳到 GitHub。
參考 Sidebar 設定
左邊選單的相關設定,一樣放在 params 下面
subtitle
在 sidebar 的下面,設定副標題,在網頁圖像下方標題的下方,有一行更小的文字
| 1
2
3
4
5
6
 | params:
  # 左邊選單設定
  # 參考 https://stack.jimmycai.com/config/sidebar
  sidebar:
    # 設定網頁副標題
    subtitle: 這是一個教學範例網站
 | 
設定完成後,編譯並執行網站

avatar
在 sidebar 下面,網站頭像設定
| 1
2
3
4
 | params:
  sidebar:
    avatar:
      # avatar 相關設定
 | 
enabled
是否啟用頭像,預設是啟用
local
頭像是否是網站內的資源,預設是 true,也就是說如果你要用網路資源的話,要將這個值設成 false。
如果使用預設值的話,需要將圖片檔案下載放到目錄下的 assets/img 資料夾,在編譯時會將 img 目錄帶過去 public,這樣下一個屬性才有辦法做用,千萬不要放在 static/img
| 1
2
3
4
5
 | params:
  sidebar:
    avatar:
      # 如果要用網路資源
      local: false
 | 
src
頭像的來源,預設是 img/avatar.png,如果上一設定設成 false,可以設成網路圖像的連結;反之,就要將圖片下載至 assets/img 目錄,沒有這個目錄的話,可以自已建
| 1
2
3
4
 | params:
  sidebar:
    avatar:
      src: https://cdn3d.iconscout.com/3d/premium/thumb/boy-avatar-3d-icon-download-in-png-blend-fbx-gltf-file-formats--boys-male-man-pack-avatars-icons-5187865.png?f=webp
 | 
設定完成後,可以在 hugo server 中看執行的結果

最後本教學是採用網路資源,設定檔完成後會變成下面
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 | baseURL: https://example.org/
title: HugoSampleSite
theme: hugo-theme-stack
# 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
# 參考 https://gohugo.io/content-management/multilingual/#configure-languages
# 因為 Hugo 預設的系統語言是英文,所以需要將預設的語言改成中文
# defaultContentLanguage: zh-tw
# languages:
#   zh-tw:
#     disabled: false
#     weight: 1
#     languageCode: zh-tw
#     languageName: 中文
#     title: "示範網站"
params:
  # 日期格式設定
  # 參考 https://stack.jimmycai.com/config/date-format
  dateFormat:
    # po 文日期格式設定
    published: 2006-01-02
    # 最後更新時間格式設定
    lastUpdated: 2006-01-02T15:04+0800
  # 左邊選單設定
  # 參考 https://stack.jimmycai.com/config/sidebar
  sidebar:
    # 設定網頁副標題
    subtitle: 這是一個教學範例網站
    # 設定網站頭像
    avatar:
      src: https://cdn3d.iconscout.com/3d/premium/thumb/boy-avatar-3d-icon-download-in-png-blend-fbx-gltf-file-formats--boys-male-man-pack-avatars-icons-5187865.png?f=webp
      local: false
 | 
這邊在上一版程式
有寫過 HTML 的話應該會知道 footer,就是網頁最下方的區塊。
相關設定參考 Footer Configuration
結構上一樣是放在 params 的下面
| 1
2
3
 | params:
  footer:
    # 其他 footer 的相關設定
 | 
我不打算改動它,直接用預設的就好,不過還是介紹一下。至於為什麼會在這麼上的位置,是因為目前還沒有任何的 po 文,而主題 footer 的設定應該不是固定在底部的,所以才會往跑。

since
是網站創建的時間(年),以今年為例
| 1
2
3
 | params:
  footer:
    since: 2025
 | 
customText
想要在 footer 顯示的文字,可以是純文字,也可以是一段 HTML
| 1
2
3
 | params:
  footer:
    customText: Footer 的文字測試
 | 

由於我沒有對 footer 設定進行更動,所以這邊不做版本上傳,有興趣的可以自己嘗試。
Article
po 文相關的設定,可以參考 Article configuration
結構如下
| 1
2
3
 | params:
  article:
    # 其他 Article 相關設定
 | 
math
Hugo 的 po 文是採用 Markdown 語法所寫出來的,最後在編譯成 HTML 檔案,而 Markdown 支援數學公式,這個設定主要是開啟數學公式的支援,讓你可以在 po 文中寫數學公式
不過我想一般的使用者應該不太有這個需求,所以就不特別做設定。
| 1
2
3
 | params:
  article:
    math: true
 | 
toc
全文是 table of content,就是目錄的意思,是否要顯示 po 文的目錄。要特別注意的是,需要在之後的 小工具 也做一樣的設定,才會生效。
| 1
2
3
 | params:
  article:
    toc: true
 | 
以本篇為例

readingTime
閱讀時間的顯示設定,預設是開啟的,所以可以不動,圖片可以參考目錄那張副標題下方有一個閱讀時間:5 分鐘,如果不想顯示在把它設定關閉。
| 1
2
3
4
 | params:
  article:
    # 如果要不顯示閱讀時間
    readingTime: false
 | 
license
授權的相關設定,也就是你是否要授權其他人轉載你的 po 文。預設是使用 Licensed under CC BY-NC-SA 4.0 授權。
結構如下
| 1
2
3
4
 | params:
  article:
    license:
      # 其他 license 相關設定
 | 
enabled
是否顯示授權條款的文字「Licensed under CC BY-NC-SA 4.0」,預設是不顯示的,但我把它打開
| 1
2
3
4
5
 | params:
  article:
    license:
      # 顯示授權條款文字
      enabled: true
 | 
default
授權條款的文字,使用預設的就可以了,你也可以自己改成其它的條款文字,條款參考
| 1
2
3
4
5
 | params:
  article:
    license:
      # 授權條款文字
      default: <其他授權條款文字>
 | 
Article 總結
以上我們只有設定了 toc、license 的 enabled,其他不動。
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 | baseURL: https://example.org/
title: HugoSampleSite
theme: hugo-theme-stack
# 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
# 參考 https://gohugo.io/content-management/multilingual/#configure-languages
# 因為 Hugo 預設的系統語言是英文,所以需要將預設的語言改成中文
# defaultContentLanguage: zh-tw
# languages:
#   zh-tw:
#     disabled: false
#     weight: 1
#     languageCode: zh-tw
#     languageName: 中文
#     title: "示範網站"
params:
  # 日期格式設定
  # 參考 https://stack.jimmycai.com/config/date-format
  dateFormat:
    # po 文日期格式設定
    published: 2006-01-02
    # 最後更新時間格式設定
    lastUpdated: 2006-01-02T15:04+0800
  # 左邊選單設定
  # 參考 https://stack.jimmycai.com/config/sidebar
  sidebar:
    # 設定網頁副標題
    subtitle: 這是一個教學範例網站
    # 設定網站頭像
    avatar:
      src: https://cdn3d.iconscout.com/3d/premium/thumb/boy-avatar-3d-icon-download-in-png-blend-fbx-gltf-file-formats--boys-male-man-pack-avatars-icons-5187865.png?f=webp
      local: false
  # PO 文相關設定
  # 參考 https://stack.jimmycai.com/config/article
  article:
    # 文章目錄:開啟
    toc: true
    license:
      # 顯示授權條款文字
      enabled: true
 | 
最後再上一版程式
網站小工具的設定,會顯示在網站的右邊,有分類,標籤……等元件。
參考 Widgets configuration
有兩種類型的元件要設定,結構如下
- homepage:首頁元件
- page:非首頁的元件
| 1
2
3
4
5
6
 | params:
  widgets:
    homepage:
      # 其他首頁元件
    page:
      # 其他非首頁的元件設定
 | 
每個類型可以有多個元件,每一個元件設定是一個 map,每一個 map 包含了 type 跟 params 的設定,這個 params 不是最上面的那 params,是元件自已的,不懂沒關係照下面顯示的結構複製貼上就可以了,結構如下
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 | params:
  widgets:
    # 首頁要顯示的元件
    homepage:
      # map 用「-」開頭
      - type: search # 一個搜尋類型的元件,不是所有元件都有 params 的設定,請參考官方文件
      - type: tag-cloud # 一個標籤類型的元件
        params:
          limit: 20
    # 非首頁要顯示的元件
    page:
      - type: toc
 | 
元件結果如下圖,接下來會依依說明如何開啟四大元件:搜尋、歴史記錄、分類、標籤。

page
上面 article toc 設定中有提到,所以先講這一個,要顯示 PO 文目錄,需要在 page 的 toc 也要設定,目錄才會顯示
| 1
2
3
4
5
6
7
 | params:
  # 元件設定
  widgets:
    # 頁面的設定
    page:
      # 顯示頁面的目錄
      - type: toc
 | 
homepage
首頁元件的相關設定,要跟 page 在同一層,不過首頁不要開目錄,看官方網站的說明可能會不太懂,直接看下方的結構說明就好。
search
搜尋元件,這裡要特別注意,需要建立一個頁面並套用 search 版型(layout: search),才會生效。我一開始以為是要在 layout 目錄下建立一個 search 專用的頁面,結果一直沒有顯示出來,後來才知道 要在 content/page/search 目錄下建立一個給搜尋用的頁面
| 1
2
3
4
5
6
 | params:
  widgets:
    # 首頁設定
    homepage:
      # 搜尋元件
      - type: search
 | 
接下來建立一個供搜尋用的頁面,使用 hugo 建立新頁的指令 hugo new content,相關說明可以參考 hugo new content,在終端機輸入
| 1
 | hugo new content content/page/search/index.md
 | 
接下來開啟剛剛新增的檔案,改成下面的內容後儲存
| 1
2
3
 | ---
layout: search
---
 | 
執行網站

archives
顯示紀錄,也就是歴史文章,所有你寫的文章會有一個專屬的頁面,跟搜尋一樣,要建立一個專屬的頁面,並套用 archives 版型,另外多了一個 params 的設定。params 裡面包含了一個 limit 的設定,就是要顯示多少年的文章。假設想要顯示過去這 5 年所寫的文章,可以設 5,它就會顯示 2020 ~ 2025 的所有文章,這邊我設成 3 年
注意 params 要跟 type 在同一層,因為屬於同一個 map
| 1
2
3
4
5
6
7
8
 | params:
  widgets:
    homepage:
      # 歷史文庫
      - type: archives
        params:
          # 顯示近 3 年的文章
          limit: 3
 | 
接下來在設定版面,要注意如果網站正在執行中要先停止執行,一樣使用 hugo new content 指令,在終端機輸入
| 1
 | hugo new content content/page/archives/index.md
 | 
再開啟剛剛新增的 index.md,改成下面的內容,套用歷史的版型
| 1
2
3
 | ---
layout: archives
---
 | 
執行網站

categories and tag-cloud
分類跟標籤的設定,因為結構上一樣,所以一起說明
跟 archives 的結構一樣,包成一個 map,map 下有 type 設定元件的類型,接著一個 params,params 下有一個 limit 數字,預設都是 10
- categories 的 limit:分類顯示數量,如果設定 3,最多只會顯示三個分類。如果有第四種分類的文章出現,不會顯示第 4 分類。
- tag-cloud 的 limit:標籤顯示數量,跟分類一樣
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 | params:
  widgets:
    homepage:
      # 分類元件設定
      - type: categories
        params:
          # 最多顯示 5 個分類
          limit: 5
      # 標籤元件設定
      - type: tag-cloud
        params:
          # 最多顯示 20 個標籤
          limit: 20
 | 
執行程式,就會看到標籤元件跟分類元件了,不過因為目前沒有任何 po 文,所以不會有任何的標籤及分類顯示,上一篇會說明如何 po 文。

最後設定完元件,hugo.yaml 設定檔如下
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 | baseURL: https://example.org/
title: HugoSampleSite
theme: hugo-theme-stack
# 網站語系設定
# 參考 https://stack.jimmycai.com/config/i18n
DefaultContentLanguage: zh-tw
# 參考 https://gohugo.io/content-management/multilingual/#configure-languages
# 因為 Hugo 預設的系統語言是英文,所以需要將預設的語言改成中文
# defaultContentLanguage: zh-tw
# languages:
#   zh-tw:
#     disabled: false
#     weight: 1
#     languageCode: zh-tw
#     languageName: 中文
#     title: "示範網站"
params:
  # 日期格式設定
  # 參考 https://stack.jimmycai.com/config/date-format
  dateFormat:
    # po 文日期格式設定
    published: 2006-01-02
    # 最後更新時間格式設定
    lastUpdated: 2006-01-02T15:04+0800
  # 左邊選單設定
  # 參考 https://stack.jimmycai.com/config/sidebar
  sidebar:
    # 設定網頁副標題
    subtitle: 這是一個教學範例網站
    # 設定網站頭像
    avatar:
      src: https://cdn3d.iconscout.com/3d/premium/thumb/boy-avatar-3d-icon-download-in-png-blend-fbx-gltf-file-formats--boys-male-man-pack-avatars-icons-5187865.png?f=webp
      local: false
  # PO 文相關設定
  # 參考 https://stack.jimmycai.com/config/article
  article:
    # 文章目錄:開啟
    toc: true
    license:
      # 顯示授權條款文字
      enabled: true
  # 小元件設定
  # 參考 https://stack.jimmycai.com/config/widgets
  widgets:
    # 頁面設定(非首頁)
    page:
      # 顯示頁面的目錄
      - type: toc
    # 首頁設定
    homepage:
      # 搜尋元件
      - type: search
      # 歷史文庫
      - type: archives
        params:
          # 顯示近 3 年的文章
          limit: 3
      # 分類元件設定
      - type: categories
        params:
          # 最多顯示 5 個分類
          limit: 5
      # 標籤元件設定
      - type: tag-cloud
        params:
          # 最多顯示 20 個標籤
          limit: 20
 | 
結束執行並上版程式。
colorSchema
網站色系的設定,這個主題提供了兩種色系,亮跟暗,參考 Color Schema configuration
結構如下
| 1
2
3
 | params:
  colorSchema:
    # 其他 colorSchema 設定
 | 
toggle
顯示切換色系的開關,預設是開啟的,所以不動
| 1
2
3
4
 | params:
  colorSchema:
    # 如果不想要顯示色系切換的開關
    toggle: false
 | 

default
預設的色系,有兩種情況
- toggle 設定關閉時候,要提供網站預設的色系
- 使用者第一次進入網站時候,預設的網站色系
有 3 個值可以設定
- light:亮色系
- dark:暗色系
- auto:依系統設定的色系,預設的設定
有開關可以切換,所以可以採用預設值
| 1
2
3
4
 | params:
  colorSchema:
    # 如果想要讓使用者第一次進入網站顯示亮色系的話
    default: light
 | 
colorSchema 總結
沒有做任何設定更改,所以不上傳版本控制。
左邊選單設定,也是最後一個要說明的設定。參考 Custom menu

依官方的說明,如果你的選單連結要連到一個頁面的話,可以在頁面的最上方做選單的設定,在 hugo 中最上方的區塊叫 front matter,是頁面或文章的基礎設定,下一篇說明 po 文,會有更詳細的介紹,這裡可以先跟著做就好。
首頁連結
先增加首頁連結,在 mainSections 設定有提到,預設是呈現 po 文的頁面,所以要在 content/post 目錄下新增 _index.md 檔案。一以使用 hugo new content,在終端機輸入,至於為什麼是 _index.md 而不是 index.md 下一篇會再說明
| 1
 | hugo new content content/post/_index.md
 | 
接著開啟剛剛新增的檔案,輸入下面的內容,其實就是官方網站說明中的第一種設定方法,格式也是依照官方網站的設定,可以直接去網站上複製
參數說明如下
- name:連結上要呈現的名稱
- weight: 連結的排序,數字越低排在越上面
- icon:連結的圖示,home 是這個主題有提供的圖示檔,如果要放入自訂的圖示檔,要下載在assets/icons下面
| 1
2
3
4
5
6
7
8
 | ---
menu:
  main:
    name: 首頁
    weight: 0
    params:
      icon: home
---
 | 
儲存後執行,就可看到首頁的選項出現了

關於
再來新增一個關於的連結,要在 content/page/about/ 下新增一個 index.md 檔,在終端機輸入
| 1
 | hugo new content content/page/about/index.md
 | 
開啟剛剛新增的檔案,內容改成下面這樣
| 1
2
3
4
5
6
7
8
 | ---
menu:
  main:
    name: 關於
    weight: 1
    params:
      icon: user
---
 | 
儲存後執行網站,可以看到關於的連結也出現了

結束執行後上版
佈署
最後就剩佈署網站了,我們要將做好的網站佈署到 GitHub Pages 服務,參考 Host on GitHub Pages,可以直接跳到第 3 步開始做
回到你的 GitHub Repository
- 找到 Settings 的標籤
- 左側有一個 Pages 的選項
- 找到 Build and deployment
- source 預設是 deploy from a branch,請選擇 GitHub Actions

回到 Visual Studio Code,請確定目前目錄是在網站的最上層
新增 workflows 目錄
在終端機輸入
| 1
 | mkdir -p .github/workflows
 | 
新增 hugo.yaml 檔案
在 .github/workflows 目錄下新增 hugo.yaml 檔案,在終端機輸入
| 1
 | touch .github/workflows/hugo.yaml
 | 
新增佈署設定檔內容
將下面的內容貼到剛剛新增的 hugo.yaml 檔
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 | # Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages
on:
  # Runs on pushes targeting the default branch
  push:
    branches:
      - main
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false
# Default to bash
defaults:
  run:
    shell: bash
jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    env:
      HUGO_VERSION: 0.141.0
    steps:
      - name: Install Hugo CLI
        run: |
          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
      - name: Install Dart Sass
        run: sudo snap install dart-sass
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Install Node.js dependencies
        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
      - name: Build with Hugo
        env:
          HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
          HUGO_ENVIRONMENT: production
          TZ: America/Los_Angeles
        run: |
          hugo \
            --gc \
            --minify \
            --baseURL "${{ steps.pages.outputs.base_url }}/"
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public
  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
 | 
儲存後,再做一次程式上版流程,不過這次要上版的東西是佈署的相關設定檔,在終端機輸入
| 1
2
3
 | git add .
git add commit -m "Create github workflow configuration for GitHub Actions deploy website"
git push
 | 
接著回到 GitHub Repository,就會發現開始佈署了

佈署完成

最後回到 佈署 一開始設定 GitHub Actions 的地方,會發現多出一個區塊,也就是你線上的網址,點 「Visit site」就可以確認是否有佈署成功了。


下一篇會說明如何撰寫 po 文,希望各位都有順利設定並佈署完成