- A standards-compliant site: markup, style and structure The book's case for web standards and its planning method for a department site (page types become data classes), updated from XHTML 1.0 and CSS 2 to HTML5, accessible markup and the content model of Exponential 6.
- Handling technical debt How technical debt is found, recorded and reduced in Exponential - the known gaps sections of the standards, the PHPStan baseline, checks that fail only on new problems, deprecations without removal dates, plain-file…
- How do I give an external application an API key? For a script that acts as one user, that user makes a personal API key under My account > API keys; for an application that signs users in, an administrator registers it under Setup > oAuth admin > New application and…
- Node templates by class Organizing a design's templates per content class and view mode: the override rule pattern, a folder layout by view mode, a naming scheme, a checklist of the class and mode pairs a site needs, and how the media and…
- Security for applications The security rules an Exponential application follows - permissions on every entry point, input validation, output escaping, form tokens, safe redirects, uploads, secrets, CSP-ready markup, logging and disclosure - with…
- Styling your blocks Where the CSS for your own blocks, view types and template blocks goes on the Fit & Healthy theme - the theme lists its own files in pagelayout/head/style.tpl and then loads what extensions add to design.ini - and how…
- Content Security Policy for your code Write templates and scripts that run under Exponential's Content Security Policy - no inline scripts, handlers or styles; page scripts as files, data-* attributes and JSON data blocks; adding sources; reading the CSP…
- The admin styling rules test What tests/tests/design/AdminStylingRulesTest.php checks in every administration design (no inline CSS, tokens only, dark values, focus outlines, stacking layers, identical component copies), how to run it, and how to…
- Input validation and output escaping Treat every input as untrusted and every output as needing escape - casting and allow lists in PHP, validating view parameters and posts, wash in templates for HTML and attributes, URLs, JSON and SQL, and the common…
- Override match keys Every Match key a content view override can use (class_identifier, class, node, object, parent_node, section, section_identifier, depth, url_alias, viewmode, remote ids, parent class, class group, state), what each…
- Access control in code Apply Exponential's permissions in every layer of an application - the current user, policy checks with limitations, content-level checks, running background work as the right user, integration users, and recording…
- Override ordering Which override wins when several rules match: rules are tried by Priority (lowest first; rules without Priority last), the first match wins, specific rules before general ones, the template editor's drag and drop…
- Export and import layouts Move layouts between installations, keep them in version control and roll a layout back - exp:layouts list, export and import with dry runs and strategies, the .zip format, and the page cache after a command-line…
- Fetch aliases What fetch_alias() does, the fetchalias.ini syntax (Module, FunctionName, Parameter[], Constant[]), every alias defined on a development installation with what it maps to and an example rendered on a development…
- Offline and performance for apps The landing page of the offline and performance pages for app developers - where answers are cached (the REST answer cache, Velocity, your back end, the app), how fresh content is, syncing for offline reading, and the…
- Override a single node A special template for one page (the front page, a campaign page, a contact page): matching by remote id rather than node id, priority over class rules, and when a layout or a dedicated class is the better tool.
- Release engineering How releases of Exponential and its extensions are made - the main branch and its 6.0.x-dev alias, where the kernel version lives, the extension release procedure with ezinfo.php and extension.xml, the file manifest…
- Scaling applications Grow an Exponential application from one server to many - measure first, caches and Velocity workers, the database, background work, search on Solr, shared storage and clustering, and what each step costs.
- Caching in applications Cache an application's work correctly - which kernel caches exist, cache blocks for template output, caching computed data in PHP with eZClusterFileHandler and expiry, clearing on change, caches under Velocity's…
- Caching on the server How the server caches what an app reads - the REST answer cache (per user, GET and HEAD only, 600 seconds by default, refusals never cached), its settings and cache group, what this means for freshness after publishing…
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