====== stdWrap ====== stdWrap ist eine Sammlung von Funktionen, die in TypoScript angewandt werden können. Die Funktionen sind grob unterteilt in * **Daten holen** (data, field, cObject, ...) * **Überschreiben /Bedingungen** (override, if, trim, ...) * **Daten verarbeiten** (split, wrap, typolink, ...) Die Funktionen werden in der Reihenfolge abgearbeitet, in der sie im Quellcode hinterlegt sind. Die Reihenfolge im TypoScript spielt keine Rolle. Man kann stdWrap aber rekursiv (''stdWrap.stdWrap'') anwenden, um die Reihenfolge zu beinflussen. Seit TYPO3 4.7 steht mit ''orderedStdWrap'' eine neue Funktion zur Verfügung, mit der man die Reihenfolge der Anwendungen nummeriert festlegen kann. ---- ====== Daten holen ====== ==== stdWrapPreProcess ==== //hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)// ---- ==== setContentToCurrent ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Überschreibt den aktuellen Wert des Elternelements mit dem vorher definierten Wert. Genaueres unter [[typo3:about:functions:current#setcontenttocurrent|current]]. ---- ==== cacheRead ==== ab TYPO3 4.7\\ **Datentyp:** ---- ==== setCurrent ==== **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap Ersetzt wie ''setContentToCurrent'' den aktuellen Wert des Elternelements, hier wird der Wert aber manuell als String angegeben. stdWrap-Funktionen sind anwendbar. Genaueres unter [[typo3:about:functions:current#setcurrent|current]]. ---- ==== lang ==== **Datentyp:** //Array von Sprachschlüsseln (de, en, etc.)// Wird verwendet, um optionale Übersetzungen eines Texts festzulegen. Alle weiteren stdWrap-Funktionen werden dann auf ''value'' und ''lang'' angewendet. config.language = de 10 = TEXT 10 { value = Welcome! lang.de = Willkommen! } ---- ==== data ==== **Datentyp:** [[typo3:about:datentypen&#gettext|getText]] Ermöglicht das Auslesen von Daten aus verschiedensten Quellen: Systemeinstellungen, Session-Daten, DB-Feld-Inhalte, etc. # Auf der Ebene von 'PAGE' muss die Tabelle 'pages' nicht extra angesprochen werden. 10 = TEXT 10.data = field:nav_title # Liest den GET-Parameter '&zahl=' aus 10 = TEXT 10.data = GP:zahl # Gibt den Header des Inhaltselements 17 aus # Hinweis: Die ID 17 könnte mit zus. TypoScript dynamisch ausgelesen werden 10 = TEXT 10.data = DB : tt_content:17:header # Gibt den Namen des angemeldeten Benutzers aus 10 = TEXT 10.data = TSFE:fe_user|user|username # Liefert die URL der aktuellen Seite: 10 = TEXT 10.data = getIndEnv:TYPO3_REQUEST_URL ---- ==== field ==== **Datentyp:** //Feldname// Greift auf Felder der aktuellen Tabelle zu. Innerhalb des PAGE-Objekts wird auf die pages-Tabelle zugegriffen. # Folgendes Beispiel erfüllt denselben Zweck wie das erste TypoScript bei 'data': 10 = TEXT 10.field = nav_title # Mehrere Feldnamen können mit zwei Slashes getrennt werden # Der Inhalt des ersten nicht leeren Feldes wird ausgegeben. 10 = TEXT 10.field = nav_title // title ---- ==== current ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Übergibt den aktuellen Wert an ein Element oder Parameter. Siehe [[typo3:about:functions:current|current]]. ---- ==== cObject ==== **Datentyp:** [[typo3:about:datentypen#cobject|cObject]] Gibt den Inhalt bzw. das Ergebnis eines cObjects aus. temp.case = CASE temp.case { key.data = page:uid 1 = TEXT 1.value = Dies ist die Startseite. default = TEXT default.value = Nicht die Startseite. } page = PAGE page { 10 = TEXT 10.cObject < temp.case } # Lädt das Ergebnis des cObject 'CASE' als Wert. UID 1 = Dies ist die Startseite. ---- ==== numRows ==== **Datentyp:** //Tabellenname// und [[typo3:about:functions:select|select]] numRows liest mithilfe von ''select'' Datensätze aus der Datenbank aus und gibt die __Anzahl__ der passenden Datensätze aus. # Ausgabe: Anzahl der direkten Unterseiten der aktuellen Seite, # die 'ab' im Namen beinhalten 10 = TEXT 10.numRows { table = pages select { where = title LIKE '%ab%' } } # Die select-Abfrage kann präzisiert werden: [...] # Von der Unterseite 4 suchen: 10.numRows.select.pidInList = 4 # Von der in 'pidInList' festgelegten Seite in 3 Ebenen suchen: 10.numRows.select.recursive = 3 ---- ==== filelist ==== **Datentyp:** [[typo3:about:datentypen#dir|dir]] / stdWrap Gibt den Inhalt eines Verzeichnisses als kommaseparierte Liste aus. Voreingestellt kann nur der //fileadmin//-Ordner (und dessen Unterverzeichnisse) angegeben werden. Wenn ein anderer Ordner gewünscht ist, muss dies mit ''config.lockFilePath = '' eingestellt werden. Eine kommaseparierte Liste kann dort aber nicht angelegt werden. Es gibt 5 verschiedene **Parameter**, die mit dem Pipe-Symbol voneinander getrennt werden: - Pfad inkl. Slash ''/'' am Ende - Kommaseparierte Liste von möglichen Dateiendungen. Wenn leer, wird alles ausgegeben. - Sortierung der Ergebnisse: * name -> Nach Dateiname. Erst Ziffern, dann Buchstaben. * size -> Nach Dateigröße, die kleinste Datei zuerst. * ext -> Nach Name der Dateiendung, alphabetisch. * date -> Nach Erstellungsdatum, die älteste Datei zuerst. * mdate -> Nach Änderungsdatum, die älteste Datei zuerst. - Umgekehrte Reihenfolge: ''r'' für umgekehrt, leer für normal. - Gesamter Pfad: Wenn aktiviert (jeder Wert außer ''0''), wird zusätzlich zu den Dateinamen der gesamte Pfad ausgegeben. Parameter können weggelassen werden, ob dann zwischen den beiden Pipe-Symbolen ein Leerzeichen steht oder nicht, ist egal. Pipe-Symbole nach dem letzten gewünschten Parameter können weggelassen werden; theoretisch reicht also der Dateipfad aus. 10 = TEXT 10.filelist = fileadmin/images/|png,jpg|name||0 # Ausgabe: bild1.png,bild2.jpg,bild3.png ---- ==== preUserFunc ==== **Datentyp:** ---- ===== Überschreiben /Bedingungen ===== ==== stdWrapOverride ==== //hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)// ---- ==== override ==== **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap ''override'' funktioniert genau entgegengesetzt zu ''ifEmpty'': Wenn das Ergebnis von override nicht leer ist, ersetzt dieser Inhalt den ursprünglichen Wert. 10 = TEXT 10.value = Es existiert kein Navigationstitel. 10.override.field = nav_title ---- ==== preIfEmptyListNum ==== **Datentyp:** ---- ==== ifEmpty ==== **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap Wenn der eigentliche Inhalt leer ist oder den Wert ''0'' (false) besitzt, wird der Inhalt aus ''ifEmpty'' ausgegeben. 10 = TEXT 10.field = nav_title 10.ifEmpty = Es existiert kein Navigationstitel. 10 = TEXT 10.value = 0 10.ifEmpty = Es existiert kein Wert. # Ausgabe: Es existiert kein Wert. Mit den bereitgestellten stdWrap-Funktionen und ''cObject'' kann dann beispielsweise auch ein anderer Inhalt referenziert werden: lib.alternative = TEXT lib.alternative.value = Alternativer Inhalt. 10 = TEXT 10.data = field:nav_title 10.wrap =

