Компоненты темы
Начиная с Hugo 0.42
, проект может сконфигурировать тему как композицию из любого количества необходимых вам компонентов:
theme:
- my-shortcodes
- base-theme
- hyde
theme = ["my-shortcodes", "base-theme", "hyde"]
{
"theme": [
"my-shortcodes",
"base-theme",
"hyde"
]
}
Вы даже можете вложить это, и чтобы сам компонент темы включал компоненты темы в свой собственный файл config.toml
(наследование темы).1
В приведенном выше примере определения темы в config.toml
создается тема с 3 компонентами темы с приоритетом слева направо.
Для любого заданного файла, ввода данных и т.д., Хьюго сначала будет искать в проекте, а затем в my-shortcode
, base-theme
и, наконец, в hyde
.
Hugo использует два разных алгоритма для объединения файловых систем в зависимости от типа файла:
- Для файлов
i18n
иdata
Hugo выполняет глубокое слияние, используя идентификатор перевода и ключ данных внутри файлов. - Для файлов
static
,layouts
(шаблоны) иarchetypes
они объединяются на уровне файла. Таким образом, будет выбран самый левый файл.
Имя, используемое в определении темы theme
выше, должно соответствовать папке в /your-site/themes
, например: /your-site/themes/my-shortcodes
. Есть планы улучшить это и получить схему URL, чтобы это можно было разрешить автоматически.
Также обратите внимание, что компонент, являющийся частью темы, может иметь собственный файл конфигурации, например config.toml
. В настоящее время существуют некоторые ограничения на то, что компонент темы может настраивать:
params
(глобальный и для каждого языка)menu
(глобальный и для каждого языка)outputformats
иmediatypes
Здесь применяются те же правила: самый левый параметр/меню и т.д. С тем же идентификатором побеждает. В приведенном выше описании есть некоторая поддержка скрытых и экспериментальных пространств имен, над которой мы будем работать в будущем, но авторам тем рекомендуется создавать свои собственные пространства имен, чтобы избежать конфликтов имен.
-
Для тем, размещенных на Витрине тем хьюго, необходимо добавить компоненты как подмодули git, которые указывают на каталог
exampleSite/themes
↩︎