Hugo takes a single directory and uses it as the input for creating a complete website.
The top level of a source directory will typically have the following elements:
▸ archetypes/
▸ content/
▸ data/
▸ i18n/
▸ layouts/
▸ static/
▸ themes/
config.toml
Learn more about the different directories and what their purpose is:
Example
An example directory may look like:
.
├── config.toml
├── archetypes
| └── default.md
├── content
| ├── post
| | ├── firstpost.md
| | └── secondpost.md
| └── quote
| | ├── first.md
| | └── second.md
├── data
├── i18n
├── layouts
| ├── _default
| | ├── single.html
| | └── list.html
| ├── partials
| | ├── header.html
| | └── footer.html
| ├── taxonomies
| | ├── category.html
| | ├── post.html
| | ├── quote.html
| | └── tag.html
| ├── post
| | ├── li.html
| | ├── single.html
| | └── summary.html
| ├── quote
| | ├── li.html
| | ├── single.html
| | └── summary.html
| ├── shortcodes
| | ├── img.html
| | ├── vimeo.html
| | └── youtube.html
| ├── index.html
| └── sitemap.xml
├── themes
| ├── hyde
| └── doc
└── static
├── css
└── js
This directory structure tells us a lot about this site:
- The website intends to have two different types of content: posts and quotes.
- It will also apply two different taxonomies to that content: categories and tags.
- It will be displaying content in 3 different views: a list, a summary and a full page view.
Content for home page and other list pages
Since Hugo 0.18, “everything” is a Page
that can have content and metadata, like .Params
, attached to it – and share the same set of page variables.
To add content and frontmatter to the home page, a section, a taxonomy or a taxonomy terms listing, add a markdown file with the base name _index
on the relevant place on the file system.
For the default Markdown content, the filename will be _index.md
.
Se the example directory tree below.
Note that you don’t have to create _index
file for every section, taxonomy and similar, a default page will be created if not present, but with no content and default values for .Title
etc.
└── content
├── _index.md
├── categories
│ ├── _index.md
│ └── photo
│ └── _index.md
├── post
│ ├── _index.md
│ └── firstpost.md
└── tags
├── _index.md
└── hugo
└── _index.md