- 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…
- Performance and caching for websites Make a site fast - the cache layers from browser to database, the levers in order of effect, measuring with exp:benchmark, and the rule for clearing caches in the right order.
- How do I publish content at a later time? Give the content class a date and time field, create a workflow with the Wait until date event pointing to that field, connect it to Before publishing content and let the workflow cronjob run; editors then set the date…
- Contributing code back How partner developers contribute fixes and features to the Exponential kernel - why it pays off, the workflow from fork to merged pull request, commit message rules, the file manifest and CI, the merge policy, and…
- 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…
- External resources and CDNs When a design loads anything from another host (fonts, scripts, maps, videos, analytics): the costs in speed, privacy and security policy, the self-hosted alternatives the shipped themes use, consent before third-party…
- How do I set up approval before publishing? Create a workflow with the Approve event, choose the sections, versions, approvers and excluded groups, connect it to Before publishing content under Triggers, give approvers the collaboration module and check that the…
- 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.
- How do I add an attribute to a content class? Open the class under Setup > Classes, click Edit, choose the attribute type and Add attribute, fill in name, identifier and the flags, and press OK; every object of the class gets the new, empty field.
- 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…
- Caching for designers The caches a designer's templates live in (view cache, cache-blocks, compiled templates, packed assets, Velocity's response cache), what each keeps, what clears it, and the template rules that keep cached pages correct…
- Contributing extensions back upstream How partners improve existing extensions together with their authors - finding the upstream, upgrading an extension to current Exponential and PHP, sending changes back, forks and rebranding done respectfully, and…
- 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…
- How do I change how many versions of an object are kept? The limit is content.ini [VersionManagement] DefaultVersionHistoryLimit, with VersionHistoryClass[] for single classes; when an object reaches it, its oldest archived version is removed, and bin/php/cleanupversions.php…
- HTTP caching, proxies and CDNs Let browsers, reverse proxies and CDNs keep pages and static files for anonymous visitors - HTTPHeaderSettings, StaticMaxAge, the role-aware HTTP cache, trusted proxies, and what never to cache.
- 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…
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