TypoScript in eID für Ajax

eID Scripte werden im Zusammenhang mit Ajax gerne verwendet um zu vermeiden, dass die gesamte Initialisierung des Frontends durchlaufen werden muss. Es wird also recht früh in der Verarbeitung geprüft ob ein eID aufgerufen wurde und dann nur noch das Script verarbeitet.

Das hat den Vorteil aber auch Nachteil dass zu dem Zeitpunkt das TypoScript noch nicht geladen wurde. Spar zwar Prozesszeit aber ist dadurch recht statisch und nur schlecht zu konfigurieren.

Um diesen Nachteil ein wenig auszugleichen, aber halt auf Kosten der Performance, ist es möglich das TypoScript selber zu laden. Im folgenden zeigt das Code Beispiel wie das geht.

/**
 * @var integer $pageUid
 */
protected function loadTS($pageUid = 0) {
    $sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect');

    $rootLine = $sysPageObj->getRootLine($pageUid);

    $typoscriptParser = t3lib_div::makeInstance('t3lib_tsparser_ext');
    $typoscriptParser->tt_track = 0;
    $typoscriptParser->init();
    $typoscriptParser->runThroughTemplates($rootLine);
    $typoscriptParser->generateConfig();

    return $typoscriptParser->setup;
}

Wie genau funktioniert das

Im konkreten wird die Methode mit der jeweiligen SeitenID, von der das TypoScript aus geladen werden soll, aufgerufen. Mit dieser und dem dann initialisierten Page Object wird dann die Rootline, also alle Seiten bis rauf zur Rootseite ausgelesen und als Array zwischen gespeichert.

Nachdem dann der Typoscript Parser initialisiert wurde und mit einigen Basiswerten versorgt wurde, wird dann mit Hilfe der Rootline das Typoscript selber verarbeitet. Das darauf resultierende Setup wird schlussendlich zurück gegeben.

Meine Mission

Ziel meiner Veröffentlichungen ist es, meine Begeisterung für die Programmierung und das über die Jahre gewonnene Wissen mit anderen Entwicklern zu teilen. Dabei ist es mir wichtig, Lösungen zu thematisieren für die ich in Suchmaschinen keine Antworten finden konnte. Außerdem versuche ich die von mir veröffentlichten Extensions an Beispielen zu erläutern.

evoWeb © 2019