Settings::getMergedSettings()
\nn\t3::Settings()->getMergedSettings($extensionName = NULL, $ttContentUidOrSetupArray = []);
Merge aus TypoScript-Setup für ein Plugin und seinem Flexform holen.
Gibt das TypoScript-Array ab plugin.tx_extname.settings... zurück.
Wichtig: $extensionName nur angeben, wenn das Setup einer FREMDEN Extension geholt werden soll oder es keinen Controller-Context gibt, weil der Aufruf aus dem Backend gemacht wird... sonst werden die FlexForm-Werte nicht berücksichtigt!
Im FlexForm <settings.flexform.varName> verwenden!
| <settings.flexform.varName> überschreibt dann settings.varName im TypoScript-Setup
| $ttContentUidOrSetupArray kann uid eines tt_content-Inhaltselementes sein
oder ein einfaches Array zum Überschreiben der Werte aus dem TypoScript / FlexForm
\nn\t3::Settings()->getMergedSettings();
\nn\t3::Settings()->getMergedSettings( 'nnsite' );
\nn\t3::Settings()->getMergedSettings( $extensionName, $ttContentUidOrSetupArray );
Copied!
| @return array
Source Code
public function getMergedSettings( $extensionName = null, $ttContentUidOrSetupArray = [] )
{
// Setup für das aktuelle Plugin holen, inkl. Felder aus dem FlexForm
try {
$configurationManager = GeneralUtility::makeInstance(ConfigurationManager::class);
$pluginSettings = $configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, $extensionName) ?: [];
} catch ( \Exception $e ) {
$pluginSettings = [];
}
// Fallback: Setup für das Plugin aus globaler TS-Konfiguration holen
if (!$pluginSettings) {
$setup = $this->getPlugin( $extensionName );
$pluginSettings = $setup['settings'] ?? [];
}
// Eine tt_content.uid wurde übergeben. FlexForm des Elementes aus DB laden
if ($ttContentUidOrSetupArray && !is_array($ttContentUidOrSetupArray)) {
$flexform = \nn\t3::Flexform()->getFlexform($ttContentUidOrSetupArray);
$ttContentUidOrSetupArray = $flexform['settings'] ?? [];
}
// Im Flexform sollten die Felder über settings.flexform.varname definiert werden
$flexformSettings = $ttContentUidOrSetupArray['flexform'] ?? $pluginSettings['flexform'] ?? [];
// Merge
ArrayUtility::mergeRecursiveWithOverrule( $pluginSettings, $flexformSettings, true, false );
// Referenz zu settings.flexform behalten
if ($flexformSettings) {
$pluginSettings['flexform'] = $flexformSettings;
}
return $pluginSettings;
}
Copied!