Hugo. Система шаблонов
Hugo. Система шаблонов.
Содержание
1 Система шаблонов (Hugo v0.146.0)
1.1 Общая информация
- Документация: https://gohugo.io/templates/new-templatesystem-overview/
1.2 Изменения в папке layouts
Папка
_default
удалена.- Сделать: переместить все файлы из
layouts/_default
вlayouts/
.
- Сделать: переместить все файлы из
Папка
layouts/partials
переименована вlayouts/_partials
.- Сделать: переименуйте папку.
Папка
layouts/shortcodes
переименована вlayouts/_shortcodes
.- Сделать: переименуйте папку.
Любая папка в
layouts
, которая не начинается с_
, представляет собой корень каталога страниц.- Он может быть вложен настолько глубоко, насколько это необходимо.
- Папки
_shortcodes
и_markup
можно размещать на любом уровне. - Сделать: никаких действий не требуется.
Нет верхнего уровня папок
layouts/taxonomy
илиlayouts/section
.- Сделать: переместите наверх
layouts/
с одним из типов страниц:section
,taxonomy
илиterm
в качестве базового имени или поместите макеты в таксономию Page path.
- Сделать: переместите наверх
Шаблон с именем
taxonomy.html
был кандидатом на оба типа страниц:term
иtaxonomy
.- Теперь это рассматривается только для
taxonomy
. - Сделать: создайте
taxonomy.html
иterm.html
или создать более общий макет, напримерlist.html
.
- Теперь это рассматривается только для
Для базовых шаблонов (например,
baseof.html
), в предыдущих версиях Hugo можно было добавить один идентификатор (layout, type, or kind) с дефисом перед ключевым словом baseof.- Сделать: переместите этот идентификатор после первой «точки», например, переименуйте
list-baseof.html
кbaseof.list.html
.
- Сделать: переместите этот идентификатор после первой «точки», например, переименуйте
Новый универсальный макет
all
.- Если у вас, например, есть
layouts/all.html
, и это единственный шаблон, этот макет будет использоваться для рендеринга всех HTML-страниц.
- Если у вас, например, есть
Убрали концепцию шаблона
_internal
.- Сделать: заменить конструкции типа
{{ template "_internal/opengraph.html" . }}
на{{ partial "opengraph.html" . }}
.
- Сделать: заменить конструкции типа
Идентификаторы, которые можно использовать в имени файла шаблона относятся:
- к одному из типов страниц (
home
,page
,section
,taxonomy
, илиterm
; - к одному из стандартных макетов (
list
,single
, илиall
), - к пользовательскому макету (как определено в поле
layout
); - языку (например,
en
); - выходному формату (например,
html
,rss
); - суффикс, представляющий тип носителя.
- Например,
all.en.html
иhome.rss.xml
.
- к одному из типов страниц (
Не существует такого понятия, как шаблон
index.html
для домашней страницы.- Сделать: переименовать
index.html
вhome.html
.
- Сделать: переименовать
1.3 Изменения в порядке поиска шаблонов
- Идентификаторы, используемые при поиске шаблона, в порядке важности.
Идентификатор | Описание |
---|---|
Пользовательский макет | layout , установленный на первой полосе. |
Типы страниц | home , section , taxonomy , term , page . |
Стандартный макет 1 | list , single . |
Формат вывода | Формат вывода (например, html , rss ). |
Стандартный макет 2 | all . |
Язык | Язык (например, en ). |
Тип содержания | Например, text/html . |
Путь к странице | Путь к странице (например, /blog/mypost ). |
Тип | type на первой полосе. |
- Для шаблонов, размещенных в
layouts
. - Если папка частично или полностью совпадает с путем к странице]] , более точное совпадение вверх будет считаться лучшим . В примере структуры папки ниже это означает, что:
2 Пример структуры папки
- Пояснение:
layouts/docs/api/_markup/render-link.html
будет использоваться для отображения ссылок из пути страницы/docs/api
и ниже.layouts/docs/baseof.html
будет использоваться как базовый шаблон для пути к странице/docs
и ниже.layouts/tags/term.html
будет использоваться для рендеринга всехterm
в таксономииtags
, за исключением терминаblue
, который будет использоватьlayouts/tags/blue/list.html
.
layouts
├── baseof.html
├── baseof.term.html
├── home.html
├── page.html
├── section.html
├── taxonomy.html
├── term.html
├── term.mylayout.en.rss.xml
├── _markup
│ ├── render-codeblock-go.term.mylayout.no.rss.xml
│ └── render-link.html
├── _partials
│ └── mypartial.html
├── _shortcodes
│ ├── myshortcode.html
│ └── myshortcode.section.mylayout.en.rss.xml
├── docs
│ ├── baseof.html
│ ├── _shortcodes
│ │ └── myshortcode.html
│ └── api
│ ├── mylayout.html
│ ├── page.html
│ └── _markup
│ └── render-link.html
└── tags
├── taxonomy.html
├── term.html
└── blue
└── list.html