- Overriding templates How the template system finds a template (override rules first, then the designs in order), the syntax of override.ini.append.php, and the match keys.
- Packaging your application as an extension Turn an application into an installable extension - repository layout, composer.json with the extension type, extension.xml and ezinfo.php, license and copyright, install steps, settings defaults, documentation and the…
- Publish an accessibility statement page Step by step - publish your accessibility statement as a page of your Exponential site (no template ships), with a stable address such as /accessibility, a link in every footer, a feedback route, and versions kept for…
- Rich text in apps Show article bodies (ezxmltext rich text) in an app - why the REST value is plain text, the three options (plain text, rendered XHTML in a web view, a structured export from a server endpoint), links and embedded images…
- Static state traps An explanation of the bugs that come from state kept between requests or tests - function statics, register-once flags, statics assigned outside the class body, per-request caches keyed by time, settings and singletons…
- Training partners For partners who train people in Exponential - where training fits in the program (Distribution profile, knowledge products, points), the free material to build on, audiences and course ideas, and what is still to be…
- URL wildcards and custom aliases Make short addresses and pattern redirects in the administration - global URL aliases for module views, URL wildcards with placeholders, redirect or direct, testing an address, and the order in which they are tried.
- How do I preview a draft before I publish it? Click Preview in the left column of the edit form; the preview shows the draft in a site design you choose under View control (siteaccess, translation, location, view mode) and in several screen sizes, with Back to edit…
- Migrating URLs Keep the old addresses of a site working after a move to Exponential - collect them, build a mapping file, import it with a preview and a dry run, test it, undo it if needed, and export it for the web server or a backup.
- The kernel service container How PHP code asks the kernel for shared objects by name (expKernelServices::get()), how to define a service in kernelservices.ini with a class or factory, arguments, a scope and tags, what worker, request and prototype…
- attribute_view_gui Drawing one field of content with attribute_view_gui: how it picks the datatype template, extra parameters such as image_class, override keys (attribute_identifier, class_identifier) to restyle one field of one class…
- Check who changed a page For editors and team leads - find out who changed a page and when, from the versions page (creator and dates of each version) and the node's Audit tab (every recorded action), and what each source can and cannot tell…
- Coming from Slim, CodeIgniter, Yii, CakePHP or Laminas A guide for developers from Slim, CodeIgniter, Yii, CakePHP and Laminas (Zend Framework) - how their controllers, models, views, configuration, middleware and modules map to Exponential, which conventions will feel…
- Common template tasks Recipes from the book (top menu, breadcrumb, tree menu, edit links, dates, shortening text, user panel, keywords) rewritten with foreach, current operators and no inline style.
- Composer packages and Packagist Publish an extension as a Composer package - the package name and type, version constraints, tags, Packagist and its webhook, installing a package into an installation, and updating safely.
- Distribution obligations checklist The checklist a reseller works through before handing copies of Exponential to anyone - images, appliances, downloads, OEM products, files a customer takes away - covering license texts, copyright notices, source code…
- Forms with the information collector How visitor forms work in Exponential - collector attributes, the content/action post, validation, the result page, mail to a receiver, form types (form, feedback, poll) in collect.ini, and where submissions are stored.
- FrankenPHP for PHP developers What a PHP developer needs to know when Exponential is served by FrankenPHP through exp:velocity - classic mode with a clean state per request, why worker mode is not offered, the embedded PHP and its ini settings, the…
- Keep editors on the admin4 design Step by step - make admin4, the administration design Exponential tests against WCAG 2.2 AA, the design of the administration siteaccess, and limit the per-session design switch so staff with disabilities stay in the…
- Keyboard and focus Making every control of a design usable with a keyboard: a visible focus ring with :focus-visible, a logical tab order, real buttons and links, menus and dialogs that manage focus, and admin4's focus rules as an example.
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