TYPO3 Seitenbaum im Frontend auslesen

Für eine Erweiterung brauchte ich im Frontend den kompletten Seitenbaum als Array. Hier kann man auf t3lib_pageSelect zurückgreifen, leider bekommt man mit getMenu() immer nur eine Ebenemacht aber nix, man kann ja eine rekursive Funktion draus machen.

Verwendung innerhalb einer Klasse:

Und als „standalone“ Funktion:

 

Backend Session Handler mit Extbase

In einem aktuellen Projekt müssen in den Backend Modulen Daten in die Session gespeichert und wieder ausgelesen werden.
Da die Erweiterung natürlich mit Extbase programmiert wird, habe ich mir dazu ich einen kleinen Wrapper für getSessionData und setAndSaveSessionData in $GLOBALS[‚BE_USER‘] geschrieben:

Domain/Session/BackendSessionHandler.php

Verwendung im Controller:

Address set in PathHeader does not comply with addr-spec of RFC 2822 – TYPO3 Form Plugin

Beim neuen Form Plugin von TYPO3 kann es vorkommen dass man beim Absenden des Formulars den Fehler „Address set in PathHeader does not comply with addr-spec of RFC 2822“ bekommt.

Das kann an der Konfigurationseinstellung forceReturnPath liegen, der muss entweder auf 0 oder false stehen, oder eine valide E-Mail Adresse enthalten. In meinem Fall steht dieser Wert standardmäßig auf „1“ – das ist die Grundkonfiguration welche der Hoster (Mittwald) bei einer automatischen TYPO3 Installation setzt. Mittwald habe ich über den Umstand bereits informiert doch sie haben es noch nicht geändert.

localconf.php

Der Grund des Fehlers ist einfach: Im Plugin wird der returnPath gesetzt wenn er „true“ ist, und der Mailer hat mit der E-Mail Adresse „1“ natürlich ein Problem.

/typo3/sysext/form/Classes/System/Postprocessor/Mail.php

Diese Bedingung ist durch unsere Änderung in der localconf.php nicht mehr true, somit wird kein returnPath gesetzt und der Fehler ist weg.

Extbase Plugin Settings in Backend Modul auslesen

Wenn man mit Extbase ein Backend Modul erstellt, sind im Controller die Settings auf die man in einem Frontend Controller mit $this->settings direkt zugreifen kann, nicht verfügbar.

Damit das auch in einem Backend Modul funktioniert, sind 2 Sachen notwendig.

1) Die Zuweisung der Settings im Typoscript Template:

2) im Controller die Settings über den Tx_Extbase_Configuration_BackendConfigurationManager holen, beispielsweise in der initializeAction:

Damit man sich die Abfrage ob man sich im Backend befindet sparen kann (TYPO3_MODE === ‚BE‘), empfehle ich für das Backend Modul einen eigenen Controller zu machen der dann auch nur dort verwendet wird.

Extbase Backend Modul als Hauptmodul integrieren

Bisher ist es bei Extbase Erweiterungen nur möglich, mittels Tx_Extbase_Utility_Extension::registerModule() seine eigenen Backend Module in vorhandene Module einzuklinken, sprich in web, file, user, tools usw.

Über die traditionelle Methode t3lib_extmGm::addModule() kann man sich jedoch ein Dummy-Hauptmodul erstellen, in das man die neuen Module dann als Submodule einklinken kann.

ext_localconf.php

Unter Configuration/BackendModule/ (das Verzeichnis kann natürlich beliebig gewählt werden) erstellen wir noch eine conf.php:

Somit kann TYPO3 unser „Dummy“ Hauptmodul ordnungsgemäß erstellen und die eigentlichen Module werden als Kind-Module hinzugefügt.

Das Ganze sieht dann so aus: