Extension Settings abfragen

Wenn man die TypoScript Settings einer Extension abfragen will, kann man normalerweise folgenden Aufruf verwenden:

Typoscript: 
  plugin.tx_myextension_pi1 {
    settings {
      something = 123456
    }
  }
PHP: 
  $var = $this->settings['something'];

Wenn man allerdings außerhalb des eigenen Extension Controllers ist, funktioniert das leider nicht, z.B. in einer anderen Extension, Scheduler Task oder im Backend. Dafür gibt es folgende Möglichkeiten:

Typoscript Settings mit ConfigurationManager abfragen

Man kann über den Configuration Manager das Typoscript laden, z.B. wenn man das Typoscript einer anderen Extension benötigt:

$configurationManager = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Configuration\ConfigurationManager::class);
$typoscript = $configurationManager->getConfiguration(
ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT,'sitepackage');
$var = $typoscript['plugin.']['tx_sitepackage.']['settings.']['pids.']['home'];

BackendConfigurationManager getTypoScriptSetup

Alternativ kann man über den BackendConfigurationManager das Typoscript abfragen, z.B. in einem Scheduler Task oder Backend Modul:

$backendConfigurationManager = GeneralUtility::makeInstance( \TYPO3\CMS\Extbase\Configuration\BackendConfigurationManagerBackendConfigurationManager::class);
$typoscript = $backendConfigurationManager->getTypoScriptSetup();
$var = $typoscript['plugin.']['tx_sitepackage.']['settings.']['pids.']['home'];

Ein weiteres Beispiel findet man übrigens auch in
EXT:news/Classes/Controller/NewsController ->injectConfigurationManager

Ein Gedanke zu „Extension Settings abfragen

  1. Diese Lösung funktioniert nicht bei Multidomains (wenn man mehrere Domains für seine Website innerhalb eines TYPO3-Backends nutzt). Der Configuration Manager lädt in dem Fall des Typoscripts nicht der gesamten Installation sonst nur die oberste Instanz(Domain), weitere Instanzen werden einfach ignoriert. Hat jemand die Lösung für die Multidomains Instalation?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.