Ace Templates
In addition to Go templates and Amber templates, Hugo supports the powerful Ace templates.
For template documentation, follow the links from the Ace project.
- Ace templates must be named with the ace-suffix, e.g.
list.ace
- It’s possible to use both Go templates and Ace templates side-by-side, and include one into the other
- Full Go template syntax support, including all the useful helper funcs
- Partials can be included both with the Ace and the Go template syntax:
= include partials/foo.html .
1{{ partial "foo" . }}
One noticeable difference between Ace and the others is the inheritance support through base and inner templates.
In Hugo the base template will be chosen in the following order:
1. <current-path>/<template-name>-baseof.ace, e.g. list-baseof.ace
2. <current-path>/baseof.ace
3. _default/<template-name>-baseof.ace, e.g. list-baseof.ace.
4. _default/baseof.ace
5. <themedir>/layouts/_default/<template-name>-baseof.ace
6. <themedir>/layouts/_default/baseof.ace
In the above, current-path
is where the corresponding inner template lives, list.ace
, single.ace
, index.ace
…
.:
index.ace
./blog:
single.ace
baseof.ace
./_default:
baseof.ace list.ace single.ace single-baseof.ace
Some examples for the layout files above:
- Home page:
./index.ace
+./_default/baseof.ace
- Single page in the
blog
section:./blog/single.ace
+./blog/baseof.ace
- Single page in another section:
./_default/single.ace
+./_default/single-baseof.ace
- Taxonomy page in any section:
./_default/list.ace
+./_default/baseof.ace
Note: In most cases one baseof.ace
in _default
will suffice.
Note: An Ace template without a reference to a base section, e.g. = content
, will be handled as a standalone template.