Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
File structure
Lists reserved file and directory names within an extension. Also lists file names that are used in a certain way by convention.
This chapter should also help you to find your way around in extensions and sitepackages that where automatically generated or that you downloaded as an example.
Files
An extension consists of:
- A directory named by the extension key (which is a worldwide unique
identification string for the extension), usually located in
typo3conf/
for local extensions, orext typo3/
for system extensions.sysext - Standard files with reserved names for configuration related to TYPO3 (of which most are optional, see list below)
- Any number of additional files for the extension functionality itself.
Reserved file names
Most of these files are not required, except of ext_
in legacy installations not based on Composer
and composer.
in Composer installations
installations.
Note
It is recommended to keep ext_
and composer.
in
any public extension that is published to TYPO3 Extension Repository (TER), and
to ensure optimal compatibility with Composer installations and legacy
installations.
Do not introduce your own files in the root directory of
extensions with the name prefix ext_
, because that is reserved.
Reserved Folders
In the early days, every extension author baked his own bread when it came to file locations of PHP classes, public web resources and templates.
With the rise of Extbase, a generally accepted structure for file
locations inside of extensions has been established. If extension authors
stick to this and the other Coding Guidelines, the system helps in various ways. For instance, if putting
PHP classes into the Classes/
folder and using appropriate namespaces for the classes,
the system will be able to autoload these files.
Extension kickstarters like the EXT:extension_builder will create the correct structure for you.