TCA-Konfiguration und der TYPO3-Cache

Wie man als TYPO3-Extension-Entwickler die Performanz eines Seitenaufrufs ganz leicht verbessern kann.

Seit der Version 6 LTS kann man in einer Extension verschiedene Konfigurationen des $TCA-Arrays, die traditionell in ext_tables.php abgelegt wurden, auslagern. Das sind zum einen Definitionen und Erweiterungen von SQL-Tabellen als auch Konfigurationen von Plugins.

Configuration/TCA/<tabelle>.php

TYPO3 erwartet in diesem Ordner Dateien mit PHP-Code, die ein komplettes $TCA-Array einer Tabelle mittels return zurückliefern. Der Dateiname ist hierbei der Name gleich wie jener der zu definierenden Tabelle.

Configuration/TCA/Overrides/<tabelle>.php

PHP-Dateien im Overrides-Ordner können verschiedene Manipulationen am $TCA-Array vornehmen. Der Name der Dateien ist für TYPO3 nicht von Bedeutung, allerdings ist es sinnvoll auch hier den Namen der Tabellen als Dateiname zu verwenden.

Sind mehr Dateien besser?

Nicht unbedingt. Aber für die Mehrarbeit die Konfiguration nicht mehr ausschließlich in ext_tables.php vorzunehmen, wird von TYPO3 belohnt. Alles was in Configuration/TCA konfiguriert wird, landet auch im TYPO3-Cache. Das bedeutet, dass TYPO3 nicht mehr bei jedem Seitenaufruf alle ext_tables.php-Dateien ausführen muss.

Was kann man wie cachen?

Wie schon erwähnt, kann man ein komplettes $TCA-Array in Configuration/TCA/<tabelle>.php ablegen. Darüber hinaus kann jede Form von Änderung am $TCA mittels Direktzugriff oder per Aufruf einer Utility-Klasse in Configuration/TCA/Overrides/<tabelle>.php vorgenommen werden:

  • $TCA[]
  • \TYPO3\CMS\Core\Utility\ExtensionManagementUtility
  • \TYPO3\CMS\Extbase\Utility\ExtensionUtility

Configuration/TCA/Overrides/pages.php

  • ExtensionManagementUtility::registerPageTSConfigFile(…)

Configuration/TCA/Overrides/tt_content.php

  • ExtensionManagementUtility::addPlugin(…)
  • ExtensionManagementUtility::addPiFlexFormValue(…)
  • ExtensionManagementUtility::addToInsertRecords($table)
  • ExtensionUtility::registerPlugin(…)

Configuration/TCA/Overrides/sys_template.php

  • ExtensionManagementUtility::addStaticFile(…)

Configuration/TCA/Overrides/<table>.php

  • ExtensionManagementUtility::addTCAcolumns($table, …)
  • ExtensionManagementUtility::addToAllTCAtypes($table, …)
  • ExtensionManagementUtility::addFieldsToPalette($table, …)
  • ExtensionManagementUtility::addFieldsToAllPalettesOfField($table, …)
  • ExtensionManagementUtility::addTcaSelectItem($table, …)
  • ExtensionManagementUtility::addToInsertRecords(…, $table, …)
  • ExtensionManagementUtility::makeCategorizable($extensionKey, $tableName, …)

Was kann man nicht cachen?

Nicht alle Methoden von ExtensionManagementUtility und ExtensionUtility eignen sich für Configration/TCA. Das liegt daran, dass nur ein Teil der Methoden das $TCA verändert. Folgende Methoden müssen in TYP3 6.2 LTS und 7.6 LTS weiterhin in ext_tables.php verwendet werden. Bitte beachten, dass die Liste nicht notwendigerweise vollständig ist.

  • ExtensionManagementUtility::allowTableOnStandardPages(…)
  • ExtensionManagementUtility::addPageTSConfig(…)
  • ExtensionManagementUtility::addUserTSConfig(…)
  • ExtensionManagementUtility::addLLrefForTCAdescr(…)
  • ExtensionManagementUtility::configureModule(…)
  • ExtensionManagementUtility::addExtJSModulev
  • ExtensionManagementUtility::registerExtDirectComponent(…)
  • ExtensionManagementUtility::registerAjaxHandler(…)
  • ExtensionManagementUtility::insertModuleFunction(…)
  • ExtensionUtility::registerModule(…)
Anfrage