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

Naming your theme extension

The rules for the folder name of a theme extension, its design name, its class prefix and its Composer package name, with the conventions real themes follow and the names to avoid.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/designers/extensions/naming-your-theme-extension.md

On this page

Naming your theme extension

This page is for designers starting a new theme. A name is cheap to choose and expensive to change: it is the folder name, the design name in settings, the prefix of classes and the Composer package name. Change it after a release and every installation that uses the theme has to follow.

The names a theme has

NameExampleWhere it appears
Extension (folder) namemytheme_jumperextension/<name>/, ActiveExtensions[], DesignExtensions[], the class <name>Info in ezinfo.php
Design namejumperdesign/<design>/, site.ini [DesignSettings] SiteDesign
Human nameMy Theme Jumperezinfo.php Name, extension.xml <name>, the About page
Composer packageyourvendor/mytheme_jumpercomposer.json name, Packagist
Repositorygithub.com/yourvendor/mytheme_jumperInfo_url, homepage

The extension name and the design name may differ. cjw_themes_jumper carries the design starter; sevenx_themes_simple carries simple; sevenx_themes_media carries media.

The rules

  1. Extension name: lower case letters, digits and underscores, starting with a letter. The RAD wizards enforce exactly this, with three to forty-one characters (The design extension wizard).
  2. Design name: the same characters. It must not collide with a design that already exists in the installation (standard, admin, admin3, admin4, admin4l, base, ezwebin and the designs of other themes you plan to combine with).
  3. Composer package name: lower case vendor/name. Dashes and underscores are both allowed by Composer; the folder name it installs into is decided as described in The Composer installer and the extension's folder name.

Good practice

  • Prefix with your organization so two themes never collide: acme_themes_harbor, not harbor.
  • Keep the product name out of your theme's name. A theme is not "Exponential Harbor"; it is "Harbor, a theme for Exponential". See Names and trademarks and Brand and naming rules.
  • sevenx and exp are 7x's prefixes. 7x's own themes are sevenx_themes_* because sevenx is 7x's official public PHP code prefix (a name cannot start with a digit, so "7x" cannot be one); 7x uses exp with intent for work it assigns to the Exponential project and the Exponential Foundation. Your theme uses your own prefix, and never renames existing kernel identifiers such as eZINI or eZTemplate. See Naming prefixes: sevenx and exp.
  • Search before you choose: Packagist, GitHub and projects.exponential.earth (browse by type).

Step by step

  1. Write down the five names of the table above.
  2. Check the extension name: ls extension/ | grep -x <name> prints nothing.
  3. Check the package name: open https://packagist.org/packages/<vendor>/<name>; a "not found" page means it is free.
  4. Check the design name: ls design/ extension/*/design/ | grep -x <design> prints nothing.
  5. Use the names consistently in every file from the first commit on.

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