主題組件
Hugo 提供高級主題支持,使用主題組件。
項目可以將主題配置為任意數量的主題組件的組合:
theme:
- my-shortcodes
- base-theme
- hyde
theme = ['my-shortcodes', 'base-theme', 'hyde']
{
"theme": [
"my-shortcodes",
"base-theme",
"hyde"
]
}
您甚至可以嵌套,讓主題組件本身在其自己的 hugo.toml 中包含主題組件(主題繼承)。
上面 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。
另請注意,作為主題一部分的組件可以有自己的配置文件,例如 hugo.toml。目前對主題組件可以配置的內容有一些限制:
params(全局和每種語言)menu(全局和每種語言)outputformats和mediatypes
這裡適用相同的規則:具有相同 ID 的最左邊的參數/菜單等將獲勝。上面有一些隱藏的和實驗性的命名空間支持,我們將努力在未來改進,但鼓勵主題作者創建自己的命名空間以避免命名沖突。