Attention
TYPO3 v7 has reached its end-of-life November 30th, 2018 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.
There is no further ELTS support. It is recommended that you upgrade your project and use a supported version of TYPO3.
Storing the changes¶
Note
This page is for an outdated TYPO3 version (7.6). For newer versions, you can find the information in:
TYPO3 Explained: Extending the TCA Array (7.6)
There are various ways to store changes to $GLOBALS['TCA']
. They
depend - partly - on what you are trying to achieve and - a lot -
on the version of TYPO3 CMS which you are targeting.
Important
Be aware that $TCA
is not available in all contexts.
It is advised to always use $GLOBALS['TCA']
instead.
There are two main ways to store your changes to the TCA: inside an extension
or straight in the typo3conf
folder. Both are described below in
more details.
Storing in extensions¶
The advantage of putting your changes inside an extension is that they are nicely packaged in a self-contained entity which can be easily deployed on multiple servers.
The drawback is that the extension loading order must be finely controlled. Indeed if your extension modifies another extension, your extension must be loaded after the extension you are modifying. This can be achieved by registering that other extension as a dependency of yours. See the description of constraints in Core APIs.
For more information about an extension's structure, please refer to the extension architecture chapter in Core APIs.
Storing in ext_tables.php files¶
Until TYPO3 CMS 6.1 (still supported for 6.2) changes to $GLOBALS['TCA']
are packaged
into an extension's ext_tables.php
file. This is strongly discouraged
in more recent versions of TYPO3 CMS.
Storing in the Overrides folder¶
Since TYPO3 CMS 6.2 (6.2.1 to be precise) changes to $GLOBALS['TCA']
must be stored inside a folder called Configuration/TCA/Overrides
with one file per modified table. These files are named along the pattern
<tablename>.php
.
Thus if you want to customize the TCA of tx_foo_domain_model_bar
,
you'd create the file Configuration/TCA/Overrides/tx_foo_domain_model_bar.php
.
The advantage of this method is that all such changes are incorporated into
$GLOBALS['TCA']
before it is cached. This is thus far more efficient.
Important
Be aware that you cannot extend the TCA of extensions if it was configured within
its ext_tables.php
file, usually containing the "ctrl" section
referencing a "dynamicConfigFile". Please ask the extension author to switch
to the Configuration/TCA/<tablename>.php
setup.
Important
Only TCA-related changes should go into Configuration/TCA/Overrides
files. Some API calls may be okay as long as they also manipulate only
$GLOBALS['TCA']
. For example, it is fine to register a plugin with
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin()
in
Configuration/TCA/Overrides/tt_content.php
because that API call only
modifies $GLOBALS['TCA']
for table "tt_content".
Changing the TCA "on the fly"¶
It is also possible to perform some special manipulations on
$GLOBALS['TCA']
right before it is stored into cache, thanks to the
tcaIsBeingBuilt
signal. This signal was introduced in
TYPO3 CMS 6.2.1.