Tera Templates
Customizable templates without recompilation
sukr uses Tera, a Jinja2-like templating engine. Templates are loaded at runtime, so you can modify them without recompiling sukr.
Template Directory Structure¶
templates/
├── base.html # Shared layout (required)
├── page.html # Standalone pages
├── homepage.html # Site homepage
├── section/
│ ├── default.html # Fallback section index
│ ├── blog.html # Blog section index
│ └── projects.html # Projects section index
└── content/
├── default.html # Fallback content page
└── post.html # Blog post
Template Inheritance¶
All templates extend base.html:
{% extends "base.html" %} {% block content %}
<article>
<h1>{{ page.title }}</h1>
{{ content | safe }}
</article>
{% endblock content %}
Available Context Variables¶
All Templates¶
| Variable | Description |
config.title |
Site title |
config.author |
Site author |
config.nested_nav |
Whether hierarchical nav is enabled |
nav |
Array of navigation items |
page_path |
Current page path |
prefix |
Relative path prefix for assets |
base_url |
Canonical base URL |
title |
Current page title |
Each nav item has:
label— Display textpath— URL pathweight— Sort orderchildren— Child nav items (whennested_navis true)
Page Templates¶
| Variable | Description |
page.title |
Page title |
page.description |
Page description |
page.toc |
Whether TOC is enabled for this page |
content |
Rendered HTML content |
anchors |
Array of heading anchors for TOC |
Each anchor in anchors has:
id— Heading slug (forhref="#id")label— Heading textlevel— Heading level (2-6, h1 excluded)
Section Templates¶
| Variable | Description |
section.title |
Section title |
section.description |
Section description |
items |
Array of content items in section |
Content Item Fields (in items)¶
| Variable | Description |
item.title |
Content title |
item.description |
Content description |
item.date |
Publication date |
item.path |
URL path |
item.slug |
URL slug |
Template Override¶
Set template in frontmatter to use a custom template:
---
title: Special Page
template: special
---
This uses templates/page/special.html instead of the default.