- 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…
- Newsletter operators of cjw_newsletter The thirteen template operators of the cjw_newsletter extension - three general ones (cjw_newsletter_str_replace, cjw_newsletter_preg_replace, cjw_newsletter_variable) and ten rendering operators (conditions, plain text…
- Coming from Django or Rails A guide for Django and Ruby on Rails developers moving to a PHP framework with a CMS built in - URLconf and routes, views and controllers, the ORM and migrations, the Django admin, templates, signals and callbacks…
- Composer for PHP developers How Exponential uses Composer - the root composer.json with PHP 8.0 to 8.5 (PHP 7.4 usable without support), required extensions and packages, the legacy-scripts hook that regenerates autoloads, the installer plugin…
- content_view_gui Drawing a content object (without a node) in a view mode with content_view_gui: when you have an object rather than a node (relations, embeds, search hits), the content/view templates, and the override keys it sets.
- Layouts, expui and expai operators The template operators of the Exponential layout extensions (expl_parse, expl_strip, expl_has, expl_first, explayouts_ui_has_template), of expui (exp_config) and of expai (expai_money, expai_tokens, expai_number…
- Versions and releases of your extension Release an extension the way Exponential's own extensions are released - choosing the next number from what is published, bumping ezinfo.php and extension.xml before the tag, annotated tags, release notes, and why a…
- Coming from Express or Spring A guide for Node.js (Express, NestJS) and Java (Spring, Spring Boot) developers - the PHP request model compared with an event loop and a servlet container, routing, middleware and interceptors, dependency injection…
- Content packages (.ezpkg) Move classes, content and settings between installations with packages - what a package carries, the repositories in var/storage/packages, creating one with the package wizard, ezpm.php on the command line, installing…
- Contributing bundle fixes back Why and how a bundler sends fixes and improvements upstream instead of carrying them - the contribution workflow of the kernel, the GPL and the Contributor Licensing Agreement, extensions and site packages…
- Contributing PHP changes How a PHP change reaches the Exponential kernel - the contributor license agreement, fork and branch, the checks to run before a pull request, commit messages, tests, the file manifest, review rounds, squashing and…
- node_view_gui Drawing a node in a view mode with node_view_gui: lists of line views, cards and teasers, the node/view templates, passing extra parameters, the override keys it sets (class, parent, depth, section, remote ids) and why…
- Checklists for PHP developers Copyable checklists for PHP work on Exponential - before you write, for every PHP file, for a new class, a view, a command or cronjob part, a datatype or workflow event, security, Velocity compatibility, tests, a commit…
- Datatype view templates The templates that draw each kind of field (text line, rich text, image, date, relation ...) under content/datatype/view, what a few of them look like, how to restyle one for your whole design or for one class, and the…
- Publishing extensions from a bundle How a bundler turns the generic extensions of a bundle into published extensions - separating them from customer work, metadata and license, a public repository and Packagist, releasing with versions that never move…
- RAD tools: building faster Use Setup > RAD to build extensions in minutes - the catalogue of extension points, the wizards that write working extensions (modules, datatypes, workflow events, operators, handlers, designs), the extension point…
- When to choose Exponential, and when a plain framework A fair decision guide for teams choosing between Exponential and a general web framework such as Symfony, Laravel, Django or Rails - the project shapes where Exponential saves months, the shapes where a plain framework…
- Datatype edit templates The edit form templates of each datatype under content/datatype/edit: when a public design needs them (front-end editing, registration, user profiles), field names and ids that must be kept, accessibility of labels and…
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