Theme components
自 Hugo 0.42
起,專案可以配置主題為任意數量主題元件的組合:
hugo.
theme:
- my-shortcodes
- base-theme
- hyde
theme = ['my-shortcodes', 'base-theme', 'hyde']
{
"theme": [
"my-shortcodes",
"base-theme",
"hyde"
]
}
您甚至可以將其嵌套,讓主題元件本身在其自己的 hugo.toml
中包含主題元件(主題繼承)。1
上述在 hugo.toml
中的主題定義範例,建立了一個包含 3 個主題元件的主題,優先順序從左至右。
對於任何檔案、資料項目等,Hugo 將首先在專案中尋找,然後依次搜尋 my-shortcodes
、base-theme
,最後是 hyde
。
Hugo 根據檔案類型,使用兩種不同的算法合併檔案系統:
- 對於
i18n
和data
檔案,Hugo 以翻譯 ID 和檔案內的資料鍵為基準進行深層合併。 - 對於
static
、layouts
(模板)和archetypes
檔案,則在檔案層級進行合併,因此最左邊的檔案將被選用。
在上述 theme
定義中使用的名稱必須與 /your-site/themes
資料夾中的某個子資料夾名稱相符,例如 /your-site/themes/my-shortcodes
。未來計畫會改進此機制,透過 URL 的方式自動解析。
此外,作為主題一部分的元件可以擁有自己的配置檔案,例如 hugo.toml
。目前主題元件能配置的項目有以下限制:
params
(全域及語言別)menu
(全域及語言別)outputformats
和mediatypes
相同的規則在此適用:優先採用最左側具有相同 ID 的參數或選單等。上述的部分還有一些隱藏的實驗性命名空間支援,我們將在未來進一步改進。但建議主題作者建立自己的命名空間以避免命名衝突。
-
對於在 Hugo Themes Showcase 上託管的主題,元件需要作為指向
exampleSite/themes
資料夾的 git 子模組新增。 ↩︎