Организация контента
Группы страниц
Hugo 0.32
анонсировал изображения, относящиеся к страницам, и другие ресурсы, упакованные в Page Bundles
.
Эти условия взаимосвязаны, и Вам также необходимо прочитать о Ресурсе страницы и Обработке изображений, чтобы получить полную картину.
Организация источника контента
В Hugo Ваш контент должен быть организован таким образом, чтобы отражать отрендеренный веб-сайт.
Хотя Hugo поддерживает вложенный контент на любом уровне, верхние уровни (например, content/<DIRECTORIES>
) являются специальными в Hugo и считаются типом контента, используемым для определения макетов и т.д. Чтобы узнать больше о разделах, в том числе о том, как их вкладывать, см. разделы.
Без дополнительной настройки будет работать следующее:
.
└── content
└── about
| └── index.md // <- https://example.com/about/
├── posts
| ├── firstpost.md // <- https://example.com/posts/firstpost/
| ├── happy
| | └── ness.md // <- https://example.com/posts/happy/ness/
| └── secondpost.md // <- https://example.com/posts/secondpost/
└── quote
├── first.md // <- https://example.com/quote/first/
└── second.md // <- https://example.com/quote/second/
Разбивка пути в Хьюго
Ниже показаны отношения между Вашей организацией контента и структурой выходных URL-адресов Вашего веб-сайта Hugo при его отображении. В этих примерах предполагается, что Вы используете красивые URL-адреса, то является поведением по умолчанию для Hugo. В примерах также предполагается наличие пары “ключ-значение” baseURL = "https://example.com"
в файле конфигурации Вашего сайта.
Индексные страницы: _index.md
_index.md
играет в Хьюго особую роль. Это позволяет Вам добавлять главные темы и контент в Ваши список шаблонов. Эти шаблоны включают шаблоны для раздел шаблонов, шаблоны таксономии, шаблоны терминов таксономии, и [][шаблон домашней страницы].
Вы можете сохранить по одному _index.md
для своей домашней страницы и по одному в каждом из разделов Вашего контента, таксономий и терминов таксономии. Ниже показано типичное размещение _index.md
, который будет содержать контент и заставку для страницы списка разделов posts
на веб-сайте Hugo:
. url
. ⊢--^-⊣
. path slug
. ⊢--^-⊣⊢---^---⊣
. filepath
. ⊢------^------⊣
content/posts/_index.md
При сборке это будет выводиться по следующему адресу со связанными значениями:
url ("/posts/")
⊢-^-⊣
baseurl section ("posts")
⊢--------^---------⊣⊢-^-⊣
permalink
⊢----------^-------------⊣
https://example.com/posts/index.html
Разделы могут быть вложены настолько глубоко, насколько Вам нужно. Важно понимать, что для того, чтобы дерево разделов было полностью навигационным, по крайней мере, для самого нижнего раздела нужен файл содержимого. (например, _index.md
).
Отдельные страницы в разделах
Отдельные файлы содержимого в каждом из Ваших разделов будут отображаться как одностраничные шаблоны. Вот пример одиночного post
внутри posts
:
path ("posts/my-first-hugo-post.md")
. ⊢-----------^------------⊣
. section slug
. ⊢-^-⊣⊢--------^----------⊣
content/posts/my-first-hugo-post.md
Когда Hugo создаст Ваш сайт, контент будет выводиться по следующему адресу:
url ("/posts/my-first-hugo-post/")
⊢------------^----------⊣
baseurl section slug
⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
permalink
⊢--------------------^---------------------⊣
https://example.com/posts/my-first-hugo-post/index.html
Объяснение путей
Следующие концепции помогут лучше понять взаимосвязь между организацией Вашего проекта и поведением Hugo по умолчанию при создании выходного веб-сайта.
section
Тип содержимого по умолчанию определяется частью раздела содержимого. Раздел section
определяется расположением в каталоге проекта content
. section
не может быть указан или отменен в начале.
slug
slug
контента - это либо name.extension
, либо name/
. Значение slug
определяется как
- имя файла содержимого (например,
lollapalooza.md
) ИЛИ - переопределение front matter
path
path
содержимого определяется путем раздела к файлу. Файл path
- основан на пути к местоположению содержимого И
- не включает слаг
url
url
- это относительный URL-адрес части контента. url
- зависит от местоположения содержимого в структуре каталогов ИЛИ
- определяется во вступительной части и переопределяет все вышеперечисленное
Переопределение путей назначения через Front Matter
Хьюго считает, что Вы организовываете свой контент с определенной целью. Та же структура, которая работает для организации исходного контента, используется для организации отображаемого сайта. Как показано выше, организация исходного контента будет отражена в месте назначения.
Бывают случаи, когда Вам может потребоваться больший контроль над своим контентом. В этих случаях есть поля, которые можно указать во вступительной части, чтобы определить место назначения конкретной части контента.
Следующие элементы определены в этом порядке по определенной причине: элементы, описанные ниже в списке, будут иметь приоритет над более ранними элементами, и не все из этих элементов могут быть определены в начале:
filename
Это не главное, это настоящее имя файла без расширения. Это будет имя файла в месте назначения (например, content/posts/my-post.md
превратится в example.com/posts/my-post/
).
slug
Когда он определен во вступительной части, slug
может занимать место имени файла для места назначения.
---
title: A new post with the filename old-post.md
slug: "new-post"
---
Это будет отображаться в следующем месте назначения в соответствии с поведением Хьюго по умолчанию:
example.com/posts/new-post/
section
section
определяется местоположением содержимого на диске и не может быть указан в начале. Смотрите разделы для получения дополнительной информации.
type
type
контента также определяется его местоположением на диске, но, в отличие от section
, он может быть указан в начале. Смотрите типы. Это может быть особенно удобно, если Вы хотите, чтобы часть контента отображалась с использованием другого макета. В следующем примере Вы можете создать макет в layouts/new/mylayout.html
, который Хьюго будет использовать для рендеринга этого фрагмента контента, даже среди множества других сообщений.
---
title: My Post
type: new
layout: mylayout
---
url
Может быть предоставлен полный URL-адрес. Это отменит все вышеперечисленное, поскольку оно относится к конечному пункту назначения. Это должен быть путь от baseURL (начиная с /
). url
будет использоваться точно так же, как он был указан в начале статьи, и игнорировать параметр --uglyURLs
в конфигурации Вашего сайта:
---
title: Old URL
url: /blog/new-url/
---
Предполагая, что ваш baseURL
сконфигурирован на https://example.com
, добавление url
к началу приведет к рендерингу old-url.md
в следующем месте:
https://example.com/blog/new-url/
Дополнительную информацию о том, как управлять путями вывода, можно найти в Управление URL-адресами.