- Transferring the repository and the Packagist package Move a theme's GitHub repository and Packagist package to a new owner without breaking installs - GitHub's transfer and redirect, the package name question, Packagist maintainers and the update hook.
- Write a workflow event type The PHP side of a workflow event type - the class extending eZWorkflowEventType, registerEventType(), setTriggerTypes(), execute() and its statuses, the process parameters, settings per event, deferring to cron, and…
- Writing a cronjob script Write the script a cronjob part runs - the class-based form with CronjobPart, the variables it receives, output and quiet mode, a description for the console, batches, idempotence, users and errors.
- Adopting an abandoned theme Take over a theme whose author stopped maintaining it - ask first, then continue in the original repository if you are given access, or fork it under a new name; and how old extensions from the community archive can be…
- Capstone: a complete extension from idea to release All tutorials in one releasable extension: a plan, the full file tree, composer.json, README, tests, the checks before a release, version 0.1.0, publishing and announcing.
- composer.json for a theme Write the composer.json that makes a theme installable with composer require - name, description, type ezpublish-legacy-extension, license, authors, support, require, suggest and the extension name - with a complete…
- Console commands The bin/php/console entry point - command names and namespaces, extension commands found automatically, describing your own commands, options and exit codes, and the commands an application developer uses every day.
- Events, listeners and filters The kernel's event hub ezpEvent for PHP developers - notify and filter events, registering listeners in site.ini [Event] and [RunnableSettings] or with attach(), the events the kernel sends, writing a filter that…
- INI files an extension author meets Which kernel INI file and section an extension adds to for each purpose - site, module, content, workflow, cronjob, design, override, ezjscore, menu, admininterface, rad - and how append files work.
- JSON endpoints for apps The landing page of the JSON endpoint pages for app developers - the ezjscore call interface, the expservices remote services an app is most likely to use, and when to ask for a server function of your own.
- Kernel class overrides: the last resort Replacing a kernel class through the override autoload map: how it works, what it costs, the wizard and its drift check, and the lighter mechanisms to try first.
- Module view templates How a module view renders its templates - the PHP side (eZTemplate::factory(), setVariable(), fetch( 'design:...' )), the $Result array a view returns, and how the kernel hands it to the pagelayout as $module_result…
- PHP string functions as operators The sixty-odd PHP string functions available as template operators since 6.0.13 (strlen, substr, str_contains, sprintf, number_format, strip_tags, ...), how the piped value maps to PHP's first argument, and…
- Shared layouts and zone linking Why one header serves every page - shared layouts, linked zones and the real link map of the Fit & Healthy site - and the "why doesn't my change appear" cases that come from it.
- The perceivable principle WCAG principle 1, perceivable, explained for a public body running Exponential - what editors, designers and developers each do for text alternatives, media, adaptable structure and distinguishable presentation, and…
- Translations, locales and right-to-left Internationalization in Exponential for developers used to Symfony Translation, Laravel's lang files, gettext in Django and Rails I18n - interface strings in Qt Linguist .ts catalogues, the i18n operator and…
- URL, design, INI and HTTP operators The ten operators of the kernel's eZURLOperator (ezurl, ezroot, ezdesign, ezimage, exturl, ezsys, ezhttp, ezhttp_hasvariable, ezini, ezini_hasvariable), how the ezurlmultisite extension takes them over on a development…
- Workflows and triggers What a workflow, an event, a trigger and the multiplexer are, which event types ship today, and where to build a first approval workflow.
- Writing an import script A complete, worked import for Exponential - reading a CSV export of an ERP, running as a service account, create-or-update by remote_id with change detection, a dry run, batches and memory, a safety stop, logging and a…
- Extension points from PHP Where PHP code plugs into Exponential without editing the kernel - the registration mechanisms (directory, handler, autoload, file, design, ini, registry, filter, override), the extension points a PHP developer uses…
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