- Override by section Giving an area of the site its own templates with sections: section_identifier (portable) versus section id, combining with class rules, a section-specific stylesheet, and section classes on the body from the pagelayout.
- Roll a layout back Take a safety copy of a layout before you change it and put it back afterwards with exp:layouts - export, change, import with overwrite and publish, which purges the page cache. Worked through on the shared layout…
- Testing your site's accessibility A practical accessibility test routine for an Exponential site - which pages to test, automatic checks, keyboard and screen reader passes, zoom and color, writing up findings, and keeping it tested after launch.
- Version numbers and immutable tags The two release rules every Exponential engineer must know - the last position of a version keeps counting (0.0.4.9 is followed by 0.0.4.10), and a published tag or release is never moved, deleted, re-cut or replaced…
- Caching in the app Cache Exponential content in an app so it starts fast and saves data - what to cache, cache keys per user, version and language, freshness with dateModified and childrenCount, invalidation after writes, images, the API…
- Changelogs and upgrade notes Where Exponential records what changed and what an installation has to do about it - the changelog pages per version and per extension, the Added, Updated, Removed and Renamed sections, the upgrade notes in…
- Clustering and shared storage Run Exponential on several web servers - the cluster file handlers (eZFSFileHandler, eZDFSFileHandler) in file.ini, the DFS mount and its database, sessions, cron and queue workers, and how application code stays…
- No inline JavaScript Writing designs without inline script code: no script blocks with code, no on* handler attributes, no javascript: links; event delegation with data attributes, JSON configuration blocks, progressive enhancement, and the…
- Override by parent Templates that depend on where content sits: matching the parent's class (parent_class_identifier), the parent's remote id, the parent node, a URL subtree (url_alias prefix) or the depth, with examples for blog posts…
- Dependency management with Composer How Exponential manages its dependencies with Composer - the root package and its type, extensions as se7enxweb packages with tilde constraints, no committed lock file, the branch alias for main, the development tools…
- Profiling and performance Find out where an application spends its time - exp:benchmark in HTTP, kernel and micro modes, comparing against a baseline, the debug bar's timings and queries, OPcache and Velocity, and the usual causes of slow pages.
- Rich text templates How rich text (the XML text datatype) becomes HTML through one template per tag in content/datatype/view/ezxmltags: paragraph, header, link, table, lists, embed, custom; the variables tag templates receive; classes…
- Syncing and offline reading Keep part of an Exponential site readable on a device without a network - choosing what to sync, a full and an incremental sync with the list route and dateModified, expnode::modifiedSince and its limit (publish date)…
- View cache and cache blocks How the content view cache and template cache blocks work - what is cached per page, which publish clears what (viewcache.ini), cache-block keys, expiry and subtree expiry, and how to debug stale output.
- Backward compatibility policy What counts as a breaking change in Exponential - settings, templates, PHP API, database, command line, behavior and files - the rules that come with one (upgrade notes, opt-in behavior, safe defaults, no renamed…
- Custom tags templates Custom tags in rich text (factbox, quote, strike, sub, sup and your own): declaring them in content.ini, inline or block, custom attributes, the template named after the tag, and keeping their markup accessible and…
- Symfony and the legacy bridge When an application needs Symfony - the legacy bridge that runs the Exponential 6 kernel inside the Symfony platform, which line fits which platform, what stays in legacy, and how to plan a gradual move.
- Web apps, CORS and CSP Build a browser app (PWA, single-page app) on Exponential - same origin versus another origin, the absence of CORS headers and the options around it, the site's Content Security Policy and connect-src, sessions and form…
- Application creators: frequently asked questions Short answers to the questions application creators ask most - classes not found, changes that do not show under Velocity, permissions, settings, forms refused, JSON, cron, queues, tests and where to ask.
- The persistent variable Passing values from a view template to the pagelayout with persistent_variable: setting it as a hash, reading it from $module_result.content_info.persistent_variable, why it survives the view cache, ezpagedata_set as a…
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