|

10.ifEmpty.cObject < lib.alternative # Ausgabe:

Alternativer Inhalt.

---- ==== ifBlank ==== **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap Ähnlich wie ''ifEmpty'', jedoch wird ''0'' als normaler Wert angesehen und entsprechend ausgegeben oder weiterverarbeitet. 10 = TEXT 10.value = 10.ifBlank = Es existiert kein Wert. # Ausgabe: Es existiert kein Wert. 10 = TEXT 10.value = 0 10.ifBlank = Es existiert kein Wert. # Ausgabe: 0 ---- ==== listNum ==== **Datentyp:** int + calc + //last// + //rand// Zerlegt den Inhalt eines Datenbankfeldes oder Wertes in ein Array und gibt den gewünschten Wert wieder. Standard-Trennzeichen ist das Komma.\\ Besondere Schlüsselwörter:\\ ''last'' -> letzter Wert\\ ''rand'' -> zufälliger Wert ab TYPO3 4.6 # Drittletzter Wert. Ausgabe: Zwei 10 = TEXT 10.value = Null,Eins,Zwei,Drei,Vier 10.listNum = last - 2 # Mit 'calc' berechnen. Ausgabe: Zwei 20 = TEXT 20.value = Null,Eins,Zwei,Drei,Vier 20.listNum = -1 + 2 * 2 # Hinweis: calc arbeitet die Rechenaufgabe von vorne nach hinten ab (keine Punkt- vor Strichrechnung!) # Trennzeichen wählen 30 = TEXT 30.value = Null&Eins&Zwei&Drei&Vier 30.listNum = 1 30.listNum.splitChar = & # Zufälliger Wert aus Datenbanktabelle (Feld 'media' in Seiteneigenschaften) 40 = TEXT 40.data = DB:pages:1:media 40.listNum = rand ---- ==== trim ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Entfernt mit der PHP-Funktion ''trim()'' alle Leerzeichen vor und nach dem Wert. 10 = TEXT 10.data = field:header 10.trim = 1 ---- ==== strPad ==== ab TYPO3 6.1 Füllt den aktuellen Wert auf eine festgelegte Länge (''length''). Der mit ''padWith'' festgelegte Füllwert kann aus einem oder mehreren Zeichen bestehen und wiederholt sich, bis die gewünschte Gesamtlänge des Wertes erreicht ist. Mit ''type'' kann gewählt werden, an welcher Seite dieser Füllwert angesetzt wird. ''strPad'' wird den aktuellen Wert hingegen __nicht__ beschneiden, falls er bereits länger ist als mit ''length'' angegeben. 10 = TEXT 10.value = HALLO WELT. 10.strPad { // Gewünschte Gesamtlänge des Eingabewertes: length = 36 // Beliebiger Füllwert: padWith = füllen // left, right oder both: type = both } # Ausgabe: füllenfüllHALLO WELT.füllenfülle Ab TYPO3 6.2 können auf alle drei Eigenschaften stdWrap-Funktionen angewendet werden. ---- ==== stdWrap ==== **Datentyp:** stdWrap Ermöglicht das rekursive Anwenden von stdWrap, um die Reihenfolge von Funktionen beeinflussen zu können. ---- ==== stdWrapProcess ==== //hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)// ---- ==== required ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Gibt an, dass ein Wert vorhanden sein muss, nachdem Daten importiert und verarbeitet wurden (data, field, current, listNum, trim). ''0'' ist ein Wert; in diesem Fall sollte ''if'' verwendet werden. Das folgende TypoScript ist //css_styled_content// entnommen. Es ergänzt das -Tag für die Überschriften mit einem style-Element, welches die gewünschte Position (//left, right, center//) enthält; aber nur, wenn im DB-Feld auch ein Wert enthalten ist. Bei der Default-Einstellung ist das DB-Feld leer. lib.stdheader.2 = LOAD_REGISTER lib.stdheader.2 { headerStyle.field = header_position headerStyle.required = 1 headerStyle.noTrimWrap = | style="text-align:|;"| } # Ausgabe bei leerem DB-Feld 'header_position': #

