Wie man TypoScript Settings manuell ausliest

Kategorie: Quick Tips Veröffentlicht: Samstag, 09. September 2017 Geschrieben von Kevin Chileong Lee
Quick Tip: TypoScript

Der Zugriff auf das TypoScript in einer Extension geht in der Regel ganz einfach über die Klassenvariable: $this->settings. In einem eID - Skript steht jedoch diese Klassenvariable nicht zur Verfügung. Ich zeige dir, wie man auch dort an das TypoScript kommt.

In einem eID - Skript ist der TypoScript FrontendController nicht geladen. Dieser ist notwendig um an das TypoScript zu gelangen. Dieser FrontendController wird auf dieser Weise manuell erzeugt und initialisiert:

$typoScriptFrontendController = GeneralUtility::makeInstance(
	'TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController',
        $GLOBALS['TYPO3_CONF_VARS'],
        $pageId,
        0,
        true
);
$GLOBALS['TSFE'] = $typoScriptFrontendController;
$typoScriptFrontendController->connectToDB();
$typoScriptFrontendController->fe_user = EidUtility::initFeUser();
$typoScriptFrontendController->id = GeneralUtility::_GET('id') ?: 1;
$typoScriptFrontendController->determineId();
$typoScriptFrontendController->initTemplate();
$typoScriptFrontendController->getConfigArray();
EidUtility::initTCA();
/** @var TypoScriptService $typoScriptService */
$typoScriptService = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Service\\TypoScriptService');
$pluginConfiguration = $typoScriptService->convertTypoScriptArrayToPlainArray($typoScriptFrontendController->tmpl->setup['plugin.']['tx_slavleecommunications_contacts.']);
$this->settings = $pluginConfiguration['settings'];

In den Zeilen von 1 bis 14 wird der TypoScriptFrontendController intitialisiert. Dieser Controller wird benötigt um Zugriff auf das TypoScript zu ermöglichen. In der Zeile 15 wird das TCA von Typo3 geladen.
Das TCA ist ein globales Array, welche die Datenbankdefinitionen erweitert. Sie beschreibt in erster Linie, welche Datenbankfelder im Typo3 Backend editierbar sind.

Um Zugriff auf das TypoScript als Array zu haben, gib es den TypoScript Service. Dieser wird in der Zeile: 17 initialisiert. Da wir nicht das gesamte TypoScript benötigen, sondern nur von einer expliziten Extension, lesen wir in der Zeile 18 nur den TypoScript Teil der tx_slavleecommunications_contacts Extension aus.
Das klassische TypoScript Array enthält die Punktnotation ("."), wie man das auch in der Zeile 18 sehen kann. Im normalen $this->settings Array sind die aus Bequemlichkeit entfernt und das wollen wir auch tun. Das geht ganz einfach mit der Funktion: convertTypoScriptArrayToPlainArray.

In der letzten Zeile speichern wir das TypoScript Array, wie gewohnt in einer Klassenvariable: $settings. Damit können wir ganz normal auf das TypoScript einer Extension zugreifen.

 

News on Slavlee

Wenn du dich auf dem laufenden über alle Produkte, Tutorials und Quicktips halten möchtest. Dann trage dich jetzt kostenfrei im Newsletter ein. Ich werde dich nicht mit täglichen Newsletter zumüllen. Versprochen!