2022-04-29 18:03:21 +00:00
|
|
|
|
+++
|
|
|
|
|
title = "Zola Cookbook"
|
|
|
|
|
description = "Snippets I've developed that I want to keep"
|
|
|
|
|
date = 2022-04-27T18:00:00+00:00
|
|
|
|
|
updated = 2022-04-27T18:00:00+00:00
|
2022-06-09 03:50:30 +00:00
|
|
|
|
template = "section.html"
|
2022-04-29 18:03:21 +00:00
|
|
|
|
sort_by = "weight"
|
|
|
|
|
weight = 5
|
|
|
|
|
draft = false
|
|
|
|
|
[taxonomies]
|
|
|
|
|
documentation=["Reference"]
|
|
|
|
|
categories=["Web Development", "Static Site Generation", "Zola"]
|
|
|
|
|
+++
|
|
|
|
|
|
|
|
|
|
[Zola](../zola) is the static site generator I use for most of my websites that
|
|
|
|
|
don't require much dynamic functionality.
|
|
|
|
|
|
|
|
|
|
## Generating Nested Lists from Data
|
|
|
|
|
|
|
|
|
|
Example data:
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
{
|
|
|
|
|
"definitions": [
|
|
|
|
|
{ "dt": "undefined", "dd": " the thing is undefined." },
|
|
|
|
|
{ "dt": "defined", "dd": " the thing is defined.", definitions: [
|
|
|
|
|
{ "dt": "truthy", "dd": "the defined thing is truthy" },
|
|
|
|
|
{ "dt": "falsy", "dd": "the defined thing is falsy" }
|
|
|
|
|
]}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Tera macro to render a nested list:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
{% macro definition_body(source) %}
|
|
|
|
|
<dl>
|
|
|
|
|
{% for entry in source %}
|
|
|
|
|
<dt><kbd>{{ entry.dt | safe }}</kbd></dt>
|
|
|
|
|
<dd>
|
|
|
|
|
{{ entry.dd | safe }}
|
|
|
|
|
{% if entry.definitions %}
|
|
|
|
|
{{ self::definition_body(source=entry.definitions) }}
|
|
|
|
|
{% endif %}
|
|
|
|
|
</dd>
|
|
|
|
|
{% endfor %}
|
|
|
|
|
</dl>
|
|
|
|
|
{% endmacro %}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Zola shortcode to import the macro template into Markdown and start the render:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
{%- import 'macros/definition_body.html' as renderer -%}
|
|
|
|
|
<div>
|
|
|
|
|
{% set content = load_data(path=source) %}
|
|
|
|
|
{{ renderer::definition_body(source=content.definitions) }}
|
|
|
|
|
</div>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Invocation in Markdown file, providing the data source:
|
|
|
|
|
|
|
|
|
|
```
|
2022-06-09 03:50:30 +00:00
|
|
|
|
{{ definition_list(source="@/docs/zola/definitions.json") }}
|
2022-04-29 18:03:21 +00:00
|
|
|
|
```
|
|
|
|
|
|