- Roles and policies, step by step How the role system decides who may do what: a role is a set of policies (module, function, limitation), assigned to users and groups, with the functions of the content module and what changed since the book.
- Search engine integration How site search is wired in Exponential and how to connect an external search service - the built-in engine, the ezpSearchEngine plugin interface, Solr through ezfind and exp:solr, delayed indexing, reindexing after…
- The si unit operator si from eZTemplateUnitOperator - formatting a number with a unit and a decimal or binary prefix (file sizes, lengths, weights) from units.ini, with every parameter, the auto prefix rule and examples rendered on a…
- URL operators Building links and asset URLs that work under every siteaccess and installation path: ezurl for site links, ezroot for root paths, ezdesign and ezimage for design files, the quote parameter (double, single, no) and full…
- Write a cronjob part A task guide for scheduled work in an extension - the cronjob class extending Exponential\Runnable\CronjobPart, the entry file in cronjobs/, the [CronjobPart-name] block in cronjob.ini, running it with runcronjobs.php…
- Writing a custom datatype Add a new field type to Exponential - the eZDataType subclass, registration in content.ini, storage in the attribute columns, input and validation, view and edit templates, and the RAD datatype wizard.
- Authorization: roles, policies and limitations The Exponential permission system for developers used to voters, gates, policies, Django permissions or CanCan abilities - roles made of policies, module functions and limitations, assignments to users and groups…
- Case study: two-factor authentication without inline scripts How sevenx_authentication_2fa lost its inline script, style block and style attributes in six small releases, with a test at each step, and why its colors keep token fallbacks.
- Creating a content class The steps and the choices in creating a class: groups, name, identifier, the object name pattern, attributes, and what happens to existing objects when you change it.
- expservices tokens in apps Authenticate an app against the expservices remote services - session sign-in with expsession::login, making a personal token (expt_) with expsession::tokenCreate, sending it as Bearer and X-Exp-Token, writes without a…
- Payment gateways and the shop Integrating the shop module with payment providers and ERP systems - how payment gateways plug into the checkout workflow, registering a gateway of your own, the ezpaypal extension as a model, passing orders to an ERP…
- Plain CLI scripts with eZScript and ezexec The classic way to write a command line script with eZScript and eZCLI, which still works and which you will meet in older extensions - instance(), startup(), getOptions(), initialize(), shutdown() - plus running…
- Sending mail with eZMail Send mail with eZMail and eZMailTransport::send() - receivers, sender, subject, body, content type - using the site's transports, a template for the body, and the file transport for tests.
- Testing with axe and the keyboard For teams that keep a public site accessible release after release - a repeatable routine of automated checks with an axe-based tool and manual keyboard and screen reader passes, how the Exponential project itself…
- The datatype life cycle When the kernel calls each eZDataType method - class attribute editing, object creation, edit and validation, store and publish, copy and translation, trash and removal, search, sorting, string and package…
- The design wizard's parts, one by one Reference of every part the design extension wizard can write - the files each produces, whether it is on by default, and what to change in the result.
- The fetch and fetch_alias operators fetch and fetch_alias from eZTemplateExecuteOperator - how a template reaches a module's function_definition.php through eZFunctionHandler and eZModuleFunctionInfo, parameters, results and failures, what the compiler…
- The i18n operator Translating interface texts in templates with i18n: the context, the translator comment, placeholders with a hash or numbered with an array, washing, the x18n and d18n variants, and naming contexts for a theme.
- Translations in an extension Every text in every language: i18n in templates and ezpI18n::tr() in PHP, translation.ts files, TranslationExtensions, the cache, fallbacks between locales, and coverage checks.
- AI providers, the job queue and MCP What Exponential offers for connecting AI providers and background work - expai (Exponential Intelligence) with Anthropic, OpenAI-compatible services and local models, expqueue as a job queue for integrations, the…
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