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

2 Gedanken zu „Extension Settings abfragen

  1. Die Settings lassen sich auch direkt abfragen.
    $this->settings = $this->ConfigurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, ‚myextension‘);

    Mit $_POST[‚id‘] = 148; kann man in einem Symfony Command zwar eine Seite simulieren. Aber der ConfigurationManager sucht sich zu dieser Seite die uid der rootseite aus und kann nur die dort eingebundenen typoscript Dateien auslesen.

    Ich habe das so gelöst, dass ich die Settings (und auch die Persistenceangaben) in einer eigenen settings.typoscript Datei abgelegt und diese in die setup.typoscript meiner Extension included habe. Gleichzeitig habe ich die Datei auch in das setup der rootseite mit @Import eingefügt. – Daran denken für den CLI mode muss es unter module verfügbar sein:
    module.myextension.settings < plugin.myextension.settings
    module.myextension.persistence < plugin.myextension.persistence

  2. 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. Erforderliche Felder sind mit * markiert

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