Extensions

Extensions are pieces of software developed by the TYPO3 community that extend the functionality of a TYPO3 installation. Extensions come in many forms. Some are only used for one site and contain mainly the theme of that site. These extensions are called a site package.

Extensions as Composer packages

If you have worked with other PHP based projects you have probably run across Composer packages.

Each TYPO3 extension is a Composer package of type typo3-cms-extension. Extensions provided by the TYPO3 Core have type typo3-cms-framework.

The minimum needed to define a TYPO3 extension is:

A directory containing a file called composer.json with at least the following data:

packages/my_extension/composer.json
{
    "name": "myvendor/my-extension",
    "type": "typo3-cms-extension",
    "require": {
        "typo3/cms-core": "^13.4",
    },
    "extra": {
        "typo3/cms": {
            "extension-key": "my_extension"
        }
    }
}
Copied!

In order to be used the Extension should be installed via Composer.

There is a legacy way to install extensions without Composer but it is not recommended anymore and not covered in this Guide. For this legacy way of installation as well as for functional tests or to publish your extension your need a file called ext_emconf.php. This topic is also not covered here.

Extension vs plugin

A TYPO3 extension is a similar concept to what is called a "Plugin" in WordPress.

In TYPO3 a plugin is a content element that can be inserted into one or all pages, typically providing dynamic or interactive functionality.

The data to be displayed is usually supplied by a special PHP class called a "controller".

One TYPO3 extension can provide several plugins - or none at all.

See also: Plugins in TYPO3 (TYPO3 explained).

Therefore in TYPO3 extensions and plugins are different concepts.

Types of extensions

Internally the TYPO3 Core consists of mandatory and optional system extensions each of them is a Composer package. All mandatory system extensions and a few recommended ones will be automatically installed during the Installation. Optional system extensions can be installed via Composer or the Extension Manager in classic mode

Third party extensions offer additional functionality. Find commonly used extensions in the list of Recommended Extensions. There are extensions available for many different use cases, see also chapter How to find extensions.

A site package is an extension that you install locally and only in your project. It contains the templates and assets as well as configuration for your theme. It can also contain specialized plugins or other pieces of software used only in this one project.