Work with the Handlebars Templates
Antora combines the Handlebars templates with the converted AsciiDoc content and other UI model data to make the pages in the site. These “logic-less” templates are mostly HTML with some special mustache tags sprinkled in where content should be inserted.
What do the templates do?
The layout templates, which are stored in src/layouts/, provide the main page structure. The partial templates, in src/partials/, fill in different regions of a page, such as the navigation and footer.
The templates read from a model that’s populated by Antora.
The model can be accessed by enclosing path expressions in mustaches, which are {{
and }}
or {{{
and }}}
(e.g., {{{page.title}}}
).
The double mustaches escape the value for HTML, whereas triple mustaches insert the value as is.
If the mustaches are preceded by a backslash (e.g, \{{ ), the expression will be disabled.
This often comes up when constructing URLs.
To avoid this problem, you should use forward slashes in URLs instead of backslashes.
|
When {{
is immediately followed by >
, that invokes a partial (from the partials directory) and inserts the result (e.g., {{> head}}
.
In other words, that’s not a model reference like the other mustache expressions.
Template variables
This model is not final. Variable names and purposes may change. |
Here’s an overview of the available UI model:
Name | Description |
---|---|
Information about the site. |
|
|
The base URL of the site, if specified in the playbook. |
|
The pathname (i.e., subpath) of the site.url under which the site is hosted (e.g., /docs).
This value is empty if site.url is not defined, has no path segment, or matches /.
Can be removed from the site.url value using a helper (e.g., |
|
The title of the site. |
|
A map of all the components in the site, keyed by component name. Properties of each component include name, title, url, latest, and versions. Properties of each version include name (since 2.3), version, displayVersion, prerelease (if set), title, url, asciidoc (since 2.3), and navigation. The navigation property on each version provides access to the navigation menu for that component version. |
|
Information about the site UI. |
|
The default page layout used for this site. |
|
The absolute base URL of the UI. |
Information about the current page. |
|
|
The page title in HTML format (often used as the primary heading). This value may include inline HTML elements and XML character references. |
|
The main article content in HTML format. Sourced from AsciiDoc and converted to HTML by the Asciidoctor processor. |
|
Any AsciiDoc document attribute prefixed with |
|
The text of the description attribute in the AsciiDoc header, if specified. |
|
A comma-separated list of keywords defined in the AsciiDoc header, if specified. |
|
Information about the component for the current page. Properties include name, title, url, latest, and versions. |
|
Information about the component version for the current page. Properties include name (since 2.3), version, displayVersion, prerelease (if set), title, url, and asciidoc (since 2.3). |
|
The name of the module for the current page. |
|
The name of the version for the current page. |
|
The name of the display version for the current page. |
|
All versions of the current page, including the current page. Each entry has the properties url, string, and missing. |
|
An array of breadcrumb items that represent the current selection in the navigation tree. Includes text-only and external items. |
|
The hierarchical navigation menu for the component version of the current page.
Each navigation item contains the property |
|
The URL for the current page. This value is a root-relative path. It’s often used as the base URL to generate relative URLs from this page. |
|
The canonical URL for the current page. The canonicalUrl is only set if site.url is set. If there are multiple versions of the component, the canonical URL is the qualified URL of the most recent version of the page (excluding any prerelease versions). If there’s only a single version of the component, the canonical URL is the qualified URL of the current page. |
|
The URL to edit the current page (typically a web-based editor on the git host). The only hosts supported right now are github.com, gitlab.com, pagure.io, and bitbucket.org. |
|
This value will be true if the repository requires authentication or the repository URL embeds credentials.
In the default UI, if this value is |
|
Indicates whether the current page is the home page of the site. |
|
The page layout for the current page. |
|
The next reachable page in the navigation tree (skips past text-only and external items). |
|
The previous reachable page in the navigation tree (skips past text-only and external items). |
|
The parent page in the navigation tree (skips past text-only and external items). |
env |
The map of environment variables (sourced from |
siteRootPath |
The relative path to the root of the published site. |
uiRootPath |
The relative path to the root directory of the UI. |
antoraVersion |
The version of Antora used to build the site (specifically the version of the @antora/page-composer package). |
This model is likely to grow over time.
Modify a template
Let’s consider the case when you want to add a new meta tag inside the HTML head.
First, make sure you have set up the project and created a development branch. Next, open the file templates/partials/head.hbs and add your tag.
<meta class="swiftype" name="title" data-type="string" content="{{page.title}}">
Each template file has access to the template model, which exposes information about the current page through variable names. The variables currently available are listed in Variables available to the Handlebars templates (top-level variables in bold).
Save the file, commit it to git, push the branch, and allow the approval workflow to play out.