Front Matter
Front matter позволяет хранить метаданные, прикрепленные к экземпляру типов контента, т.е. встроенные в файл контента, и это одна из многих функций, которые придают Hugo его силу.
Форматы Front Matter
Hugo поддерживает четыре формата для front matter, каждый со своими собственными идентификационными токенами.
- TOML
- определяется открытием и закрытием
+++
. - YAML
- определяется открытием и закрытием
---
. - JSON
- один объект JSON, окруженный символами ‘
{
’ и ‘}
’, за которым следует новая строка. - ORG
- группа ключевых слов Org режима в формате ‘
#+KEY: VALUE
’. Любая строка, которая не начинается с#+
, завершает раздел вводной части. Значения ключевых слов могут быть строками (#+KEY: VALUE
) или списком строк, разделенных пробелами (#+KEY[]: VALUE_1 VALUE_2
).
Пример
categories:
- Development
- VIM
date: "2012-04-06"
description: spf13-vim is a cross platform distribution of vim plugins and resources for Vim.
slug: spf13-vim-3-0-release-and-new-website
tags:
- .vimrc
- plugins
- spf13-vim
- vim
title: spf13-vim 3.0 release and new website
categories = ["Development", "VIM"]
date = "2012-04-06"
description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
slug = "spf13-vim-3-0-release-and-new-website"
tags = [".vimrc", "plugins", "spf13-vim", "vim"]
title = "spf13-vim 3.0 release and new website"
{
"categories": [
"Development",
"VIM"
],
"date": "2012-04-06",
"description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
"slug": "spf13-vim-3-0-release-and-new-website",
"tags": [
".vimrc",
"plugins",
"spf13-vim",
"vim"
],
"title": "spf13-vim 3.0 release and new website"
}
Переменные Front Matter
Предопределенный
Есть несколько предопределенных переменных, о которых Хьюго знает. Смотрите Переменные страницы, чтобы узнать, как вызывать многие из этих предопределенных переменных в Ваших шаблонах.
- aliases
- массив из одного или нескольких псевдонимов (например, старых опубликованных путей переименованного контента), которые будут созданы в структуре выходного каталога. Подробнее смотрите псевдонимы.
- audio
- массив путей к аудиофайлам, относящимся к странице; используется
opengraph
внутренний шаблон для заполненияog:audio
. - cascade
- карта ключей Front Matter, значения которых передаются потомкам страницы, если они не перезаписываются самим собой или каскадом более близких предков. Смотрите Front Matter Cascade для получения подробной информации.
- date
- дата и время, назначенное этой странице. Обычно это выбирается из поля
date
в начале сообщения, но это поведение можно настроить. - description
- описание для контента.
- draft
- если
true
, контент не будет отображаться, если флаг--buildDrafts
не передан командеhugo
. - expiryDate
- дата и время, при которых контент больше не должен публиковаться Hugo; Просроченный контент не будет отображаться, если флаг
--buildExpired
не передан командеhugo
. - headless
- если
true
, устанавливает для leaf bundle значение headless. - images
- массив путей к изображениям, относящимся к странице; используется внутренними шаблонами, такими как
_internal/twitter_cards.html
. - isCJKLanguage
- если
true
, Hugo будет явно рассматривать контент как язык CJK; как.Summary
так и.WordCount
корректно работают на CJK языках. - keywords
- мета-ключевые слова для содержания.
- layout
- макет Хьюго должен выбирать из порядок поиска при рендеринге содержимого. Если
type
не указан во вступительной части, Hugo будет искать макет с тем же именем в каталоге макета, который соответствует разделу содержимого. Смотрите “Определение типа контента” - lastmod
- дата и время последнего изменения содержимого.
- linkTitle
- используется для создания ссылок на контент; если установлено, Хьюго по умолчанию использует
linktitle
передtitle
. Хьюго также может упорядочить списки контента поlinktitle
. - markup
- экспериментальный; укажите
"rst"
для reStructuredText (требуетсяrst2html
) или"md"
(по умолчанию) для Markdown. - outputs
- позволяет указать форматы вывода, специфичные для содержимого. Смотрите форматы вывода.
- publishDate
- если в будущем контент не будет отображаться, если флаг
--buildFuture
не передан вhugo
. - resources
- используется для настройки ресурсов пакета страниц. Смотрите Ресурсы страницы.
- series
- массив серий, к которым принадлежит эта страница, как подмножество
series
таксономия; используетсяopengraph
внутренний шаблон для заполненияog:see_also
. - slug
- отображается в конце выходного URL. Значение, указанное в заголовке, переопределит сегмент URL-адреса на основе имени файла.
- summary
- текст, используемый при предоставлении резюме статьи в переменной страницы
.Summary
; подробности доступны в разделе резюме содержания. - title
- название содержания.
- type
- тип контента; это значение будет автоматически получено из каталога (т. е., раздел), если не указано в предварительном сообщении.
- url
- полный путь к содержимому из корня сети. Он не делает никаких предположений о пути к файлу содержимого. Он также игнорирует любые языковые префиксы многоязычной функции.
- videos
- массив путей к видео, относящимся к странице; используется в
opengraph
внутреннего шаблона для заполненияog:video
. - weight
- используется для упорядочивания вашего контента в списках. Меньший вес имеет более высокий приоритет. Так что довольство меньшим весом будет на первом месте. Если установлено, веса должны быть ненулевыми, поскольку 0 интерпретируется как неустановленный вес.
- <taxonomies>
- имя поля в форме множественного числа индекса. Смотрите
tags
иcategories
в примерах выше. Обратите внимание, что форма множественного числа определяемых пользователем таксономий не может совпадать с любой из предопределенных первичных переменных.
Определяемые пользователем
Вы можете произвольно добавлять поля в свой вступительный документ в соответствии со своими потребностями. Эти определяемые пользователем пары “ключ-значение” помещаются в одну переменную .Params
для использования в Ваших шаблонах.
Доступ к следующим полям можно получить через .Params.include_toc
и .Params.show_comments
соответственно. В разделе Переменные представлена дополнительная информация об использовании переменных уровня страницы и сайта Hugo в Ваших шаблонах.
include_toc: true
show_comments: false
include_toc = true
show_comments = false
{
"include_toc": true,
"show_comments": false
}
Каскад Front Matter
Любой узел или раздел может передать потомкам набор значений Front Matter, если они определены под зарезервированным ключом Front Matter cascade
.
Целевые определенные страницы
Начиная с Hugo 0.76, блок cascade
может быть срезом с необязательным ключевым словом _target
, что позволяет использовать несколько значений cascade
для разных наборов страниц.
cascade:
- _target:
kind: page
lang: en
path: /blog/**
background: yosemite.jpg
- _target:
kind: section
background: goldenbridge.jpg
title: Blog
title = "Blog"
[[cascade]]
background = "yosemite.jpg"
[cascade._target]
kind = "page"
lang = "en"
path = "/blog/**"
[[cascade]]
background = "goldenbridge.jpg"
[cascade._target]
kind = "section"
{
"cascade": [
{
"_target": {
"kind": "page",
"lang": "en",
"path": "/blog/**"
},
"background": "yosemite.jpg"
},
{
"_target": {
"kind": "section"
},
"background": "goldenbridge.jpg"
}
],
"title": "Blog"
}
Ключевые слова, доступные для _target
:
- path
- Шаблон Glob , соответствующий пути к содержимому ниже
/content
. Ожидает косые черты в стиле Unix. Обратите внимание, что это виртуальный путь, поэтому он начинается с корня монтирования. Сопоставление поддерживает двойные звездочки, поэтому Вы можете сопоставить шаблоны вроде/blog/*/**
, чтобы сопоставить все, начиная с третьего уровня и ниже. - kind
- Шаблон Glob, соответствующий типу страницы, например: “{home,section}”.
- lang
- Шаблон Glob, соответствующий языку страницы, например: “{en,sv}”.
Любое из вышеперечисленного можно опустить.
Пример
В content/blog/_index.md
cascade:
banner: images/typewriter.jpg
title: Blog
title = "Blog"
[cascade]
banner = "images/typewriter.jpg"
{
"cascade": {
"banner": "images/typewriter.jpg"
},
"title": "Blog"
}
В приведенном выше примере страница раздела блога и ее потомки будут возвращать images/typewriter.jpg
при вызове .Params.banner
, если:
- Указанный потомок имеет собственное установленное значение
banner
. - Или для более близкого узла-предка установлено собственное значение
cascade.banner
.
Порядок контента через Front Matter
Вы можете назначить weight
, зависящий от контента, в начале Вашего контента. Эти значения особенно полезны для упорядочивания в представлениях списка. Вы можете использовать weight
для упорядочивания контента и соглашение <TAXONOMY>_weight
для упорядочивания контента в таксономии. Смотрите Упорядочивание и группировка списков Hugo, чтобы увидеть, как weight
можно использовать для организации Вашего контента в представлениях списков.
Переопределить глобальную конфигурацию разметки
Можно установить некоторые параметры для рендеринга Markdown в заголовке контента в качестве замены параметров рендеринга BlackFriday, заданных в конфигурации Вашего проекта.