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.
ext_tables.php
-- optional
ext_
is not always included in the global scope of the
frontend context.
This file is only included when
- a TYPO3 Backend or CLI request is happening
- or the TYPO3 Frontend is called and a valid backend user is authenticated
This file usually gets included later within the request and after TCA information is loaded, and a backend user is authenticated.
Hint
In many cases, the file ext_
is no longer needed,
since TCA
definitions must be placed in files located at
Configuration/TCA/.
Should not be used for
- TCA configurations for new tables. They should go in Configuration/TCA/sometable.php.
- TCA overrides of existing tables. They should go in Configuration/TCA/Overrides/somefile.php.
- calling
Extension
as this might break the frontend. They should go in Configuration/TCA/Overrides/somefile.php.Management Utility:: add To Insert Records () - calling
Extension
as this might break the frontend. They should go inManagement Utility:: add Static File () Configuration/
TCA/ Overrides/ sys_ template. php
Should be used for
These are the typical functions that should be placed inside ext_
- Registering of backend modules or adding a new main module Example
- Adding table options via
Extension
ExampleManagement Utility:: allow Table On Standard Pages () - Registering a scheduler tasks: Registering a scheduler task
- Assignments to the global configuration arrays
$GLOBALS
and['TBE_ STYLES'] $GLOBALS
['PAGES_ TYPES'] - Extending the Backend user settings
Examples
Put the following in a file called ext_
in the main directory
of your extension. The file does not need to be registered but will be loaded
automatically:
<?php
// all use statements must come first
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
(function () {
// Add your code here
})();
Registering a backend module
You can register a new backend module for your extension via Extension
:
// use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
ExtensionUtility::registerModule(
'ExtensionName', // Extension Name in CamelCase
'web', // the main module
'mysubmodulekey', // Submodule key
'bottom', // Position
[
'MyController' => 'list,show,new',
],
[
'access' => 'user,group',
'icon' => 'EXT:my_extension/ext_icon.svg',
'labels' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang_statistics.xlf',
]
);
There is also a possibility to register modules without Extbase, using core functionality only. For more information on backend modules see backend module API.
Allowing a tables records to be added to Standard pages
By default new records of tables may only be added to Sysfolders in TYPO3. If you need to allow new records of your table to be added on Standard pages call:
// use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
ExtensionManagementUtility::allowTableOnStandardPages(
'tx_myextension_domain_model_mymodel'
);
Registering a scheduler task
Scheduler tasks get registered in the ext_tables.php as well. Note that the Sysext "scheduler" has to be installed for this to work.
// use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionTask;
// use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionAdditionalFieldProvider;
// Add caching framework garbage collection task
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][CachingFrameworkGarbageCollectionTask::class] = array(
'extension' => 'your_extension_key',
'title' => 'LLL:EXT:your_extension_key/locallang.xlf:cachingFrameworkGarbageCollection.name',
'description' => 'LLL:EXT:your_extension_key/locallang.xlf:cachingFrameworkGarbageCollection.description',
'additionalFields' => \CachingFrameworkGarbageCollectionAdditionalFieldProvider::class
);
For more information see the documentation of the Sys-Extension scheduler.