Auto Extend Plugin

type less, think more

Hyde is built with the goal of separating content from presentation as much as possible without losing the power of template inheritance. It is a hard balancing act and auto extend is one big step on the wire.

Extend

The auto extend plugin relies on the metadata plugin for its configuration. You can specify an extends property in your metadata to let the plugin know the base template for that page. The plugin will automatically emit an {% extends %} statement in the output.

The following two configurations are equivalent.

{% extends "base.html" %}
{% block content %}
Hello World!
{% endblock %}

hello.html

===
extends: base.html
===
{% block content %}
Hello World!
{% endblock %}

hello.html

Default blocks

It gets even better. The auto extend plugin also allows you to specify the default block so that you can take out another wrapping curly brace.

The following snippet is equivalent to the above ones:

===
extends: base.html
default_block: content
===
Hello World!

hello.html

As you can see, this makes the page layout free.

Inheritance

In combination with metadata inheritance, this plugin can completely eliminate redundancy on many sites.

Given this configuration:

site_name: Hello World
meta:
extends: base.html
default_block: content

site.yaml

the output of the following file be same as what is generated by any of the above snippets.

Hello World

hello.html

Just content!