Content Types
Hugo has full support for different types of content. A content type can have a
unique set of meta data, template and can be automatically created by the hugo new
command through using content archetypes.
A good example of when multiple types are needed is to look at Tumblr. A piece of content could be a photo, quote or post, each with different meta data and rendered differently.
Assigning a content type
Hugo assumes that your site will be organized into sections and each section will use the corresponding type. If you are taking advantage of this, then each new piece of content you place into a section will automatically inherit the type.
Alternatively, you can set the type in the meta data under the key “type
”.
Creating new content of a specific type
Hugo has the ability to create a new content file and populate the front matter with the data set corresponding to that type. Hugo does this by utilizing archetypes.
To create a new piece of content, use:
hugo new relative/path/to/content.md
For example, if I wanted to create a new post inside the post section, I would type:
hugo new post/my-newest-post.md
Defining a content type
Creating a new content type is easy in Hugo. You simply provide the templates and archetype that the new type will use. You only need to define the templates, archetypes and/or views unique to that content type. Hugo will fall back to using the general templates and default archetype whenever a specific file is not present.
Remember, all of the following are optional:
Create Type Directory
Create a directory with the name of the type in /layouts
. Type is always singular. E.g. /layouts/post
.
Create single template
Create a file called single.html
inside your directory. E.g. /layouts/post/single.html
.
Create list template
Create a file called list.html
inside your directory. E.g. /layouts/post/list.html
.
Create views
Many sites support rendering content in a few different ways, for instance,
a single page view and a summary view to be used when displaying a list
of contents on a single page. Hugo makes no assumptions here about how you want
to display your content, and will support as many different views of a content
type as your site requires. All that is required for these additional views is
that a template exists in each /layouts/TYPE
directory with the same name.
Create a corresponding archetype
Create a file called type.md
in the /archetypes
directory. E.g. /archetypes/post.md
.
More details about archetypes can be found at the archetypes docs.