Headline

# Ausgabe bei Wert 'center': #

Headline

---- ==== if ==== Mit ''if'' ist es möglich, eine oder mehrere Bedingungen zu definieren, bevor das Ergebnis eines cObjects ausgegeben wird. Bei Erfüllung aller Kriterien wird //true// zurückgegeben. Wenn nur eine Bedingung nicht erfüllt wird, führt dies mit der Meldung //false// zum Abbruch. Eine genauere Erklärung ist unter [[typo3:about:functions:if|if]] zu finden. ---- ==== fieldRequired ==== **Datentyp:** //Feldname// Die TypoScript-Anweisungen des Elements werden nur ausgeführt, wenn das in ''fieldRequired'' genannte Feld nicht leer ist bzw. nicht den Wert ''0'' oder ''NULL'' besitzt. Dieses Feld muss nicht zwingend identisch mit dem Inhalt des Elements sein. 10 = TEXT 10.fieldRequired = TSconfig 10.value = Diese Seite besitzt TSconfig-Einstellungen ---- ===== Daten verarbeiten ===== ==== csConv ==== Mit dieser Funktion kann man Daten aus der Datenbank für das Frontend in einem anderem Format (charset, z.B. //UTF-8// zu //ISO 8859-1//) ausgeben. Da dieser Anwendungsfall in einer sauberen Installation praktisch nicht gegeben ist, verzichte ich hier auf ein Beispiel. ---- ==== parseFunc ==== Eine umfangreiche Erklärung findet sich [[typo3:about:functions:parsefunc|hier]]. ---- ==== HTMLparser ==== **Datentyp:** ---- ==== split ==== Eine umfangreiche Erklärung findet sich [[typo3:about:functions:split|hier]]. ---- ==== replacement ==== ab TYPO3 4.6\\ Sucht und ersetzt Inhalt, unterstützt reguläre Ausdrücke. Wie bei einem COA können mehrere Suchvorgänge gleichzeitig durchgeführt werden. Die Nummerierung ist auch bei einem einzelnen Suchvorgang Pflicht. 10 = TEXT 10 { value = Rot stdWrap.replacement { 10 { search = Rot replace = Blau } } } # Ausgabe: Blau 20 = TEXT 20 { value = There_are_a_cat,_a_dog_and_a_tiger_in_da_hood!_Yeah! stdWrap.replacement { 10 { search = _ # 32 = ASCII-Code für ein Leerzeichen replace.char = 32 } 20 { search = in da hood replace = around the block } 30 { search = #a (Cat|Dog|Tiger)#i replace = an animal useRegExp = 1 } } } # Ausgabe: There are an animal, an animal and an animal around the block! Yeah! ---- ==== prioriCalc ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] / //intval// Liest den Wert als Rechenaufgabe und gibt das Ergebnis aus. * Mögliche Operatoren: ''+'', ''-'', ''*'', ''/'', ''^'' (Potenz), ''%'' (Modulo1) * Kommazahlen werden mit dem Punkt getrennt * Minuswerte werden als solche erkannt * Punkt- vor Strichrechnung wird berücksichtigt, auch Klammersetzungen sind möglich. * Teilung durch Null sorgt ordnungsgemäß für eine Fehlermeldung. * Wenn ganzzahlige Werte gewünscht sind, kann ''prioriCalc = intval'' gesetzt werden (//2.99// wird zu //2//). * **Einschränkungen:** Text im Wert sollte unbedingt vermieden werden, weil dann in vielen Fällen nicht alles richtig berechnet werden kann. 10 = TEXT 10.value = 3*3+2*2 10.prioriCalc = 1 # Ausgabe: 13 20 = TEXT 20.value = (3*3+2)*2 20.prioriCalc = 1 # Ausgabe: 22 30 = TEXT 30.value = 2 ^ 4 30.prioriCalc = 1 # Ausgabe: 16 40 = TEXT 40.value = 20/3 40.prioriCalc = intval # Ausgabe: 6 1Modulo berechnet den Rest einer Teilung. ''14%4'' ergibt __2__, weil die 4 dreimal in die 14 passt, und anschließend noch der Restwert 2 übrigbleibt. ''10%5'' ergibt __0__, da die 5 genau zweimal in die 10 passt und somit kein Restwert vorhanden ist. ''4%7'' ergibt __4__, weil die 7 nicht in die 4 passt und daher 4 auch als Restwert stehen bleibt. ---- ==== char ==== **Datentyp:** [[typo3:about:datentypen#integer|integer]] Wandelt den Integerwert in ein einzelnes [[basics:ascii|ASCII]]-Zeichen um. Verwendet die PHP-Funktion ''chr()'' (zusammen mit ''intval()'', um vorher eine Ganzzahl zu erhalten). 10 = TEXT 10.char = 83 # Ausgabe: S ---- ==== intval ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Prüft den Wert auf eine Zahl. Am Anfang stehende Ziffern werden als Integer ausgelesen, ggf. folgende Zeichen werden ignoriert. Stehen am Beginn des Werts keine Ziffern, gibt intval ''0'' aus, egal ob an anderer Stelle des Wertes noch Ziffern folgen. 10 = TEXT 10.value = 19.99 Euro 10.intval = 1 # Ausgabe: 19 10 = TEXT 10.value = Euro 19.99 10.intval = 1 # Ausgabe: 0 ---- ==== hash ==== ab TYPO3 4.6\\ **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap Erstellt einen Hash-Wert aus dem aktuellen Wert mit einem der Algorithmen aus der PHP-Funktion [[http://www.php.net/manual/de/function.hash-algos.php|hash_algos]] (z.B. md5 oder sha1). # Gravatar verwendet zur Anzeige des Bildes den Hash der E-Mail-Adresse: 10 = TEXT 10 { value = test@example.org hash = md5 wrap = # Ergebnis: } ---- ==== round ==== ab TYPO3 4.6\\ **Datentyp:** Rundet den Wert auf oder ab. Es gibt zwei Untereigenschaften: * ''.roundType'' mit folgenden Schlüsselwerten: * **//ceil//** -> Rundet zur nächsten Ganzzahl auf * **//floor//** ->Rundet zur vorherigen Ganzzahl ab * **//round//** -> Rundet den Wert auf eine festzulegende Anzahl von Nachkommastellen * ''.decimals'': Anzahl der Nachkommastellen. Nur in Verbindung mit **//.roundType = round//**. lib.number = TEXT lib.number { value = 3.14159 round.roundType = round round.decimals = 2 } # Ausgabe: 3.14 ---- ==== numberFormat ==== **Datentyp:** numberFormat (PHP-Funktion [[http://php.net/manual/de/function.number-format.php|number_format()]]) Formatiert eine Gleitkommazahl um, z.B. in eine Preisangabe. 10 = TEXT 10 { value = 1299.9 numberFormat { # Nachkommastellen festlegen: decimals = 2 # Verwendung von cObject für mehrsprachige Formatierung: thousands_sep.cObject = TEXT thousands_sep.cObject { value = , stdWrap.lang.de = . } dec_point.cObject = TEXT dec_point.cObject { value = . stdWrap.lang.de = , } } noTrimWrap = || €| } # Ausgabe Deutsch: 1.299,90 € # Ausgabe Englisch: 1,299.90 € ---- ==== expandList ==== ab TYPO3 4.6\\ Ermöglicht das Errechnen von Werten, die in einer __kommaseparierten Liste__ mit Bindestrich als Spanne markiert sind. Das Mischen von Ziffern und Buchstaben ist möglich, beide Zeichenarten lassen sich errechnen. Inhalte, die in dieser Liste nicht mit Bindestrich unterteilt sind, werden auch nicht berechnet. 10 = TEXT 10.value = 1,3,6-9,12 10.expandList = 1 # Ausgabe: 1,3,6,7,8,9,12 20 = TEXT 20.value = a-g 20.expandList = 1 # Ausgabe: a,b,c,d,e,f,g 30 = TEXT 30.value = Text,6-9,Text 30.expandList = 1 # Ausgabe: Text,6,7,8,9,Text 40 = TEXT 40.value = at-bc 40.expandList = 1 # Ausgabe: at,au,av,aw,ax,ay,az,ba,bb,bc 50 = TEXT 50.value = 1t-2c 50.expandList = 1 # Ausgabe: 1t,1u,1v,1w,1x,1y,1z,2a,2b,2c ---- ==== date ==== **Datentyp:** [[typo3:about:datentypen#date-conf|date-conf]] (PHP-Funktion ''[[http://php.net/manual/de/function.date.php|date()]]'') Wandelt einen Unix-Timestamp (Sekunden seit 1.9.1970) in eine Zeitangabe um. Buchstaben, die nicht mit der Funktion umgewandelt werden sollen, müssen mit einem Backslash maskiert werden. 10 = TEXT 10.field = tstamp 10.date = d.m.Y # Ausgabe: 21.01.2014 20 = TEXT 20.field = tstamp 20.date = \E\s \i\s\t H:i \U\h\r. # Ausgabe: Es ist 20:30 Uhr. ---- ==== strftime ==== **Datentyp:** [[typo3:about:datentypen#strftime-conf|strftime-conf]] (PHP-Funktion ''[[http://de2.php.net/manual/de/function.strftime.php|strftime()]]'') Wandelt ebenfalls einen Unix-Timestamp (Sekunden seit 1.9.1970) in eine Zeitangabe um. Unterschied zu ''stdWrap.date'': Text muss nicht mit einem Backslash maskiert werden, stattdessen werden die zu gewünschten Parameter mit ''%'' begonnen. 10 = TEXT 10.field = tstamp 10.strftime = %d.%m.%Y # Ausgabe: 21.01.2014 20 = TEXT 20.field = tstamp 20.strftime = Es ist %R Uhr. # Ausgabe: Es ist 20:30 Uhr. ---- ==== age ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] / [[typo3:about:datentypen#string|string]] Kann die Differenz zwischen dem aktuellen und dem gesetzten Zeitpunkt (Unix-Timestamp) als Alter ausgeben. Bei Nutzung mit boolean-Wert ''1'' wird das Alter mit englischen Zeitangaben ausgegeben. Man kann diese überschreiben, wenn man stattdessen die entsprechenden Zeitangaben übersetzt und mit Pipesymbol getrennt aufführt (feste Reihenfolge). Die Nutzung der ''age''-Zeitangaben hängt vom errechneten Alter ab:\\ bis 60 Minuten = min\\ bis 24 Stunden = hrs\\ bis 356 Tage = days\\ ab 365 Tage = yrs 10 = TEXT 10.field = tstamp 10.age = 1 # Ausgabe: 2 days 20 = TEXT 20.field = tstamp 20.age = Minute(n) | Stunde(n) | Tag(e) | Jahr(e) # Ausgabe: 2 Tag(e) ---- ==== case ==== **Datentyp:** [[typo3:about:datentypen#case|case]] Verändert die Groß-/Kleinschreibung von Strings. 10 = TEXT 10.value = Hello World! 10.case = upper # Ausgabe: HELLO WORLD! 20 = TEXT 20.value = Hello World! 20.case = lower # Ausgabe: hello world! ---- ==== bytes ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Rechnet einen Integer-Wert in Bytes um. Bis zum Wert ''900'' wird kein Kürzel angehangen (kann mit ''bytes.labels'' geändert werden). Mit ''bytes.labels'' können die Standardwerte (K, M, G) geändert werden. bis 900 = ''leer'' (Bytes)\\ 901 bis 900000 = K\\ 900001 bis 900000000 = M\\ ab 900000001 = G\\ 10 = TEXT 10.value = 1024 10.bytes = 1 10.bytes.labels = " bytes | KB | MB | GB" # Ausgabe: 1.0 KB ---- ==== substring ==== Beschneidet den String. Es sind zwei Parameter möglich, die durch ein Komma getrennt werden: - **Position des ersten Zeichens** (Start bei ''0''). Wird nur dieser Parameter verwendet, wird ab dem definierten Zeichen der gesamte Rest des Strings ausgegeben.\\ Bei einem __negativen__ Wert wird dieser als Länge verwendet und der String vom Ende aus beschnitten; der zweite Parameter ist dann nutzlos. - **Gewünschte Länge des Werts**. Wird nur dieser zweite Parameter verwendet ('',3''), wird vom Beginn des Strings an gezählt (Position 0). 10 = TEXT 10.value = abcdefgh 10.substring = 3 # Ausgabe: defgh 20 = TEXT 20.value = abcdefgh 20.substring = ,3 # Ausgabe: abc 30 = TEXT 30.value = abcdefgh 30.substring = 1,4 # Ausgabe: bcde 40 = TEXT 40.value = abcdefgh 40.substring = -2 # Ausgabe: gh ---- ==== removeBadHTML ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Entfernt als gefährlich eingestuften HTML-Code, der Cross-Site-Scripting ermöglichen könnte. 10 = TEXT 10.value = 10.removeBadHTML = 1 # Ausgabe: [leer] # Hinweis: iframe wurde wegen des wiki-Sperrfilters umbenannt. ---- ==== cropHTML ==== **Datentyp:** [[typo3:about:datentypen&#integer|integer]] %%|%% [[typo3:about:datentypen&#string|string]] %%|%% [[typo3:about:datentypen&#boolean|boolean]] Kürzt Text auf eine wählbare Zeichenlänge. **Zeichen von HTML-Tags werden nicht mitgezählt.** Es sind bis zu drei Parameter möglich, die durch das Pipe-Symbol unterteilt werden: - **Zeichenlänge:** Die maximale Länge des Strings. Ein negativer Wert schneidet den String beginnend vom Ende an ab. - **Auslassungszeichen:** Ein frei wählbarer String, der dem gekürzten Text angehangen wird - **Ganze Worte entfernen:** Wenn aktiviert, wird das Wort, dass durch die Zeichenlänge beschnitten würde, komplett entfernt. Dieser Parameter wird ignoriert, wenn dadurch der __gesamte__ String entfernt würde. 10 = TEXT 10.value =

