stdWrap verwenden und erweitern - Handout zum Vortrag
StdWrap ist eine Sammlung von Hilfsfunktionen in TypoScript, mit der verschiedene Datenquellen ausgelesen, die Daten überprüft und verarbeitet werden können.
StdWrap gehört wie so viele Funtkionen nicht zum eigentlichen TYPO3 Core, sondern zu der Sysextension „cms“. StdWrap liegt als Funktion in der Klasse „tslib_cObj“, welche entgegen der heute geltenden Namenskonventionen aus historischen Gründen in folgender Datei zu finden ist:
typo3/sysext/cms/tslib/class.tslib_content.php
Innerhalb der Funktion stdWrap werden zum Teil direkt PHP-Funktionen mit den entsprechenden Daten aus den Parametern gefüttert, teil weitere TYPO3-Api Funktionen aufgerufen. Haupteingabe und Ausgabe ist ein String, der durchgeschleust und durch zusätzliche Parameter verarbeitet wird ($content).
#Stark gekürzt
function stdWrap($content,$conf) {
if ($conf['trim']) { $content=trim($content); }
if ($conf['insertData']) {$content = $this->insertData($content);}
return $content;
}
Die Hilfsfunktonen innerhalb von stdWrap können in 3 Bereiche unterteilt werden:
Informationen holen, z.B:
- field
- cObject
- data
- current
Informationen überprüfen, z.B:
- override
- ifEmpty
- required
- if
Daten verarbeiten, z.B:
- intval
- wrap
- insertData
Die Funktionen können kombiniert werden. Sie werden immer in der Reihenfolge abgearbeitet, die im SourceCode in tslib_cObj:stdWrap() definiert wurde. Die Definitionsreheinfolge in der TypoScript Konfiguration ist dagegen nicht von Bedeutung. Die Ausführreihenfolge der Funktionen kann durch Rekursiven Aufruf (stdWrap.stdWrap) beeinflusst werden.
Beispiel: Aufruf des Titels einer News, deren ID als Get-Variable übergeben wurde:
lib.myNewsTitle = TEXTlib.myNewsTitle {
dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
wrap3 = {|}
insertData = 1
}
Erklärung:
dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
Ersetzt {GPvar:tx_ttnews|tt_news} durch die entsprechende uid, z.B. 16. Danach ist $content = DB:tt_news:16:title.
wrap3 = {|}
wrapt $content mit geschwungenen Klammern, $content = {DB:tt_news:16:title}.
insertData = 1
Ersetzt nun alle Inhalte von geschwungenen Klammern durch das entsprechende Ergebnis von getText, ließt in diesem Fall also den Titel der entsprechenden News aus.
stdWrap selbst erweitern
Es gibt drei Möglichkeiten, stdWrap so benötigt zu erweitern. Anwendungszwecke sind z.B. das bereitstellen weiterer PHP Funktionen, auch aus externen Bibliotheken, das einfache Bereitstellenvon Funktionen eigener Extensions etc.
Quick & Dirty: userFuncs in stdWrap
StdWrap stelllt zwei Möglichkeiten UserFuncs einzubinden zur Verfügung: die preUserFunc direktnach dem Einlesen der Daten noch vor deren überprüfung durch ifEmpty etc und die postUserFunc nach allen anderen Funktionen außer debugging Ausgaben etc.
Veraltet: stdWrap durch xClass erweitern
Wie beinahe jede Klasse in TYPO3, so kann auch stdWrap durch xClass erweitert werden. Jedoch kann nur eine Extension installiert sein, die das xClassing nutzt, denn dieses kann nur einmalig angewendet werden. Nutzt man xClass so ist unbedingt darauf zu achten, dass stdWrap rekursiv aufgerufen wird. Man kann seine eigene Funktion dann jedoch nur ganz am Anfang oder ganz am Ende von stdWrap aufrufen.
Seit TYPO3 4.2: Hooks in stdWrap
StdWrap implemntiert vier Hooks: stdWrapPreProcess ganz am Anfang von stdWrap, stdWrapOverride (entspricht preUserFunc) nach dem Holen der Daten vor deren Überprüfung, stdWrapProcess direkt nach dem rekursiven stdWrap Aufruf, sowie stdWrapPostProcess (entspricht ~ postUserFunc ) ganz am Ende der stdWrap Funktion (vor den debug Ausgaben).
Eigene zur Veröffentlichung bestimmten Extensions sollten immer die Hook-Methode nutzen. Hier gibt es eine Anleituzng zum Erstellen von stdWrap-Hooks: Anleitung: Hook für stdWrap erstellen.
Extensions, die stdWrap erweitern:
Im folgenden eine Liste von Extensions, die stdWrap erweitern. Vorsicht ist mit Extensions geboten, die xClass nutzen.
Extensions, die stdWrap erweitern (stdWrap Hooks):
- quote functions for stdWrap( sm_stdwrapquote ): SQL-Injects verhindern (+++)
- PMK HTML Crop( pmkhtmlcrop ): HTML-Code valide croppen (++)
Extensions, die stdWrap erweitern (xClass, userFunc)
- STDWRAP plus( nh_stdwrap_plus ): Suchen und Ersetzen von Strings (+)
- meta_stdwrap (-)
- am_stdwrap_numberformat (-)
- kb_betterstdwrap (--)


Kommentar hinzufügen