mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
127 lines
3.7 KiB
Markdown
127 lines
3.7 KiB
Markdown
|
---
|
||
|
aliases:
|
||
|
- /doc/source-directory/
|
||
|
lastmod: 2015-02-09
|
||
|
date: 2013-07-01
|
||
|
menu:
|
||
|
main:
|
||
|
parent: getting started
|
||
|
next: /content/organization
|
||
|
notoc: true
|
||
|
prev: /overview/configuration
|
||
|
title: Source Organization
|
||
|
weight: 50
|
||
|
---
|
||
|
|
||
|
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:
|
||
|
|
||
|
* [config]({{< relref "overview/configuration.md" >}})
|
||
|
* [data]({{< relref "extras/datafiles.md" >}})
|
||
|
* [i18n]({{< relref "content/multilingual.md#translation-of-strings" >}})
|
||
|
* [archetypes]({{< relref "content/archetypes.md" >}})
|
||
|
* [content]({{< relref "content/organization.md" >}})
|
||
|
* [layouts]({{< relref "templates/overview.md" >}})
|
||
|
* [static]({{< relref "themes/creation.md#static" >}})
|
||
|
* [themes]({{< relref "themes/overview.md" >}})
|
||
|
|
||
|
|
||
|
## 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
|
||
|
| ├── taxonomy
|
||
|
| | ├── 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:
|
||
|
|
||
|
1. The website intends to have two different types of content: *posts* and *quotes*.
|
||
|
2. It will also apply two different taxonomies to that content: *categories* and *tags*.
|
||
|
3. 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](/templates/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.**
|
||
|
|
||
|
```bash
|
||
|
└── content
|
||
|
├── _index.md
|
||
|
├── categories
|
||
|
│ ├── _index.md
|
||
|
│ └── photo
|
||
|
│ └── _index.md
|
||
|
├── post
|
||
|
│ ├── _index.md
|
||
|
│ └── firstpost.md
|
||
|
└── tags
|
||
|
├── _index.md
|
||
|
└── hugo
|
||
|
└── _index.md
|
||
|
```
|
||
|
|