Recent changes
Wednesday November 04 2026
-
Content attribute and version reference Updated Markdown page
Every attribute a template can read from a content object attribute (eZContentObjectAttribute, the items of data_map) and from a version (eZContentObjectVersion), with the PHP method behind each, values from a…
-
Control structures reference Updated Markdown page
Every parameter of if, elseif and else, switch and case (match, in, key and the default case), foreach (key, sequence, offset, max, reverse), for, while and do, and the loop helpers delimiter (with modulo), break…
-
Converting templates between template engines Updated Markdown page
The exp:template:convert command space converts templates between Exponential templates (.tpl), Smarty templates (.stpl) and Twig templates (.twig) in every direction - the six named commands, the general command, the…
-
Custom template functions Updated Markdown page
Writing a template function (a brace tag with named parameters and an optional body) in an extension - functionList, hasChildren, attributeList, process, evaluating parameters, rendering the body, registration in…
-
Data map and content Updated Markdown page
Reading the fields of a content object in templates - data_map, has_content, content, the raw data_text and data_int, and attribute_view_gui - proven field by field on a real article on a development installation…
-
Errors and debugging Updated Markdown page
The messages the template engine logs - unknown variable, unknown attribute, unknown operator or function, parser errors with line and column, a missing template, def/set/undef misuse - each produced on a development…
-
Functions versus operators Updated Markdown page
The two kinds of named things in the template language compared - template functions are tags that write output and control the template, operators compute values - with their registration arrays, the methods each PHP…
-
History of the template language Updated Markdown page
How the template language grew, told only from what the repository records - the git history from 2002, the changelogs from 2.9, the compiler of 2003, the def/if/foreach syntax of 2005 (version 3.6) that replaced let…
-
Lexical structure Updated Markdown page
How the parser reads a template - the delimiters, the kinds of tags (output tags, function tags, end tags, single tags), comments, literal blocks, ldelim and rdelim, escaping a brace inside a tag, the rule that removes…
-
Module result reference Updated Markdown page
Every key of $Result / $module_result found in the kernel - content, path, title_path, content_info and its 25 keys, view_parameters, pagelayout, navigation_part, left_menu, errorType and the rest - with the code that…
-
Module view templates Updated Markdown page
How a module view renders its templates - the PHP side (eZTemplate::factory(), setVariable(), fetch( 'design:...' )), the $Result array a view returns, and how the kernel hands it to the pagelayout as $module_result…
-
Moving a template from Smarty Updated Markdown page
A porting guide - a typical Smarty list template translated to the template language in three steps (variables, data from fetch, the loop with conditions, links, dates and escaping), each step rendered on a development…
-
Moving from Exponential templates (.tpl) to Exponential Smarty templates (.stpl) Updated Markdown page
Exponential renders Smarty 5 templates (.stpl) itself, next to .tpl - when to choose .stpl and when to stay with .tpl, what changes and what stays (operators, fetch, functions, overrides, caching, includes both ways…
-
Moving from Exponential templates (.tpl) to Twig templates (.twig) Updated Markdown page
Exponential renders Twig 3 templates (.twig, .html.twig) itself, next to .tpl and .stpl - when to choose .twig, what changes and what stays (operators as filters and functions, fetch, template functions, includes…
-
Namespaces Updated Markdown page
How the template engine keeps variables apart - the root and current namespace, the four ways to name a variable ($var, $ns:var, $:var, $#var), what include does with and without name=, the namespaces section and let…
-
Node attributes reference Updated Markdown page
Every attribute a template can read from a node (eZContentObjectTreeNode) - the 16 database fields and the 35 function attributes of its definition, the PHP method behind each, and the value each returned for a real…
-
Content object attributes reference Updated Markdown page
Every attribute a template can read from a content object (eZContentObject) - the 12 database fields and the 65 function attributes of its definition, the PHP method behind each, and the value each returned for a real…
-
The object model in templates Updated Markdown page
How a template sees the PHP objects of the content model - node, content object, version, data map, content object attribute and its datatype content - and the attribute protocol (attributes, hasAttribute, attribute)…
-
The persistent variable, inside Updated Markdown page
How $persistent_variable travels from a node view template to the pagelayout - the kernel sets it to false, reads it back from the root namespace after rendering, stores it in content_info and in the content view cache…
-
Template resources and overrides Updated Markdown page
How a template name becomes a file - the design: and file: resources, the ordered design bases of a siteaccess (site design, additional designs, standard design, each with its extension designs first), override.ini…