- Performance measurement and benchmarks How to measure Exponential's performance before and after a change - exp:benchmark in its http, kernel, micro and baseline modes, the micro benchmark CI runs on every push, the debug bar's timing and SQL figures…
- Remote services with expservices Drive Exponential from scripts, apps and other front ends with expservices - over a thousand named services, discovery, the answer envelope, the shell and Python clients, tokens, policies per service, and adding a…
- Siteaccess operators The kernel operators that know the siteaccesses of an installation - siteaccess_url, siteaccess_menu, siteaccess_menu_key and language_switcher - with their parameters, the settings behind them, what they return, how…
- SVG and image formats Which image formats editors may upload, which formats pages show, how SVG is sanitized and served safely, and when to use SVG, WebP, AVIF, PNG or JPEG on a site.
- Testing: PHPUnit, database tests and checks How to test an application on Exponential for developers used to WebTestCase, Laravel's HTTP tests, Django's test client or Rails system tests - PHPUnit without a database for services, tests against a throwaway…
- The help system for extensions Putting an extension's documentation into the admin help: README.md and INSTALL.md on top, Markdown in doc/, shown while the extension is active (ExtensionDocDirs for an inactive one), front matter and audience ids…
- Translating template strings How texts in templates reach translators and back: contexts and sources in i18n calls, translation.ts files in the theme extension, TranslationExtensions, the untranslated and English catalogues, checking coverage…
- Validating input and casting How PHP code in Exponential turns untrusted input into safe values - reading through eZHTTPTool and $Params, (int) and (float) casts with ranges, allow lists with strict in_array, string length and character rules…
- How do I add a link in the Online Editor? Select the text, click Insert/edit link, enter an address or choose an object of the site with Browse, and click Insert; links to objects keep working when the object moves.
- A maintenance calendar A rhythm for theme maintenance - weekly watching, per-release testing and audits, quarterly dependency and license reviews, a yearly review of support policy and compatibility - as a calendar to adapt.
- Check file and directory permissions Step by step - check that only var/ (and, where needed, settings/) is writable by the site's PHP, that every process writing var/ uses the same owner, and that new files are not world-readable, with the hardened modes…
- Creative partners For creative partners - design studios, web and communication agencies - what the profile means, what to know about Exponential's designs, layouts and editor experience, how to work with developers, and how creative…
- Debugging, logging and errors The Exponential counterparts of the Symfony profiler, Laravel Telescope and Debugbar, Django Debug Toolbar and framework loggers - debug output and the Exp debug bar, template path comments, eZDebug and eZLog, the log…
- Debugging with eZDebug The kernel's debug API for PHP developers - eZDebug::writeNotice, writeWarning, writeError and writeDebug with __METHOD__ labels, conditional debug with eZDebugSetting and debug.ini, timing points and accumulators, who…
- Default credentials and first sign-in Which administrator password a bundled installation ends up with for each installer, why no bundle may ship a fixed or shared password, how to hand a generated password to the recipient once, how to make the first…
- Documenting a theme on eZpedia eZpedia, the community wiki of the Exponential family under the GNU Free Documentation License - what it holds for designers (design extension tutorials, design structure), how to contribute a page about your theme, and…
- Documenting your extension, including help pages Document an extension where people look: README.md and INSTALL.md on top, the rest as Markdown in doc/, in English; the help center shows it while the extension is active, with front matter, featured pages and context…
- expservices: remote services for extensions What expservices offers extension authors - services over ezjscore with declared access, paging and one envelope, a catalogue, API tokens - and how to write a service of your own.
- Handing over to a customer or a new provider How a reseller hands a site over at the end of a project or a contract - a complete export (database, var/storage, settings), accounts, domain, custom code with the GPL duties, documentation, the order of steps…
- Headless Exponential Use Exponential as a content back end for apps and JavaScript front ends - the REST API, expservices, rendered XHTML, images, URLs, preview, caching, permissions, and what stays easier with the built-in templates.
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