Таксономии
Что такое таксономия?
Hugo включает поддержку определяемых пользователем групп контента, называемых таксономиями. Таксономии - это классификации логических отношений между контентом.
Определения
- Taxonomy
- категоризация, которая может использоваться для классификации контента
- Term
- ключ в таксономии
- Value
- часть содержания, присвоенная термину
Пример таксономии: веб-сайт фильмов
Предположим, Вы создаете сайт о фильмах. Вы можете включить следующие таксономии:
- Actors
- Directors
- Studios
- Genre
- Year
- Awards
Затем в каждом из фильмов вы должны указать термины для каждой из этих таксономий (т.е., в front matter каждого файла с содержанием фильма). Исходя из этих условий, Хьюго будет автоматически создавать страницы для каждого Актера, Режиссера, Студии, Жанра, Года и Премии, в каждом из которых будут перечислены все Фильмы, соответствующие конкретному Актеру, Режиссеру, Студии, Жанру, Году и Награде.
Организация по классификации фильмов
Чтобы продолжить пример сайта с фильмами, следующее демонстрирует отношения контента с точки зрения таксономии:
Actor <- Taxonomy
Bruce Willis <- Term
The Sixth Sense <- Value
Unbreakable <- Value
Moonrise Kingdom <- Value
Samuel L. Jackson <- Term
Unbreakable <- Value
The Avengers <- Value
xXx <- Value
С точки зрения контента отношения выглядят иначе, хотя используемые данные и метки одинаковы:
Unbreakable <- Value
Actors <- Taxonomy
Bruce Willis <- Term
Samuel L. Jackson <- Term
Director <- Taxonomy
M. Night Shyamalan <- Term
...
Moonrise Kingdom <- Value
Actors <- Taxonomy
Bruce Willis <- Term
Bill Murray <- Term
Director <- Taxonomy
Wes Anderson <- Term
...
Значения по умолчанию для таксономии Hugo
Hugo изначально поддерживает таксономии.
Не добавляя ни одной строчки в Ваш файл конфигурации сайта, Hugo автоматически создаст таксономии для тегов tags
и категорий categories
. Это будет то же самое, что вручную настройка ваших таксономий, как показано ниже:
taxonomies:
category: categories
tag: tags
[taxonomies]
category = "categories"
tag = "tags"
{
"taxonomies": {
"category": "categories",
"tag": "tags"
}
}
Если Вы не хотите, чтобы Hugo создавал какие-либо таксономии, установите для параметра disableKinds
в Вашем конфигурации сайта следующее:
disableKinds:
- taxonomy
- term
disableKinds = ["taxonomy", "term"]
{
"disableKinds": [
"taxonomy",
"term"
]
}
Мы исправили ранее запутанные типы страниц, используемые для таксономий (см. Список ниже), чтобы они соответствовали терминам, используемым, когда мы говорим о таксономиях. Мы были осторожны, чтобы избежать поломки сайта, и Вы должны получить ОШИБКУ в консоли, если Вам нужно настроить раздел disableKinds
.
Kind | Description | Example |
---|---|---|
home |
The landing page for the home page | /index.html |
page |
The landing page for a given page | my-post page (/posts/my-post/index.html ) |
section |
The landing page of a given section | posts section (/posts/index.html ) |
taxonomy |
The landing page for a taxonomy | tags taxonomy (/tags/index.html ) |
term |
The landing page for one taxonomy’s term | term awesome in tags taxonomy (/tags/awesome/index.html ) |
Назначения по умолчанию
Когда используются таксономии — и предоставляются шаблоны таксономии, Hugo автоматически создает как страницу со списком всех терминов таксономии, так и отдельные страницы со списками контента, связанного с каждым термином. Например, таксономия categories
, объявленная в Вашей конфигурации и используемая в Вашем информационном фронте, создаст следующие страницы:
- Одна страница в
example.com/categories/
, на которой перечислены все термины в таксономии - Индивидуальные страницы списка таксономии (например,
/categories/development/
) для каждого из терминов, которые показывают список всех страниц, отмеченных как часть этой таксономии в front matter
Настройка таксономии
Пользовательские таксономии, отличные от по умолчанию, должны быть определены в Вашей конфигурации сайта, прежде чем их можно будет использовать на всем сайте. Для каждой таксономии необходимо указать метки множественного и единственного числа. Например, singular key = "plural value"
для TOML и singular key: "plural value"
для YAML.
Пример: Добавление настраиваемой таксономии под названием “series”
taxonomies:
category: categories
series: series
tag: tags
[taxonomies]
category = "categories"
series = "series"
tag = "tags"
{
"taxonomies": {
"category": "categories",
"series": "series",
"tag": "tags"
}
}
Пример: Удаление таксономий по умолчанию
Если Вы хотите иметь только стандартную таксономию tags
и удалить таксономию categories
для Вашего сайта, Вы можете сделать это, изменив значение taxonomies
в Вашей конфигурации сайта.
taxonomies:
tag: tags
[taxonomies]
tag = "tags"
{
"taxonomies": {
"tag": "tags"
}
}
Если Вы хотите полностью отключить все таксономии, смотрите использование disableKinds
в Значения по умолчанию для таксономии Hugo.
Добавить таксономии к контенту
Как только таксономия определена на уровне сайта, ей можно назначить любой фрагмент контента, независимо от типа контента или раздела контента.
Присвоение содержания таксономии выполняется в front matter. Просто создайте переменную с множественным именем таксономии и назначьте все термины, которые Вы хотите применить к экземпляру типа контента.
Пример: Front Matter с таксономиями
categories:
- Development
project_url: https://github.com/gohugoio/hugo
series:
- Go Web Dev
slug: hugo
tags:
- Development
- Go
- fast
- Blogging
title: 'Hugo: A fast and flexible static site generator'
categories = ["Development"]
project_url = "https://github.com/gohugoio/hugo"
series = ["Go Web Dev"]
slug = "hugo"
tags = ["Development", "Go", "fast", "Blogging"]
title = "Hugo: A fast and flexible static site generator"
{
"categories": [
"Development"
],
"project_url": "https://github.com/gohugoio/hugo",
"series": [
"Go Web Dev"
],
"slug": "hugo",
"tags": [
"Development",
"Go",
"fast",
"Blogging"
],
"title": "Hugo: A fast and flexible static site generator"
}
Порядок Таксономии
Файл содержимого может назначать вес для каждой связанной с ним таксономии. Таксономический вес может использоваться для сортировки или упорядочивания содержимого в шаблонах списков таксономии и объявляется в front matter файла содержимого. Таксономический вес объявляется по соглашению taxonomyname_weight
.
В следующих примерах TOML и YAML показан фрагмент контента с весом 22, который можно использовать для упорядочивания при рендеринге страниц, присвоенных значениям «a», «b» и «c» таксономии tags
. Ему также был присвоен вес 44 при рендеринге страницы категории «d».
Пример: weight
таксономии
categories:
- d
categories_weight: 44
tags:
- a
- b
- c
tags_weight: 22
title: foo
categories = ["d"]
categories_weight = 44
tags = ["a", "b", "c"]
tags_weight = 22
title = "foo"
{
"categories": [
"d"
],
"categories_weight": 44,
"tags": [
"a",
"b",
"c"
],
"tags_weight": 22,
"title": "foo"
}
Используя таксономический вес, один и тот же фрагмент контента может появляться в разных позициях в разных таксономиях.
Добавить пользовательские метаданные в таксономию или термин
Если Вам нужно добавить пользовательские метаданные в термины таксономии, Вам нужно будет создать страницу для этого термина в /content/<TAXONOMY>/<TERM>/_index.md
и добавить свои метаданные в нее. Продолжая наш пример «Актеры», предположим, Вы хотите добавить ссылку на страницу Википедии для каждого актера. Ваши страницы условий будут примерно такими:
---
title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
---