Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Theme extensions: start here

The map of everything about packing a design into a theme extension - folder structure, ezinfo.php and extension.xml, the settings a theme ships, the RAD design wizard, Composer packages and Exponential packages…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/designers/extensions/theme-extensions-start-here.md

On this page

Theme extensions: start here

A design you build for Exponential becomes useful to other people when it lives in a theme extension: one folder under extension/ that holds the templates, stylesheets, scripts, images, settings and the small metadata files that tell an installation who the theme is. This section shows how to build that folder correctly and how to pack it as a Composer package or as an Exponential package (.ezpkg).

How the design itself is made (templates, overrides, stylesheets, dark mode, accessibility) is explained in Theme design and Templates. This section is about the container around it.

A reading order

  1. Understand the idea: What a theme extension is, Naming your theme extension, The folder structure of a theme extension.
  2. Generate a skeleton: The design extension wizard, then From the wizard's output to the first commit.
  3. Describe it: ezinfo.php, extension.xml, Keeping every version field in sync.
  4. Wire it in: Registering the design, Activating a theme, Loading order.
  5. Pack it: composer.json for a theme or the package creator wizard; Composer package or .ezpkg helps you choose.
  6. Check it: Checklist: the theme extension is ready.

Then continue with Distributing a theme.

Every page of this section

PageWhat it answers
What a theme extension isWhy a design belongs in an extension
Naming your theme extensionWhich names are allowed and which are wise
The folder structure of a theme extensionWhich folder holds what
ezinfo.phpThe metadata the About page reads
extension.xmlThe packaged description, read first
Keeping every version field in syncWhere a version number lives
Copyright and author linesWho to name and how
The LICENSE file of a themeWhich file, which text
Writing the README of a themeWhat a reader needs first
INSTALL.md and CHANGELOG.mdInstall steps and history
Registering the designDesignExtensions[]
The design settings a theme shipsSiteDesign, AdditionalSiteDesignList[], stylesheet lists
Settings files in an extension.ini.append.php files
Siteaccess settings inside a themesettings/siteaccess/<name>/
Giving a theme its own settings fileA mytheme.ini
Activating a themeActiveExtensions[] and ActiveAccessExtensions[]
Loading order and which theme winsPriority between extensions
Declaring dependencies in extension.xml<dependencies>
Template operators in a themePHP helpers for templates
Translations in a themetranslations/<locale>/translation.ts
The share folderDemo images, files and seed data
Bundling content class packages.ezpkg files inside a theme
The design extension wizard/setup/designextension
The design wizard's partsEvery checkbox of the wizard
Downloading the wizard's result as a zipFiles without writing them
From the wizard's output to the first commitThe first hour
Putting a theme under GitOne repository per theme
A .gitignore for themesWhat never goes in
composer.json for a themeThe package description
The Composer installer and the folder nameezpublish-legacy-extension-name
require and suggestDependencies of a theme
Testing a Composer installBefore publishing
What an Exponential package is.ezpkg explained
The site style packageTwo stylesheets and images
Exporting an extension as a packageThe extension export
The secret checkWhy an export is refused
The package creator wizard/package/create
Choosing a license in the package wizardThe license list
Classic XML and JSON packagesThe two formats
Exporting and importing with ezpmThe command line
Validating a packageBefore you share it
Installing your package on a test siteA safe trial
Composer package or .ezpkgWhich to ship
Checklist: the theme extension is readyThe final check
Troubleshooting theme extensionsSymptoms and fixes

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

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