- Writing your own fetch function Offer your application's data to templates with fetch() - function_definition.php, the function collection class returning array( 'result' => ... ), parameter types and defaults, permission checks, and testing it.
- A performance audit for every release Check that a release did not make the theme slower - page weight, number of requests, image sizes, layout shift and largest contentful paint on the page list - and compare with the previous release.
- By hand: a cronjob part Add a nightly digest to mysite_hello - a CronjobPart class, the one-line script, a part of its own in cronjob.ini, running it with runcronjobs.php and scheduling it in the crontab. All PHP files passed php -l.
- Caches after a change Which cache to clear after which kind of change - menu settings, templates, layouts, content - in the administration's Clear cache box and with exp:cache, and what each choice covers.
- Case study: a pull request to an upstream author A real pull request to another organization's project, read section by section: what was broken, the one-line fix, the kept security intent, tests that fail without it, and what was not checked.
- Changelog entries: Added, Updated, Removed, Renamed, Fixed Write changelog entries and commit messages with one of five prefixes so a changelog can be assembled from history - what each prefix means, good and bad examples, and one change per entry.
- Configuration: INI files instead of YAML, PHP arrays or .env How Exponential is configured, for developers used to config/*.yaml, config/*.php, settings.py or application.properties - INI files in layers (defaults, extensions, siteaccesses, override), the order in which they win…
- Content classes for builders Designing the content model - classes, attributes, datatypes, identifiers, object name patterns, containers - and how the model connects to templates, overrides and fetches, with rules that keep it maintainable.
- Contributing back as a public body Why and how a public body gives code, translations, documentation and bug reports back to the Exponential project: what is worth sharing, the steps for publishing an extension, contributing fixes to the kernel, and the…
- Datatype storage, validation and templates The complete rating datatype: storage columns, validating posted input safely, values across versions, search and sorting, and the edit and view templates, all verified.
- DCAT and national portals Exponential has no DCAT output and no CKAN connector. This page explains the options for getting datasets published in Exponential into a national or European data portal: a DCAT template of your own, a separate catalog…
- Debugging a design Find out which template, override and stylesheet produced a piece of a page, why a new file is ignored, and how to check template syntax, with the debug settings, template path comments, the template checker and the…
- Designing your content model Turn a content inventory into classes, attributes, containers, view modes and relations - the rules of thumb that keep an Exponential content model simple to edit, template and change later.
- Digital products and downloads Selling files such as e-books, software, patterns or music with Exponential - what the built-in shop and the download system provide, what is missing for automatic delivery after payment, and three honest ways to close…
- Evaluating an old extension before you use it A checklist with commands to judge an extension you did not write: license, PHP 8 syntax, removed functions, access checks, escaping, SQL, inline scripts and database changes.
- Find an error by its reference Step by step - when a citizen or colleague reports an error page with a reference such as ERR-0123456789, find the log line and all lines of that request in the log viewer or with exp:logs, and hand it to developers.
- From YUI to expui YUI 2 and 3 are gone from Exponential 6.0.15. Find an old extension's YUI code and move it to jQuery and Exponential UI (expui): server calls, dialogs, tables, date pickers and events.
- Operators overview What template operators are, the two call styles, where operators come from (the template library, the kernel, PHP functions in template.ini, extensions), the families designers use most, and how to find out whether an…
- PHP string functions: transform The transforming operators of eZTemplateStringsOperator (substr, substr_replace, ristring, rstring, strtr, str_split, str_word_count, str_getcsv, strtok, ltrim, rtrim, lcfirst, chunk_split, addslashes, stripslashes…
- Reading settings with eZINI The eZINI API for PHP developers - instance(), variable(), hasVariable(), variableArray(), group() and hasGroup(), the order of the settings layers, environment variants, arrays and empty resets, defaults for missing…
Documentation license
This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.
Exponential Copyright © 1998-2026 Exponential Foundation and 7x