Page

A page is any file ending with .md in the content directory, except files named _index.md.

If a file ending with .md is named index.md, then it will generate a page with the name of the containing folder (for example, /content/about/index.md would create a page at [base_url]/about). (Note the lack of an underscore; if the file were named _index.md, then it would create a section at [base_url]/about, as discussed in the prior part of this documentation. But naming the file index.md will create a page at [base_url]/about).

If the file is given any name other than index.md or _index.md, then it will create a page with that name (without the .md). So naming a file in the root of your content directory about.md would also create a page at [base_url]/about. Another exception to that rule is that a filename starting with a YYYY-mm-dd date followed by an underscore (_) or a dash (-) will use that date as the page date, unless already set in the front-matter. The page name will be anything after _/- so a filename like 2018-10-10-hello-world.md will be available at [base_url]/hello-world

As you can see, creating an about.md file is exactly equivalent to creating an about/index.md file. The only difference between the two methods is that creating the about folder allows you to use asset colocation, as discussed in the Overview section of this documentation.

🔗 Front-matter

The front-matter is a set of metadata embedded in a file. In Zola, it is at the beginning of the file, surrounded by +++ and uses TOML.

While none of the front-matter variables are mandatory, the opening and closing +++ are required.

Here is an example page with all the variables available. The values provided below are the default values.

+++
title = ""
description = ""

# The date of the post.
# 2 formats are allowed: YYYY-MM-DD (2012-10-02) and RFC3339 (2002-10-02T15:00:00Z)
# Do not wrap dates in quotes, the line below only indicates that there is no default date.
# If the section variable `sort_by` is set to `date`, then any page that lacks a `date`
# will not be rendered.
# Setting this overrides a date set in the filename.
date =

# The weight as defined in the Section page
# If the section variable `sort_by` is set to `weight`, then any page that lacks a `weight`
# will not be rendered.
weight = 0

# A draft page will not be present in prev/next pagination
draft = false

# If filled, it will use that slug instead of the filename to make up the URL
# It will still use the section path though
slug = ""

# The path the content will appear at
# If set, it cannot be an empty string and will override both `slug` and the filename.
# The sections' path won't be used.
# It should not start with a `/` and the slash will be removed if it does
path = ""

# Use aliases if you are moving content but want to redirect previous URLs to the
# current one. This takes an array of path, not URLs.
aliases = []

# Whether the page should be in the search index. This is only used if
# `build_search_index` is set to true in the config and the parent section
# hasn't set `in_search_index` to false in its front-matter
in_search_index = true

# Template to use to render this page
template = "page.html"

# The taxonomies for that page. The keys need to be the same as the taxonomies
# name configured in `config.toml` and the values an array of String like
# tags = ["rust", "web"]
[taxonomies]

# Your own data
[extra]
+++

Some content

🔗 Summary

You can ask Zola to create a summary if you only want to show the first paragraph of each page in a list for example.

To do so, add <!-- more --> in your content at the point where you want the summary to end and the content up to that point will be also available separately in the template.

An anchor link to this position named continue-reading is created so you can link directly to it if needed for example: <a href="{{ page.permalink }}#continue-reading">Continue Reading</a>