Template functions

Template functions:

  • implement control flow and conditionals, for example if() and switch()
  • render widgets and snippets of HTML, for example std:ui:notice() and std:form:token()
  • include other templates in the current template.

There are three categories of template functions provided by the platform:

Plugins can define their own template functions. These are made available to all plugins, so must be in an appropriate namespace.

Function syntax

A function is formed of

  • the function name
  • an open bracket (
  • zero or more arguments, separated by spaces (not commas)
  • a close bracket )
  • an optional anonymous block
  • zero or more named blocks

A block is a number of other language elements enclosed in {} brackets, and a named block is prefixed by a name.

For example, the usual if() function looks like

if(value) {
    "True"
} else {
    "False"
}

and is formed of the name, a single argument in () brackets, an anonymous block containing the literal "True" and a named else block containing the literal "False".

But of course, functions can be as simple as this

<form method="POST"> std:form:token()
    // ...
</form>

where std:form:token() includes the standard CSRF token into your view.