Theme extensions
Packaging a theme as an extension: structure, settings, dependencies and the designs it adds.
46 pages
- Loading order and which theme wins When two extensions provide the same template or setting, the loading order decides which one wins; how the order is set, how ExtensionOrdering and extension.xml dependencies change it, and how to check it.
- Declaring dependencies in extension.xml The dependencies block of extension.xml - extends, requires and uses - what each does to the loading order, a real example, and how it relates to Composer's require.
- Template operators in a theme Add a template operator to a theme - the operator class, autoloads/eztemplateautoload.php, ExtensionAutoloadPath[] and the autoload array - and avoid the one file the design wizard does not write.
- Translations in a theme Ship the interface texts of a theme in several languages - translations/<locale>/translation.ts, TranslationExtensions[], the i18n operator with the theme's own context - and keep the files complete.
- 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.
- 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.
- 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.
- Downloading the wizard's result as a zip Use Download as zip in the design extension wizard to get a theme skeleton without writing to the server - when it is the better choice, what the archive contains, and what to do when the button is missing.
- From the wizard's output to the first commit The first hour after generating a theme - check every file, fix the metadata and composer.json, switch the theme on for a test siteaccess, see it render, and make the first commit.
- Putting a theme under Git Keep a theme in its own Git repository, rooted at the extension folder - why one repository per theme, how to start it, how to work on it inside an installation, and which commit message prefixes to use.
- A .gitignore for themes What a theme's .gitignore keeps out of the repository - editor leftovers, backups, logs, build output and local settings - the file the design wizard writes, and how to check that nothing secret or private slipped in.
- 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…
- The Composer installer and the extension's folder name How the legacy extension installer decides the folder a theme lands in - extra.ezpublish-legacy-extension-name, else the package name - why installer-name is not read, and how to check the result before publishing.
- require and suggest: what a theme depends on Decide what goes into require and what into suggest in a theme's composer.json - PHP versions, the installer plugin, layouts or site API extensions - with the real choices of sevenx_themes_media and ezwebin, and version…
- Testing a Composer install before publishing Install your theme into a throwaway Exponential installation through a Composer path or vcs repository before you submit it to Packagist, and check the folder name, the files and the rendered page.
- What an Exponential package (.ezpkg) is An Exponential package is a directory with a package.xml, exported as one .ezpkg file (a gzip compressed tar); what it can carry, where packages live, how they are installed, and how that differs from a Composer package.
- The site style package The Site style wizard packs two stylesheets (site and classes), their images and a thumbnail into an Exponential package; what it is for, each step, and when a full theme extension is the better choice.
- Exporting an extension as a package Pack a theme extension's files into an Exponential package with the Extension export wizard or ezpm - switching exporting on in package.ini [ExtensionExportSettings], the secret check, and the steps.
- The secret check before an extension is packaged Why an export of your theme can be refused for holding secret values or key material, what the check looks for, how to fix a real finding, and how package_check.ini names a documentation example the check cannot tell…
- Choosing a license in the package wizard The license drop-down of the package and RAD wizards - the configured list in package.ini [LicenseSettings] (GPL, LGPL, AGPL, MIT, GFDL, Creative Commons, public domain, proprietary), the default, how to add one, 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