HUGO
Menu
GitHub 87548 stars Mastodon

主题组件

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-shortcodesbase-theme 中查找,最后在 hyde 中查找。

Hugo 使用两种不同的算法来合并文件系统,具体取决于文件类型:

  • 对于 i18ndata 文件,Hugo 使用文件中的翻译 ID 和数据键进行深度合并。
  • 对于 staticlayouts(模板)和 archetypes 文件,这些在文件级别合并。因此将选择最左边的文件。

上面 theme 定义中使用的名称必须与 /your-site/themes 中的目录匹配,例如 /your-site/themes/my-shortcodes

另请注意,作为主题一部分的组件可以有自己的配置文件,例如 hugo.toml。目前对主题组件可以配置的内容有一些限制:

  • params(全局和每种语言)
  • menu(全局和每种语言)
  • outputformatsmediatypes

这里适用相同的规则:具有相同 ID 的最左边的参数/菜单等将获胜。上面有一些隐藏的和实验性的命名空间支持,我们将努力在未来改进,但鼓励主题作者创建自己的命名空间以避免命名冲突。


Last updated: January 1, 0001
Improve this page