Skip to the content
Documentation

Extensions

No ratings yet

An extension adds functionality to Exponential, or changes existing functionality, without changing the kernel. It plugs into the kernel through settings, templates, modules and classes of its own, so an upgrade of Exponential replaces the kernel and keeps the extension. Your own features belong in an extension for the same reason.

What an extension can do

  • carry a design: templates, stylesheets, scripts and images for a site or a siteaccess;
  • add modules with new views and policies, template operators and fetch functions;
  • add datatypes, workflow events, login and other handlers, cronjob parts and console commands;
  • bring tables of its own (share/db_schema.dba, for every database engine), settings and translations;
  • bring its own documentation, which the help center shows as soon as the extension is active.

An extension is a folder under extension/. Two files make it known to the system, with the same version in both: extension.xml (name, version, license, website, dependencies) and ezinfo.php.

Install and enable an extension

1. Get it. Most extensions are Composer packages named se7enxweb/<name> on Packagist, of the type ezpublish-legacy-extension, which Composer places in extension/<name>:

composer require se7enxweb/ezflow

An extension that is not a Composer package can be copied or cloned into extension/ by hand; never clone by hand a package that composer.json requires.

2. Switch it on, for the whole installation with ActiveExtensions[] in settings/override/site.ini.append.php, or for one siteaccess with ActiveAccessExtensions[] in settings/siteaccess/<siteaccess>/site.ini.append.php:

[ExtensionSettings]
ActiveExtensions[]=ezflow

The same from the console (the first command only shows the change), or in the administration under Setup > Extensions, which activates an extension after a review of the change:

./console exp:ini add 'site.ini/ExtensionSettings/ActiveExtensions[]' ezflow global --dry-run --allow-root-user
./console exp:ini add 'site.ini/ExtensionSettings/ActiveExtensions[]' ezflow global --allow-root-user

3. Make the system see it: regenerate the autoload array and clear the caches, or let one command do every step of a PHP change in order:

php bin/php/ezpgenerateautoloads.php -e
php bin/php/ezcache.php --clear-all --allow-root-user
./console exp:velocity deploy --allow-root-user

The order of ActiveExtensions[] is the order of priority: an extension loaded earlier wins over a later one for settings and templates. An extension with tables gets them on a new installation from the setup, and on an existing one from ./console exp:upgrade (Exponential 6.0.15). The full walk-through: Extensions: find, install, configure, build and release.

Extensions maintained by 7x and the Exponential Foundation

A new Exponential 6 installation already brings a set of extensions: some live in the kernel tree, the others come through composer.json and the PHP floor package se7enxweb/exponential-php-floor. Which ones a new installation activates is listed in Extensions of a new installation. Among them:

Extension What it does
ezjscore Ajax server functions, script and stylesheet packing, jQuery 4
ezoe The online rich text editor
ezwebin The website interface design
ezflow Page layouts with blocks (classic)
explayouts Exponential Layouts: layouts, zones and blocks edited in the browser
eztags Tags and the tags datatype
ezprestapi REST API v1 and v2
ezautosave, ezmultiupload, ezie, ezodf Automatic saving of drafts, uploading several files at once, the classic image editor, OpenDocument import and export
ezstarrating, ezgmaplocation The star rating and map location datatypes
cjw_newsletter Newsletters
sevenx_authentication_2fa Two-step sign-in
expwt The website sidebar, which replaces the website toolbar ezwt
expui, exp_adminui The jQuery 4 interface API of the designs, and the Admin UI look of the administration
ezoracle The Oracle database driver
ezupdate Updates from the administration

More are available to install, for example ezfind (Solr based search), ezcomments (comments) and ezcontentstaging (content staging). Every repository is on github.com/se7enxweb; Setup > Extensions in the administration shows each installed extension with its version, license and project page.

Documentation of an extension

Every extension documents itself in the same place. README.md and INSTALL.md (and CHANGELOG.md and LICENSE where it has them) sit on top of the extension, and every other page is a Markdown file in its doc/ directory, with doc/README.md as the start page, in English. The help center of every installation shows the documentation of each active extension under Help > Extensions, with its own index and search, without any setup.

Extension documentation started out as plain text files: a README and an INSTALL without a suffix, a CHANGELOG, doc/*.txt. It has evolved to full Markdown documents, which give headings, links between pages, tables, highlighted code and images. Markdown is the convention for new and updated extensions; old plain-text files keep working and are shown as plain text. See Documenting an extension.

Build your own

The RAD tools of the administration (Setup > RAD) write a complete extension for a module, a datatype, a workflow event, template operators, a design and more, with a preview of every file first. Extending Exponential 6.0 is the map for developers.

Where to find more

Pages of the earlier documentation

In this section

Contributors

Comments

Add a comment

Comments are read by a moderator before they appear.