Additional Pages
Hextra includes additional pages that you can enable explicitly: glossary, archives, talks, and series.
Glossary
Source Data File
Term definitions are centrally stored in a termbase.yaml data file for each supported language.
- termbase.yaml
- termbase.yaml
- termbase.yaml
Each YAML data file contains a list of glossary entries. Every entry includes:
term: The full name of the concept or phrase.definition: A brief explanation or description of the term.abbr(optional): A commonly used abbreviation or acronym for the term.
- term: seo
abbr: SEO
definition: "Search engine optimization – improving the visibility of a web page in search engines"
- term: static site generator
definition: "Software engines processing text input to generate static web pages"Glossary Page
To render the glossary index page (listing all defined terms along with their descriptions and abbreviations),
a language-specific glossary content file must be defined for each supported language. Use the language code suffix
in the filename, for example content/glossary/_index.en.md.
---
title: Glossary
layout: glossary
---An example glossary page is available at Glossary.
Archives
The archives layout is a general grouped index: it renders any set of pages as a year-grouped timeline (or as a flat list), and by default it archives the section the page belongs to. It powers the built-in archives page as well as the Talks and Series page types described below.
To create a standalone archive page that points at a different section (for example an /archives page listing blog posts), set group.section in the page front matter:
---
title: Archives
layout: archives
toc: false
group:
section: blog
---This is how the built-in example works: the page lives in content/archives/ but archives the blog section. An example archive page is available at Archives.
Options
group.section: the section to archive. The default is the page’s own section, falling back toparams.archives.section(defaultblog).group.dateFormat: date format for list items. The default isJan 02, falling back toparams.archives.dateFormat.group.groupBy:year(default),month, ornonefor a flat list. Term pages (such as a series) default tonone, since they are already grouped by the term.
The empty-state message uses the noResultsFound i18n key.
Talks
A content section such as talks can be listed as a year-separated index, just like the archives page.
- Create the section’s index page with the
archiveslayout:The page archives its own section by default, socontent/talks/_index.md--- title: Talks layout: archives toc: false ---/talks/renders all talks grouped by year. No further configuration is needed. - (Optional) Add it to the top menu:hugo.yaml
menu: main: - identifier: talks name: Talks pageRef: /talks - (Optional, multilingual) Add translated index pages with the same layout, for example
content/talks/_index.ja.md.
The file structure for a talks archive looks like this:
- _index.md
- index.md
- slides.pdf
- css-architecture.md
- index.md
- cover.png
Each talk post can be either a single Markdown file (css-architecture.md) or a page bundle directory: an index.md with its images and assets (such as slide decks or cover images) grouped in the same subdirectory (open-source-communities/, hugo-theming/). Only _index.md carries the layout: archives front matter:
---
title: Theming Hugo Sites with Tailwind CSS
date: 2025-11-03
tags:
- Hugo
- Tailwind CSS
---An example talks archive is available at Talks.
Series
A series groups related posts (usually blog posts) under a name. It is a taxonomy term: all posts sharing the same series term are grouped on an automatically generated /series/<name>/ page. The series name is the group, so the page lists its posts together without extra grouping.
- Configure the
seriestaxonomy:Settinghugo.yamltaxonomies: series: seriestaxonomiesreplaces Hugo’s default ones. To keep existing taxonomies, list them as well:hugo.yamltaxonomies: tag: tags category: categories series: series - Tag each post that belongs to the series in its front matter:A post can belong to more than one series by listing several terms. Thecontent/blog/part-1/index.md
--- title: "Demo Series Part 1" date: 2024-09-12 series: - demo-series ---seriesfront matter also drives the Open Graphog:see_alsolinks on the post page. - (Optional) Create a term index page to set the series title and enable the
archiveslayout:Without this page,content/series/demo-series/_index.md--- title: Demo Series layout: archives toc: false ---/series/demo-series/still lists all posts in the series.
The file structure for a series looks like this:
- index.md
- diagram.png
- part-2.md
- _index.md
The series posts stay in their normal section (blog in this example). The content/series/ directory is not a second home for posts — it is Hugo’s taxonomy content directory, used only to customize the automatically generated /series/<name>/ term page (title, archives layout). It is optional: without it, /series/<name>/ is still generated and lists the series posts under the series name.
Like talk posts, a series post can be a single Markdown file or a page bundle directory (for example part-1/) that groups the post with its images and assets.
Add a Series Dropdown to the Menu
To add a dropdown that lists all series in the top navigation, add a menu item with type: series:
menu:
main:
- identifier: series
name: Series
params:
type: seriesThe dropdown lists every series term automatically. To customize the label shown for a series, set its title on the term index page (content/series/<name>/_index.md).
An example series archive is available at Demo Series.