Storing the changes

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. The TCA can only be changed from within an extension.

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. However, in case you are modifying Core TCA, you usually don't have to worry about that. Since custom extensions are always loaded after the Core's TCA, changes from custom extensions will usually take effect without any special measures.

For more information about an extension's structure, please refer to the extension architecture chapter.

Storing in the Overrides/ folder

Changes to $GLOBALS['TCA'] must be stored inside a folder called Configuration/TCA/Overrides/. For clarity files should be named along the pattern <tablename>.php.

Thus, if you want to customize the TCA of tx_foo_domain_model_bar, you need to 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.

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 PSR-14 event AfterTcaCompilationEvent.