Creating a theme

Creating a theme is exactly like creating a normal site with Zola, except you will want to use many Tera blocks to allow users to easily modify it.

🔗Getting started

As mentioned, a theme is just like any site; start by running zola init MY_THEME_NAME.

The only thing needed to turn that site into a theme is to add a theme.toml configuration file with the following fields:

name = "my theme name"
description = "A classic blog theme"
license = "MIT"
homepage = "https://github.com/getzola/hyde"
# The minimum version of Zola required
min_version = "0.4.0"
# An optional live demo URL
demo = ""

# Any variable there can be overridden in the end user `config.toml`
# You don't need to prefix variables by the theme name but as this will
# be merged with user data, some kind of prefix or nesting is preferable
# Use snake_casing to be consistent with the rest of Zola
[extra]

# The theme author info: you!
[author]
name = "Vincent Prouillet"
homepage = "https://vincent.is"

# If this is porting a theme from another static site engine, provide
# the info of the original author here
[original]
author =  "mdo"
homepage = "https://markdotto.com/"
repo = "https://www.github.com/mdo/hyde"

A simple theme you can use as an example is Hyde.

🔗Working on a theme

As a theme is just a site, you can simply use zola serve and make changes to your theme, with live reload working as expected.

Make sure to commit every directory (including content) in order for other people to be able to build the theme from your repository.

If you want your theme to be featured in the themes section of this site, make sure that the theme meets the following three requirements:

  • have a screenshot.png of the theme in action with a max size of around 2000x1000
  • have a thorough README.md explaining how to use the theme and any other information of importance
  • be of reasonably high quality

When your theme is ready, you can submit it to the themes repository by following the process in the README.