ext_tables.php
¶
-- optional
ext_tables.php
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_tables.php
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
ExtensionManagementUtility::addToInsertRecords()
as this might break the frontend. They should go in Configuration/TCA/Overrides/somefile.php.calling
ExtensionManagementUtility::addStaticFile()
as this might break the frontend. They should go inConfiguration/TCA/Overrides/sys_template.php
Should be used for¶
These are the typical functions that should be placed inside ext_tables.php
Registering of backend modules or adding a new main module Example
Adding table options via
ExtensionManagementUtility::allowTableOnStandardPages()
ExampleRegistering a scheduler tasks: Registering a scheduler task
Assignments to the global configuration arrays
$GLOBALS['TBE_STYLES']
and$GLOBALS['PAGES_TYPES']
Extending the Backend user settings
Examples¶
Put the following in a file called ext_tables.php
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 ExtensionUtility::registerModule()
:
// 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.