config.language = de
10 = TEXT
10 {
value = Welcome!
lang.de = Willkommen!
}
----
==== data ====
**Datentyp:** [[typo3:about:datentypengettext|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:datentypenstring|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:datentypenstring|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:datentypenstring|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
# 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 ====
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
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 ====
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 ====
# Gravatar verwendet zur Anzeige des Bildes den Hash der E-Mail-Adresse:
10 = TEXT
10 {
value = test@example.org
hash = md5
wrap =
# Ergebnis:
}
----
==== 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 ====
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:datentypeninteger|integer]] %%|%% [[typo3:about:datentypenstring|string]] %%|%% [[typo3:about:datentypenboolean|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:datentypeninteger|integer]] %%|%% [[typo3:about:datentypenstring|string]] %%|%% [[typo3:about:datentypenboolean|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 **//ö//**.
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:datentypenstring|string]] / stdWrap
Konvertiert alle Zeilenumbrüche im Wert in das HTML-Element ''
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: - Inhalt
----
==== 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 ====
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:datentypengettext|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:datentypengettext|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
}
}
}