Ich bin ein Beispieltext

10.cropHTML = 10| ... # Ausgabe:

Ich bin ei ...

20 = TEXT 20.value =

Ich bin ein Beispieltext

20.cropHTML = -10|...  # Ausgabe:

... ispieltext

30 = TEXT 30.value =

Ich bin ein Beispieltext

30.cropHTML = 10| ...|1 # Ausgabe:

Ich bin ...

40 = TEXT 40.value =

Ich bin ein Beispieltext

40.cropHTML = 10||1 # Ausgabe:

Ich bin

---- ==== stripHtml ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Entfernt alle HTML-Tags. 10 = TEXT 10.value =

Willkommen

10.stripHtml = 1 # Ausgabe: Willkommen
---- ==== crop ==== **Datentyp:** [[typo3:about:datentypen&#integer|integer]] %%|%% [[typo3:about:datentypen&#string|string]] %%|%% [[typo3:about:datentypen&#boolean|boolean]] Kürzt Strings auf eine wählbare Zeichenlänge. Es sind bis zu drei Parameter möglich, die durch das Pipe-Symbol unterteilt werden: - **Zeichenlänge:** Die maximale Länge des Strings. Ein negativer Wert schneidet den String beginnend vom Ende an ab. - **Auslassungszeichen:** Ein frei wählbarer String, der dem gekürzten Text angehangen wird - **Ganze Worte entfernen:** Wenn aktiviert, wird das Wort, dass durch die Zeichenlänge beschnitten würde, komplett entfernt. Dieser Parameter wird ignoriert, wenn dadurch der __gesamte__ String entfernt würde. **Achtung:** Zeichen von HTML-Tags werden mitgezählt. Bei Werten mit HTML daher ''cropHTML'' verwenden! 10 = TEXT 10.value = Ich bin ein Beispieltext 10.crop = 10| ... # Ausgabe: Ich bin ei ... 20 = TEXT 20.value =

Ich bin ein Beispieltext

20.crop = 10| ... # Ausgabe:

Ich bin ... 30 = TEXT 30.value = Ich bin ein Beispieltext 30.crop = 10| ...|1 # Ausgabe: Ich bin ... 40 = TEXT 40.value = Ich bin ein Beispieltext 40.crop = -4|... |0 # Ausgabe: ... text ---- ==== rawUrlEncode ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Ersetzt mit der PHP-Funktion ''rawurlencode()'' alle nicht-alphanumerischen Zeichen außer ''-_.'' durch ein Prozentzeichen und zwei Hex-Werte, zB. ''%20'' bei Leerzeichen. Diese Maskierung schützt Sonderzeichen in Werten vor fehlerhafter Interpretation. ---- ==== htmlSpecialChars ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Wandelt Sonderzeichen in HMTL-Entitäten um, also **//&//** zu **//&//**. Um die Umwandlung von im Wert vorhandenen HTML-Entitäten zu verhindern, kann man die Untereigenschaft ''.preserveEntities'' verwenden. Andernfalls würde **//ö//** zu **//&ouml;//**. 10 = TEXT 10.value =

Schmidt & Söhne

10.htmlSpecialChars = 1 10.htmlSpecialChars.preserveEntities = 1 # Quellcode: <p>Schmidt & Söhne</p> # Ansicht:

Schmidt & Söhne

---- ==== doubleBrTag ==== **Datentyp:** ---- ==== br ==== **Datentyp:** [[typo3:about:datentypen&#string|string]] / stdWrap Konvertiert alle Zeilenumbrüche im Wert in das HTML-Element ''
''. Verwendet hierzu die PHP-Funktion [[http://php.net/manual/de/function.nl2br.php|nl2br()]]. 10 = TEXT 10.value ( Hallo Welt! ) 10.br = 1 # Ausgabe: Hallo
Welt!
---- ==== brTag ==== **Datentyp:** ---- ==== encapsLines ==== siehe -> [[typo3:about:functions:encapslines|encapsLines]] ---- ==== keywords ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Teilt den String anhand der Zeichen '','', '';'' und //chr(10)// (Zeilenumbruch), entfernt Leerzeichen am Anfang und Ende der so gewonnenen Werte und gibt diese als kommasepararierte Liste aus. 10 = TEXT 10.value ( eins, zw ei drei vier; fünf ) 10.keywords = 1 # Ausgabe: eins,zw ei,drei,vier,fünf ---- ==== innerWrap ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] / stdWrap Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. Wird vor ''wrap'' ausgeführt und steht demnach //innen//. 10 = TEXT 10.value = Inhalt 10.wrap = 10.innerWrap =
  • |
  • # Ausgabe:
    ---- ==== innerWrap2 ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] / stdWrap Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. Wird vor ''wrap'' ausgeführt, aber nach ''innerWrap''. ---- ==== fontTag ==== entfernt mit TYPO3 8.4\\ **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] Der Name ist irreführend. Es handelt sich hierbei um einen normalen Wrap. Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. ---- ==== addParams ==== **Datentyp:** HTML-Attribut / [[typo3:about:datentypen&#integer|integer]] Ermöglicht das Hinzufügen von Attributen zu einem HTML-Element im aktuellen Wert. Mit der Eigenschaft ''_offset'' wird das HTML-Element ausgewählt: * Positive Werte zählen vom ersten HTML-Element an. * Negative Werte zählen vom letzten HTML-Element an. * **Achtung**: Die schließenden HTML-Elemente werden mitgezählt, die Attribute würden von TYPO3 auch dort eingefügt! Die Attribute werden folgendermaßen notiert: ''addParams.[Attribut] = [Wert]''. Die Attribute werden alle demselben unter ''_offset'' gewählten HTML-Element zugeordnet! 10 = TEXT 10.value =

    Text

    10.addParams.style = color:red 10.addParams._offset = 2 # Ausgabe:

    Text

    20 = TEXT 20.value =
    20.addParams.rowspan = 2 20.addParams._offset = -1 # Ausgabe:
    ---- ==== textStyle ==== **Datentyp:** entfernt mit TYPO3 7.3 ---- ==== tableStyle ==== **Datentyp:** entfernt mit TYPO3 7.3 ---- ==== filelink ==== siehe -> [[typo3:about:functions:filelink|filelink]] ---- ==== preCObject ==== **Datentyp:** [[typo3:about:datentypen#cobject|cObject]] Ermöglicht es, dem cObject ein weiteres cObject voranzusetzen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von ''preCObject'' ist identisch mit ''prepend''. 10 = HMENU 10 { special = rootline special.range = -1 1 = TMENU 1.NO = 1 stdWrap.preCObject = TEXT stdWrap.preCObject.value = Aktuelle Seite: } # Ausgabe: Aktuelle Seite: Seitentitel ---- ==== postCObject ==== **Datentyp:** [[typo3:about:datentypen#cobject|cObject]] Ermöglicht es, dem cObject ein weiteres cObject nachfolgen zu lassen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von ''postCObject'' ist identisch mit ''append''. 10 = TEXT 10 { value = Sie sind hier: stdWrap.postCObject = HMENU stdWrap.postCObject { special = rootline special.range = -1 1 = TMENU 1.NO = 1 } } # Ausgabe: Aktuelle Seite: Seitentitel ---- ==== wrapAlign ==== **Datentyp:** [[typo3:about:datentypen#align|align]] / stdWrap Umschließt den Wert mit einem ''div''-Element, das ein //text-align//-Styleattribut beinhaltet. 10 = TEXT 10.value = Inhalt 10.wrapAlign = left # Ausgabe:
    Inhalt
    ---- ==== typolink ==== Eine umfangreiche Erklärung findet sich [[typo3:about:functions:typolink|hier]]. ---- ==== TCAselectItem ==== **Datentyp:** ---- ==== spaceBefore ==== **Datentyp:** [[typo3:about:datentypen#positive_integer|positive integer]] Setzt einen Abstand vor dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe ''space''). ---- ==== spaceAfter ==== **Datentyp:** [[typo3:about:datentypen#positive_integer|positive integer]] Setzt einen Abstand nach dem cObject, die Angabe erfolgt als Pixelwert. Sehr unsaubere Lösung (siehe ''space''). ---- ==== space ==== **Datentyp:** [[typo3:about:datentypen#space|space]] Ermöglicht das Bestimmen eines Abstandes vor und nach dem cObject, entweder mit einem unsichtbaren .gif oder durch ''.useDiv'' mit leeren ''div''-Elementen. Beide Lösungen sind mehr als unsauber und sollten vermieden werden. Stattdessen sollte mit //margin//-Angaben gearbeitet werden. 10 = TEXT 10.value = Inhalt 10.space = 20|30 # Ausgabe: # #
    # Inhalt # #
    20 = TEXT 20.value = Inhalt 20.space = 20|30 20.space.useDiv = 1 # Ausgabe: #
    # Inhalt #
    ---- ==== wrap ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] Umschließt den aktuellen Wert mit dem im Wrap definierten Inhalt. Die Stelle, wo der Inhalt eingefügt werden soll, wird mit dem Pipe-Symbol markiert. Dieses kann auch am Anfang oder Ende des Wraps stehen. Ist kein Pipe-Symbol im Wrap vorhanden, wird der Inhalt am Ende des Wraps eingefügt. Mit der zusätzlichen Eigenschaft ''.splitChar'' kann ein alternatives Trennzeichen gewählt werden. 10 = TEXT 10.value = Inhalt 10.wrap =

    |

    # Ausgabe:

    Inhalt

    20 = TEXT 20.value = Inhalt 20.wrap =

    ?

    20.wrap.splitChar = ? # Ausgabe:

    Inhalt

    ---- ==== noTrimWrap ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] Grundsätzlich wie [[typo3:about:functions:stdwrap#wrap|wrap]]. Ermöglicht zudem, alle Leerzeichen im Wrap zu erhalten. Dazu dienen zwei weitere Pipe-Symbole als Markierungen, wo der Wrap beginnt und endet. Gewünschte Leerzeichen müssen so nicht mit // // gesetzt werden. ab TYPO3 6.1: ''.splitChar'' möglich. Hilfreich, um [[typo3:about:functions:optionsplit|optionSplit]] mit ''noTrimWrap'' zu verwenden. 10 = TEXT 10.value = Inhalt 10.noTrimWrap = |

    Wrap: |

    | # Ausgabe:

    Wrap: Inhalt

    ---- ==== wrap2 ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. ''.splitChar'' möglich. ---- ==== dataWrap ==== **Datentyp:** wrap, [[typo3:about:datentypen&#gettext|getText]] und andere Ermöglicht einen Wrap, in dem dynamische Inhalte mittels getText ausgelesen werden können. Der oder die getText-Abfragen werden in geschweifte Klammern geschrieben. # Ausgabe:

    Sie sind auf Seite: Seitentitel

    10 = TEXT 10.value = Sie sind auf Seite: 10.dataWrap =

    | {field:title}

    # Ausgabe: page.bodyTag > page.bodyTagCObject = TEXT page.bodyTagCObject.dataWrap =
    ---- ==== prepend ==== **Datentyp:** [[typo3:about:datentypen#cobject|cObject]] Ermöglicht es, dem cObject ein weiteres cObject voranzusetzen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von ''prepend'' ist identisch mit ''preCObject''. 10 = HMENU 10 { special = rootline special.range = -1 1 = TMENU 1.NO = 1 stdWrap.prepend = TEXT stdWrap.prepend.value = Aktuelle Seite: } # Ausgabe: Aktuelle Seite: Seitentitel ---- ==== append ==== **Datentyp:** [[typo3:about:datentypen#cobject|cObject]] Ermöglicht es, dem cObject ein weiteres cObject nachfolgen zu lassen. Stattdessen könnte jedoch auch mit einem COA gearbeitet werden, was übersichtlicher und anpassungsfähiger wäre. Die Funktionsweise von ''append'' ist identisch mit ''postCObject''. 10 = TEXT 10 { value = Sie sind hier: stdWrap.append = HMENU stdWrap.append { special = rootline special.range = -1 1 = TMENU 1.NO = 1 } } # Ausgabe: Aktuelle Seite: Seitentitel ---- ==== wrap3 ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. ''.splitChar'' möglich. ---- ==== orderedStdWrap ==== ab TYPO3 4.7\\ **Datentyp:** nummerierte Liste mit stdWrap Ermöglicht das einfache Festlegen der Reihenfolge, in der stdWrap-Funktionen abgearbeitet werden. 10 = TEXT 10.value = eine 10.orderedStdWrap { 30.wrap = |. 10.wrap = ist | flexible 10.innerWrap =  |  20.wrap = Dies|Lösung 20.stdWrap.wrap =  |  } # Ausgabe: Dies ist eine flexible Lösung. ---- ==== outerWrap ==== **Datentyp:** [[typo3:about:datentypen#wrap|wrap]] / stdWrap Siehe stdWrap-Funktion [[typo3:about:functions:stdwrap#wrap|wrap]]. ---- ==== insertData ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Wenn aktiviert, wird der Inhalt des betreffenden cObjects nach [[typo3:about:datentypen&#gettext|getText]]-Abfragen geparst. Diese müssen mit geschwungenen Klammern notiert sein. 10 = TEXT 10.value = Sie sind auf Seite: {field:title} 10.insertData = 1 ---- ==== offsetWrap ==== **Datentyp:** ---- ==== postUserFunc ==== **Datentyp:** ---- ==== postUserFuncInt ==== **Datentyp:** ---- ==== prefixComment ==== **Datentyp:** [[typo3:about:datentypen#string|string]] Fügt vor und nach dem Inhalt einen HTML-Kommentar ein. Der erste Teil vor dem Pipe-Symbol bestimmt die Anzahl der Tabulatoren, um die der Kommentar eingerückt wird. Der zweite Teil bestimmt den Inhalt des Kommentars. Dieser wird automatisch nach [[typo3:about:datentypen#gettext|getText]]-Abfragen geparst. //[begin]// und //[end]// wird automatisch hinzugefügt. Folgendes Beispiel ist aus //css_styled_content// entnommen: **Setup:** tt_content.stdWrap.prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType} **Ausgabe:** [...] ---- ==== editIcons ==== **Datentyp:** ---- ==== editPanel ==== **Datentyp:** ---- ==== cacheStore ==== ab TYPO3 4.7\\ **Datentyp:** ---- ==== stdWrapPostProcess ==== //hook: Schnittstelle für eigene Funktionen (Extension-Programmierung)// ---- ==== debug ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Zur Fehlersuche: Gibt den Inhalt mit htmlspecialchars() in einem //
    //-Element aus. So muss nicht erst der Quellcode geöffnet werden.
    
    ----
    
    ==== debugFunc ====
    
    **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] + //2//
    
    Zur Fehlersuche: Ähnlich wie ''debug''. Der Inhalt wird jedoch am Anfang der Webseite ausgegeben, __zusätzlich__ zur normalen Ausgabe des betroffenen Elements. Mit dem boolean-Wert **//1//** erfolgt die Ausgabe der einzelnen Werte innerhalb von Pipe-Symbolen. Mit dem Wert **//2//** werden die Werte in einer Tabelle ausgegeben.
    
    
    10 = TEXT
    10.value = eins,zwei,drei
    10.split {
      token = ,
      cObjNum = 1
      1.current = 1
      1.wrap = 

    |

    1.debugFunc = 1 } Ausgabe: |

    eins

    ||

    zwei

    ||

    drei

    |
    ---- ==== debugData ==== **Datentyp:** [[typo3:about:datentypen#boolean|boolean]] Zur Fehlersuche: Liefert den gesamten aktuellen Inhalt aus //%%$cObj->data%%// in Tabellenform. Bei mehreren [[typo3:about:functions:current|current]]-Werten werden entsprechend viele Tabellen ausgegeben. ---- ---- ---- ===== Beispiele ===== ==== Reihenfolge im stdWrap ==== Die folgenden TypoScript-Funktionen sind entsprechend ihrer Reihenfolge im stdWrap notiert. Zuerst wird ein Wert inkl. HTML-Tags erzeugt. Anschließend wird mit ''stdWrap.wrap'' ein //div//-Tag hinzugefügt (die erste Wrap-Funktion käme in stdWrap erst nach stripHtml, was sinnvoll ist - daher der rekursive Aufruf). Mit ''stripHtml = 1'' werden alle HTML-Tags entfernt, auch die nachträglich hinzugefügten! Das letzte ''wrap'' fügt dem Wert dann ein neues HMTL-Tag hinzu. 10 = TEXT 10.value =

    Überschrift

    # Ausgabe: wie unter 'value' angegeben 10.stdWrap.wrap =
    |
    # Ausgabe:

    Überschrift

    10.stripHtml = 1 # Ausgabe: Überschrift 10.wrap =

    |

    # Ausgabe:

    Überschrift

    ==== Template auswählen abhängig von Spalteninhalt ==== Wenn in der rechten Spalte Inhalt eingefügt wurde, verwendet TYPO3 automatisch das passende Template. lib.template = COA lib.template { 10 = COA 10 { # Inhalt vorhanden -> numRows = 1 -> isTrue if.isTrue.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/templates/main-template-2column.html } } 20 = COA 20 { # kein Inhalt -> numRows = 0 -> isFalse if.isFalse.numRows < styles.content.getRight 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/templates/main-template.html } } }