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

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

If the file is given any name other than or, then it will create a page with that name (without the .md). So naming a file in the root of your content directory would also create a page at [base_url]/about. Another exception to that rule is that a filename starting with a datetime (YYYY-mm-dd or a RFC3339 datetime) 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 will be available at [base_url]/hello-world. Note that the full RFC3339 datetime contains colons, which is not a valid character in a filename on Windows.

As you can see, creating an file is exactly equivalent to creating an about/ 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"]

# Your own data

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, wrapped in a paragraph with a zola-continue-reading id, so you can link directly to it if needed for example: <a href="{{ page.permalink }}#continue-reading">Continue Reading</a>