The functionality and logic constructs available to templates to form a presentation from a content object. Templating code is generally designed as a less functional version of the native language a CMS is built in for purposes of security, simplicity, and stability.
Common templating languages (and their native counterparts) are:
- Razor (C#)
- Twig (PHP)
- Smarty (PHP)
- Freemarker (Java)
- Velocity (Java)
Functionality for templating languages varies. At the most basic level, a language will allow simple token replacement, whereby a specific text constructs within HTML will be replaced with the value of an attribute.
More advanced functionality will allow for control structures or flow control, which is the looping and branching of logic and output.