Files
sukr/docs/content/features/templates.md
Timothy DeHerrera 69cd81621f feat(docs): create sukr documentation site with fixes
Self-documenting docs site built with sukr itself (dogfooding):

Core changes:
- Rename package from nrd-sh to sukr
- Move personal site to sites/nrd.sh/
- Update AGENTS.md and README.md

Documentation site (docs/):
- Add site.toml with sukr.io base URL
- Create docs-specific templates with sidebar navigation
- Add dark theme CSS with syntax highlighting colors
- Document all features: templates, sections, syntax highlighting,
  mermaid diagrams, and LaTeX math rendering

Bug fixes:
- Render individual pages for all sections (not just blog type)
- Add #[source] error chaining for Tera template errors
- Print full error chain in main() for better debugging
2026-01-31 16:14:04 -07:00

2.7 KiB

title, description, weight
title description weight
Tera Templates Customizable templates without recompilation 1

Tera Templates

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
nav Navigation items
page_path Current page path
prefix Relative path prefix for assets
base_url Canonical base URL
title Current page title

Page Templates

Variable Description
page.title Page title
page.description Page description
content Rendered HTML content

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.