- Mobile app developers FAQ Short answers to the questions app developers ask most about Exponential - 401 without a body, which version to call, PKCE, API keys in apps, image sizes, search, updates, CORS, languages, paging limits, SDKs and where…
- Modules and views Pages with their own address: module.php and every ViewList key, a view script and a view class, POST actions, redirects and errors, from eZModule and a real extension.
- Namespaces How the template engine keeps variables apart - the root and current namespace, the four ways to name a variable ($var, $ns:var, $:var, $#var), what include does with and without name=, the namespaces section and let…
- Pull request etiquette The habits that get pull requests merged and make maintainers glad to see your name - small and focused, explained, tested, patient, open to change - and what to avoid.
- Responses, redirects, errors and JSON How a module view answers - the $Result array instead of a Response object, the pagelayout around it, redirects with redirectTo and safe redirect targets, error pages with handleError and eZError codes, JSON and other…
- Sorting tags correctly List the tags of a theme in version order, not name order - git tag --sort=version:refname, sort -V and git describe - with the mistake a plain sort makes and how to fix release scripts.
- Switch and case Choosing between several outputs with switch and case: matching a value, matching one of several values with in, the default case, why conditions belong in if, and when if or an override is the better tool.
- The design chain: where a template is found How design:path/to/template.tpl is resolved: SiteDesign, AdditionalSiteDesignList, StandardDesign and DesignExtensions in each design, with the kernel code and a script that prints your chain.
- Where the designers' help continues The designer help goes much further than this book: the template language, theme design, theme extensions, distribution, sales and life cycle. A map from each chapter of Part 6 to the pages that continue it.
- Why the code has no type declarations An explanation of one rule that surprises PHP developers - Exponential code is written without scalar, return and property types and without strict_types - what is allowed instead, how types are documented and checked…
- Building a site step by step: the chess club tutorial for Exponential 6 A small community site (welcome page, news, members, moderated guestbook, links) built one page at a time, adapted from the Building a Site tutorial and done with Exponential 6 settings, extensions and templates.
- Creating packages with ezpm Build the packages your site package requires from a shell with ezpm.php - create, add classes, content or an extension, set the vendor and other fields, export, validate and check - in a form you can script and run…
- Before connecting an agent A checklist before an AI agent gets access to an Exponential installation through the REST API, expservices or the console - purpose, account and role, credential, tool design, data that may reach the agent's provider…
- Demo mode for developers The demo mode API for extension and installer authors - expDemoMode::enabled(), protectsPassword(), refusalText(), refused(), installing() and the store guard in eZUser::store(), the template operator exp_demo_mode()…
- Versioning your own packages Where a package's version lives (version number and release number in package.xml, the version attribute in index.xml, the release folder on the server), how Exponential compares versions, how min-version decides…
- Running your own package server A package server is a static HTTPS folder with index.xml, the .ezpkg archives and their thumbnails. This page gives the folder layout, a complete index.xml, how to host it on GitHub Pages as 7x does or on any web…
- Pointing a site at your package server Make the setup wizard, the kickstarter and exp:install read your package server instead of the 7x one (a package.ini override), choose your site package in kickstart.ini or on the command line, add the server to…
- Free documentation: use it to help yourself and others This help is free documentation under the GNU Free Documentation License 1.3 or later. What that lets you do (read, copy, share, translate, adapt, improve) and the few conditions that keep it free for everyone.
- Mobile app developers glossary The words used in the Mobile app developers section explained for app developers - from node, object, class and remote id to response group, OutputFormat, provider, ezpl, OAuth client, expk and expt tokens, envelope…
- Testing in a sandbox Test a site package where nothing can be lost - a separate checkout with its own SQLite database - in four rounds - check the archives, a dry run, a full install, a look at the result - and clean up afterwards.
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