主题组件
从 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 的最左侧参数/菜单等将获胜。上述内容中有一些隐藏的和实验性的命名空间支持,我们将在未来改进,但鼓励主题作者创建自己的命名空间以避免命名冲突。