- kickstart.ini templates for bundles How to keep the installation of a bundle as a reviewed kickstart.ini template with placeholders, render it at install time with mode 0600, run a dry run and the install, and remove it afterwards - with a complete SQLite…
- Login handlers - LDAP, textfile and your own Letting people sign in to Exponential with an account that lives in a directory or another system - how the chain of login handlers works, the LDAP handler and its group mapping, the textfile handler, writing a login…
- Module views as classes How module views, commands and cronjob parts are written as classes since Exponential 6.0.15 - the Runnable hierarchy, the one-line entry files, the scope a view receives, services shared by views and commands, the…
- OAuth2 authorization code flow Sign app users in with OAuth2 against Exponential - registering the client in oAuth admin, the authorize page and its exact redirect address, the oauth/authorize policy, exchanging the code at /api/auth/v1/oauth/token…
- Open data readiness What a public body checks before it publishes open data from an Exponential site - datasets as content, files, licenses, metadata, stable addresses, feeds and the REST API - with what Exponential provides and that it…
- Tests and CI for an upgraded extension Keep an upgraded extension upgraded: a lint on every supported PHP, small tests without a database that forbid inline code, and a GitHub Actions workflow, with the xrowextract workflow as a model.
- The ezcss and ezscript operators Reference for the eight packer operators of ezjscore (ezcss, ezcss_require, ezcss_load, ezcssfiles, ezscript, ezscript_require, ezscript_load, ezscriptfiles) with every parameter, default and behavior.
- The share folder: demo images, files and seed data What a theme's share/ folder is for - demo images and files, database schema and seed data (.dba) - how real themes use it, and the rules that keep it small, legal and free of backups and personal data.
- Version constraints your users write Recommend a Composer version constraint for your theme in its README - tilde, caret, exact pins and dev-main - what each lets an update bring, and how your numbering makes them safe.
- When settings are not enough: from builder to extension developer How to tell that a requirement needs code, and which extension point fits: a table from need to mechanism (operator, fetch function, module, datatype, event, cronjob, listener, handler) and its RAD wizard.
- Writing portable SQL How to write queries that run on every database Exponential supports - escaping and casting, limits as parameters, the dialect differences of each driver (row limits, ids, concatenation, MD5, bitwise operators, joined…
- A back end for your app Why most mobile apps on Exponential should talk to a small back end of their own (a backend for frontend) rather than to Exponential directly - the client secret, read-only credentials, caching, shaping answers and…
- Bundling content class packages with a theme When a theme's templates expect content classes (article, event, blog post), ship them as content class packages in the theme's packages/ folder, as sevenx_themes_simple does, and tell users how to import them.
- By hand: a PHPUnit test for your extension Tests that run without a database: phpunit.xml.dist, a bootstrap, operator tests and a file test against inline CSS and scripts, green on the kernel's PHPUnit.
- Case study: from eZChangeclass to expchangeclass One upgrade told from its commits: how a 2007 extension that changes an object's class became expchangeclass on PHP 8, with transactions, a policy, translations, CSP-safe menus and nine releases.
- Configuration managed by the deployment For public bodies with change management - how the ManagedByDeployment switch makes the administration unable to change settings, templates, extensions and packages in production, so every change goes through version…
- Content and presentation Why content, logic and presentation are kept apart, and the two places a page is made: the page layout and the content view.
- Content attribute and version reference Every attribute a template can read from a content object attribute (eZContentObjectAttribute, the items of data_map) and from a version (eZContentObjectVersion), with the PHP method behind each, values from a…
- CSS and JavaScript in an extension Load stylesheets and scripts the way the kernel expects: design.ini lists, ezscript_require and ezcss_require, the packer and its cache, CSP-safe scripts, no version queries.
- Database schema and .dba files Ship the tables of your application for every database engine - the .dba schema format, dumping it with ezsqldumpschema, installing it with ezsqlinsertschema, per-engine SQL files, an install command, and upgrades.
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