The most commonly used templating feature is substitution:
My name is $name
You can use dotted notation to traverse objects. For example:
$author.person.primaryEmail
When a variable name is flush against other text you must use curly braces to separate it:
Jim is a ${vice}maniac.
However, the template language is savvy enough to handle sentence endings and variables:
My name is $name. $foo$bar
The #if statement can be used to detect if a value is blank/undefined/NULL. The most common use for an #if statement is showing a different form of content if something is undefined.
#if $keywords $keywords #else There are no keywords! #end if
The #else part is optional:
#if $keywords <span class=keywords>$keywords</span> #end if
The #for statement is used to loop through any kind of list.
#for $author in $authors $author.person.fullName #end for
You can combine statements. For example,
Template.html:
Authors.html:$name <p> $content #include "authors.html"
#if $authors <table class=Author> #for $author in $authors <tr class=Author> <td class=Author> $author </td> </tr> #end for </table> #end if
Here is an example that lists several names and puts commas between them. Note the use of #slurp to slurp up extra whitespace that might interfere.
#set sep = '' #for $author in $authors ${sep}${author.person}#slurp #set sep = ', ' #end for