stdWrap
stdWrap
setContentToCurrent
Typ: Boolean
Default: 0
Weiterführende Informationen und Beispiele
Erlaubt es, dass der vom Elternelement ankommenden Inhalt mit dem Inhalt aus der value-Eigenschaft des aktuellen Objekts ersetzt werden darf.
setCurrent
Typ: string / stdWrap
Default:
Weiterführende Informationen und Beispiele
Ersetzt den vom Elternelement ankommenden Inhalt mit dem Inhalt aus setCurrent.
lang
Typ: Array of language keys
Default:
Bei mehrsprachigen Webseiten könnt Ihr mit dieser Eigenschaft Texte für die jeweilig ausgewählte Sprache erstellen. Es wird dann nicht grundsätzlich der Wert aus der value-Eigenschaft zurückgegeben.
config.language = de
page.10 = TEXT
page.10.value = I am a Berliner
page.10.lang.de = Ich bin ein Berliner
In diesem Beispiel wird nun "Ich bin ein Berliner" anstatt von "I am a Berliner" ausgegeben.
data
Typ: getText
Default:
Weiterführende Informationen und Beispiele
Die data-Eigenschaft ist aus meinem Gesichtspunkt immer noch die mächtigste Eigenschaft des stdWrap-Objektes. Mit getText könnt Ihr auf die Datenbank zugreifen, auf den aktuellen Datensatz, auf den Titel des Elternelementes und/oder auf die register zugreifen.
field
Typ: fieldname
Default:
Diese Eigenschaft greift auf die Spaltennamen der aktuellen Tabelle zu. Soll heißen: Wenn ich field im Haupttemplate verwende, dann greife ich mit field auf die pages-Tabelle zu. Benutze ich fields innerhalb einer Extension, dann erhalte ich Zugriff auf die Spalten der tt_content-Tabelle. Interessant wird es im Bereich TemplaVoila. Denn hier greife ich mit field auf die Felder zu, die ich per TV angelegt habe (XML).
current
Typ: Boolean
Default: 0
Weiterführende Informationen und Beispiele
Per default können wir auf die zur Verfügung gestellten Daten des Elternobjektes zugreifen. Wenn das aktuelle Objekt aber eigene Daten mitbringt, die verwendet werden sollen, dann muss diese Eigenschaft auf 1 geschaltet werden.
cObject
Typ: cObject
Default:
10 = TEXT
10.value = Hallo zusammen
10.cObject = TEXT
10.cObject.value = Wie geht's Euch?
Sehr viele Eigenschaften aus stdWrap überschreiben die value-Eigenschaft. So auch cObject. Aus diesem Grund steht hier nicht wie vielleicht erwartet: "Hallo zusammenWie geht's Euch?", sondern nur "Wie geht's Euch". Als cObject können alle Contentobjekte wie TEXT, IMAGE, TEMPLATE, COA und die Anderen angegeben werden.
numRows
Typ: numRows
Default:
10 = TEXT
10.value = Ich bin nur so da
10.numRows {
table = pages
select {
where = title LIKE '%e%'
pidInList = 5
recursive = 10
}
}
Wie in den anderen Beispielen auch ersetzt die Eigenschaft numRows den Wert aus value vollständig. numRows gibt die Anzahl der gefundenen Datensätze eines SQL-Strings wieder. Hier lasse ich mir die Unterseiten der Seite 5 recursiv bis zur 10ten Ebene auflisten, die ein "e" im Seitennamen beinhalten.
filelist
Typ: dir / stdWrap
Default:
10 = TEXT
10.filelist = fileadmin/templates/design/|js,html|ext|r|1
Diese Eigenschaft kann per default nur auf das Verzeichnis "fileadmin/" zugreifen. Soll der Zugriff auf ein anderes Verzeichnis ermöglicht werden, müsst Ihr die Eigenschaft lockFilePath im config-Array setzen:
config.lockFilePath = t3lib/
Ihr könnt mit dieser Eigenschaft immer nur EIN Verzeichnis angeben. Eine kommaseparierte Liste ist nicht möglich.
Das Beispiel oben greift auf das gewählte Verzeichnis zu und listet uns nur die Dateien mit den Endungen js und html auf. Diese Dateien sollen nun nach Ihren Erweiterungen (ext) umgekehrt (r) sortiert werden. js-Dateien werden also vor den html-Dateien angezeigt. Die 1 gibt an, dass nicht nur die Dateinamen, sondern die Dateinamen mit Ihrem absoluten Pfad angezeigt werden sollen.
preUserFunc
Im Maintemplate:
includeLibs = fileadmin/templates/class.testfunc.php
Im Maintemplate oder innerhalb einer Extension:
10 = TEXT
10.value = Hallo
10.preUserFunc = user_testfunc->wrapText
10.preUserFunc.wrap = ###
Inhalt der class.user_testfunc.php:
<?php
class user_testfunc {
function wrapText($text, $conf) {
return $conf['wrap'].$text.$conf['wrap'];
}
}
?>
Das Ergebnis im Frontend ist: ###Hallo###
Dieses Beispiel zeigt, wie der aktuelle Inhalt von 10 zu der Funktion wrapText innerhalb der Klasse user_testfunc geschickt wird. Außerdem zeigt das Beispiel, wie Ihr Variablen an die Funktion übergeben könnt.
Während die vorigen Eigenschaften und Funktionen nur dafür da waren, um einen Inhalt für dieses Contentelement zu bestimmen ist preUserFunc nun die erste Funktion, die den Inhalt auch bearbeiten/verändern darf. Deshalb auch der Name preUserFunc.
override
Typ: string / stdWrap
Default:
10 = TEXT
10.value = Hallo
10.override.field = header
Ein schönes kleines Beispiel. 10 besitzt schon von Anfang an einen Wert Dank der Eigenschaft value. Aber wie wir in vielen vorigen Beispielen schon gelernt haben, haben viele Eigenschaften unser value einfach überschrieben. Anders ist hier override. Diese Eigenschaft überschreibt den Wert von value nur dann, wenn override auch Daten zurückliefert. Wenn override leer bleibt oder 0 ist, dann wird der Wert von value wieder ausgegeben.
In unserem Beispiel heißt das: Wenn in der Spalte header des aktuellen Datensatzes ein Wert steht, dann wird value überschrieben. Ist das Feld header leer wird der Wert aus value auf der Webseite präsentiert.
preIfEmptyListNum
Typ: int
Default:
Weitere Informationen und Beispiele
10 = TEXT
10.value = Wert1,Wert2,Wert3,Wert4
10.listNum =
10.preIfEmptyListNum = 1
Wie listNum arbeitet seht Ihr weiter unten. Warum auch immer listNum mal leer sein sollte...na vielleicht gibt es ja auch Programmierer, die in diesem Bereich mit Variablen arbeitet, dann kann es passieren, das die Eigenschaft listNum leer bleibt. Genau für diesen Fall greift preIfEmptyListNum ein und schlägt einen Defaultwert für listNum vor. In unserem Beispiel heißt das: Wenn listNum leer ist, dann hole Dir den Wert mit der ID 1...also "Wert2".
ifEmpty
Typ: string / stdWrap
Default:
10 = COA
10.10 = TEXT
10.10.value = 0
10.10.ifEmpty = Kein Inhalt
10.20 = TEXT
10.20.value =
10.20.ifEmpty = Kein Inhalt
Wenn der Inhalt leer bzw. false (0) zurückgibt, dann wird der Text aus ifEmpty zurückgegeben.
ifBlank
Typ: string /stdWrap
Default:
10 = COA
10.10 = TEXT
10.10.value = 0
10.10.ifBlank = Kein Inhalt
10.20 = TEXT
10.20.value =
10.20.ifBlank = Kein Inhalt
Hier das gleiche Beispiel wie bei ifEmpty. Allerdings wird hier mit Hilfe der PHP Funktion strlen() überprüft, ob Werte enthalten sind. Im Gegensatz zu ifEmpty erhalten wir Folgendes im Frontend:
0KeinText
listNum
Typ: int
Default:
Weitere Informationen und Beispiele
10 = TEXT
10.value = Wert1,Wert2,Wert3,Wert4
10.listNum = 2
listNum splittet eine kommaseparierte Liste in seine Einzelteile auf und gibt den Wert wieder, der in listNum angegeben wurde. Wir haben in unserem Beispiel 4 Werte, die mit Komme getrennt sind. Gezählt wird beginnend mit 0. Heißt: listNum = 2 holt sich den dritten Wert. "Wert3" ist also der neue Inhalt unseres Contentelementes.
trim
Typ: Boolean
Default: 0
10 = TEXT
10.data = field:header
10.trim = 1
Trim löscht einfach alle Leerzeichen vor und hinter einem Wert. Falls in unserem Beispiel also ein paar Leerzeichen zu viel in der Datenbank gespeichert wurden, so sind sie nun weg.
stdWrap
Typ: stdWrap
Default:
10 = TEXT
10.data = field:header
10.wrap = ###|###
10.stdWrap.wrap = ***|***
Mit stdWrap kann ich rekursiv nochmal auf alle Funktionen von stdWrap zugreifen. Ich denke sowas wird nur in komplexeren Scripten benötigt. Hier aber trotzdem ein sehr vereinfachtes Beispiel. Dazu sei gesagt, das der aktuelle Inhalt erst mit den Eigenschaften aus stdWrap und danach erst mit den stdWrap-Eigenschaften aus TEXT verarbeitet wird. So kommt es, dass wir folgendes Ergebnis zu Gesicht bekommen:
###***sfjquery***###
required
Typ: Boolean
Default: 0
Zu required müsst Ihr wissen, dass alle hier gelisteten Eigenschaften und Funktionen genau in dieser Reihenfolge abgearbeitet werden. Alle vorigen Funktionen waren dazu da, um für das aktuelle Contentelement einen Inhalt zu bestimmen. Nehmen wir mal folgendes Beispiel:
10 = TEXT
10.wrap = ###|###
Dieses Element besitzt keinen Inhalt. Trotzdem wird im Frontend ###### angezeigt. Nun das gleiche Beispiel mit required:
10 = TEXT
10.wrap = ###|###
10.required = 1
Nun wird im Frontend nichts mehr angezeigt! Mit required geben wir also an, das unser Inhaltselement AUF JEDEN FALL einen Inhalt haben MUSS, damit alle nun folgenden Funktionen und Eigenschaften (wie z.B. wrap, intval, date, ...) den Inhalt weiter verarbeiten können.
Ist required = 1 und der Inhalt leer, dann werden alle nachfolgenden Funktionen und Eigenschaften umgangen und der Inhalt wird sofort auf '' gesetzt.
if
Typ: if
Default:
Weiterführende Informationen und Beispiele
10 = TEXT
10.value = Hallo zusammen
10.if.isTrue.data = field:header
Das PHP-Script im Hintergrund überprüft, of die Eigenschaft if verwendet wurde und ob die angegebene Bedingung TRUE zurück liefert. Wenn JA, dann werden alle noch folgenden stdWrap-Eigenschaften und Funktionen durchgeführt und der bearbeitete value wird auf der Webseite angezeigt. Wenn NEIN, dann wird der Inhalt auf '' gesetzt und alle noch folgenden stdWrap-Eigenschaften werden nicht mehr durchgeführt.
In unserem Beispiel wird "Hallo zusammen" nur dann ausgegeben, wenn in der Spalte "header" des aktuellen Datensatzen ein Wert hinterlegt wurde.
fieldRequired
Typ: string
Default:
10 = TEXT
10.value = Hallo zusammen
10.fieldRequired = header
Dieses Beispiel ist im Prinzip das Gleiche wie oben bei if. Nur wenn in dem Feld "header" des aktuellen Datensatzes etwas steht, dann wird der Text "Hallo zusammen" wiedergegeben. Wenn nicht, dann wird die Verarbeitung der noch folgenden stdWrap-Eigenschaften abgebrochen und es wird sofort '' ausgegeben.
csConv
Typ: string
Default:
10 = TEXT
10.data = DB:tt_content:51:bodytext
10.csConv = utf-8
Wer diese Funktion wirklich braucht, der hat seine TYPO3-Installation ziemlich zerschossen. Ich hab ne Ewigkeit gebraucht um ein Beispiel zu finden.
Diese Funktion wird z.B. dann verwendet, wenn alle Daten in der Datenbank im UTF-8-Format abgespeichert wurden, aber das Frontend in einem völlig anderen Zeichensatz ausgegeben wird wie z.B. iso-8859-1.
csConv gibt an in welchem Format die Daten ankommen. Diese Daten werden dann in das Format, welchen im INSTALL_TOOL unter forceCharset angegeben wurde konvertiert. Wenn dort nichts hinterlegt wurde, dann wird der Standardcharset iso-8859-1 verwendet.
parseFunc
Typ: parseFunc
Default:
Weitere Informationen und Beispiele
10 = TEXT
10.value = Ich bin ein brauner Bär
10.parseFunc {
short.brauner = blauer
}
Mit dieser Funktion könnt Ihr den Inhalt bearbeiten. Wie in meinem Beispiel habe ich einen lokalen Marker (short) angelegt mit dem Namen "brauner". Immer wenn jetzt irgendwo im Text das Wort "brauner" vorkommt, wird dieses Wort durch "blauer" ersetzt. ParseFunc bietet aber noch eine ganze Menge mehr an Funktionen als dieses "short"...
HTMLparser
Typ: Boolean / HTMLparser
Default:
Weitere Infomationen und Beispiele
10 = TEXT
10.value = <table><tr><td>Ich bin ein <b>fetter</b> und <i>kursiver</i> Text</td></tr></table>
10.HTMLparser = 1
10.HTMLparser {
allowTags = b
}
Der HTMLparser überprüft die HTML-Tags im aktuellen Inhalt und kann diese anhand von Eigenschaften komplett verbieten, um weitere Attribute erweitern und / oder auch verändern.
Damit die Verarbeitung durch den HTMLparser überhaupt funktioniert, MUSS dieser mit HTMLparser=1 zuerst aktiviert werden. In meinem Beispiel hier habe ich einen Inhalt mit 5 verschiedenen HTML-Tag. Ich erlaube aber nur den b-Tag. Das Ergebnis schaut demnach so aus:
Ich bin ein fetter und kursiver Text
split
Typ: split
Default:
Weitere Informationen und Beispiele
page.10 = TEXT
page.10.value = grün, grün, blau, gelb, rot, grün
page.10.split {
token = ,
token.noTrimWrap = || |
cObjNum = 1
1.current = 1
1.wrap = <b>|</b><br />
}
Split arbeitet nach dem gleichen Prinzip der PHP-Funktion explode. So wird der Inhalt eines Contentelementes anhand von einem Zeichen wir dem Komma oder auch einem Wort in Einzelteile zerlegt, die dann mit cObjNum entsprechend weiter verarbeitet werden können.
In diesem Beispiel hier werden die Farben anhand einem Komma getrennt. Dann wird jede Farbe fett dargestellt und mit einem Zeilenumbruch versehen.
prioriCalc
Typ: Boolean
Default:
10 = TEXT
10.value = 6 + 12 * 12
10.prioriCalc = 1
prioriCalc interpretiert den aktuellen Inhalt als eine Berechnung. Dabei wird sogar Punktrechnung vor Strichrechnung berücksichtigt. Auch Klammersetzungen sind erlaubt. Folgende Operatoren können interpretiert werden: +-*/%^.
Hier ein paar Beispiele aus der TYPO3-Doku:
100%7 = 2
-5*-4 = 20
+6^2 = 36
6 ^(1+1) = 36
-5*-4+6^2-100%7 = 54
-5 * (-4+6) ^ 2 - 100%7 = 98
-5 * ((-4+6) ^ 2) - 100%7 = -22
Ein paar Bedingungen müsst Ihr berücksichtigen: Bei Dezimalzahlen wird der Punkt als Trenner verwendet. prioriCalc enthält keine Fehlerabfangroutinen. Wenn Ihr also in diese Berechnung Text einfügt erhaltet Ihr einfach einen Wert 0 oder 1. Auch Berechnungen wie Division durch 0 werden nicht beanstandet...da müsst Ihr schon selbst drauf achten.
char
Typ: int
Default:
10 = TEXT
10.value = Ich spiele keine Rolle
10.char = 69
Die char-Eigenschaft erwartet einen integer Wert, der dann mit folgendem PHP-Konstrukt in einen Buchstaben umgewandelt wird:
chr(intval($conf['char']))
In unserem Beispiel wird einfach nur ein "E" ausgegeben. Einen tiefergehenden Sinn habe ich in dieser Funktion nicht finden können.
intval
Typ: Boolean
Default:
10 = TEXT
10.value = 12: Ich werde in eine Zahl umgewandelt
10.intval = 1
intval überprüft den aktuellen Inhalt, ob er eine Zahl ist. Wenn nicht, dann wird 0 zurückgeliefert. In unserem Beispiel haben wir aber einen Sonderfall: Denn wenn eine Zahl am Anfang einen Textes steht, dann wird diese ausgelesen und zurückgegeben. Deshalb erscheint hier die 12 als Ausgabe.
Diese Funktion wird im Bereich von Tabellen-Joins sehr interessant. So kann sichergestellt werden, dass Spalten wie pid und uid Zahlen (ohne irgendwelchen Müll) zur Weiterverarbeitung erhalten.
date
Typ: date-conf
Default:
10 = TEXT
10.data = field:crdate
10.date = d.m.Y
Weitere Informationen zur PHP-Funktion date und den zur Verfügung stehenden Optionen.
Wenn date einen Wert hat, wird der aktuelle Inhalt als Timestamp interpretiert. Ein Timestamp schaut zum Beispiel so aus: 1266404014. In unserem Beispiel greife ich mit data auf das Feld "crdate" des aktuellen Datensatzes (hier: tt_content) zu und wandel den Timestamp in ein "lesbares" Format um (01.03.2010)
Wenn das Contentelement keinen gültigen Timestamp enthält, dann erhaltet Ihr eine leere Ausgabe im Frontend.
strftime
Typ: strftime-date
Default:
10 = TEXT
10.data = field:crdate
10.date = d.m.Y
10.wrap = |<br />
20 = TEXT
20.data = field:crdate
20.strftime = %d.%m.%Y
20.wrap = |<br />
30 = TEXT
30.data = field:crdate
30.date = d Tag des Monats m aus dem Jahr Y
30.wrap = |<br />
40 = TEXT
40.data = field:crdate
40.strftime = %d Tag des Monats %m aus dem Jahr %Y
Weitere Informationen zu strftime und seinen Optionen
Ich habe hier extra 4 Beispiele genommen, weil sonst nicht klar wird wo der Unterschied zwischen date und strftime ist. Während bei den ersten beiden Beispielen noch die gleichen Ergebnisse wieder gegeben werden, werden bei den unteren beiden Beispielen schon gewaltige Unterschiede deutlich. strftime nimmt uns also die Arbeit ab in date sämtliche Buchstaben, die wir als Text verwenden wollen mit einem Backslash (\) zu markieren. Hier das letzte Beispiel, wie es mit date umzusetzen wäre:
10 = TEXT
10.data = field:crdate
10.date = d \T\a\g \d\e\s \M\o\n\a\t\s m \a\u\s \d\e\m \J\a\h\r Y
Schaut geil aus, oder?
strftime beinhaltet noch eine weitere Eigenschaft:
10 = TEXT
10.data = field:crdate
10.strftime = d.m.Y
10.strftime.charset = utf-8
Den Grund für diese Eigenschaft könnt Ihr der stdWrap-Eigenschaft csConv entnehmen.
age
Typ: boolean / String
Default:
10 = TEXT
10.data = page:tstamp
10.age = 1
20 = TEXT
20.data = page:tstamp
20.age = Minuten | Stunden | Tage | Jahre
Wenn age auf 1 gesetzt wird, dann interpretiert es den Inhalt als Timestamp und zieht diesen Wert von dem Timestamp der aktuellen Uhrzeit ab. Es wird also das Alter berechnet. In der Standardkonfiguration werden die Alterswerte in * min, * hrs, *days ODER * yrs ausgegeben. Ich habe "oder" extra großgeschrieben, weil diese Funktion immer nur EINEN dieser Werte zurückliefern kann.
Wenn Euch diese englischen Kürzel nicht gefallen, könnt Ihr die Werte auch selbst definieren. Siehe 2tes Beispiel.
case
Typ: case
Default:
10 = TEXT
10.value = Hallo alle miteinander
10.case = upper
10.wrap = |<br />
20 = TEXT
20.value = Hallo alle miteinander
20.case = lower
Mit case kann bestimmt werden, ob der enthaltene Inhalt komplett groß- oder kleingeschrieben werden soll. Ergebnis:
HALLO ALLE MITEINANDER
hallo alle miteinander
bytes
Typ: boolean
Default: 0
10 = TEXT
10.value = 1024000
10.bytes = 1
10.wrap = |<br />
20 = TEXT
20.value = 9600
20.bytes = 1
20.bytes.labels = Bytes | KiloBytes | MegaBytes | GigaBytes
bytes interpretiert den enthaltenen Inhalt als bytes und konvertiert diese in eine entsprechende Größe wie KiloBytes, MegaBytes und GigaBytes um. Ist ein Wert also kleiner als ein MegaByte, dann wird dieser nicht als 0.05 MB angezeigt, sondern der Wert in KiloByte ausgegeben.
In unserem Beispiel erhalten wir diese Ausgabe:
1 MB
9.4 KiloBytes
Denn mit der Eigenschaft labels können eigene Labels für die Größen angegeben werden.
substring
Typ: Part1, Part2
Default:
10 = TEXT
10.value = Nimm Dir was Du brauchst!
10.substring = 16, 8
Die Funktion substring ist ähnlich der PHP-Funktion substr von PHP. Ich sage deshalb ähnlich, weil TYPO3 hier derzeit 8 verschiedene substr-Funktionen anbietet. Da bekommt der User zwar nichts von mit, aber je nach Zeichensatz/Codierung/Einstellungen im INSTALL_TOOL werden verschiedenen substr-Funktionen aufgerufen, die genau für diese Einstellung programmiert wurden. So gibt es zum Beispiel ein substr, das nur für UTF-8-Kodierte Texte da ist. Weitere Informationen dazu findet Ihr in der Datei class.t3lib_cs.php->substr.
Unabhängig davon was TYPO3 im Hintergrund macht, kann man sagen, das die Funktion wie folgt umgesetzt wird:
$content = substr($content, [Part1], [Part2]);
Das Ergebnis unserer Scriptes oben gibt also einfach nur das Wort "brauchst" im Frontend aus.
removeBadHTML
Typ: Boolean
Default:
10 = TEXT
10.value = <script language="text/javascript">Ich bin ein böses Script</script>
10.removeBadHTML = 1
20 = TEXT
20.value = <form action="/?id=1" method="post"><div onclick="boeserCode();">Klick mich </div></form>
20.removeBadHTML = 1
Laut den Kommentaren im Quellcode selbst ist diese Funktion eher für die Überprüfung von Benutzereingaben zuständig. Damit User nicht in irgendeine Eingabemaske böswilligen Code reinbasteln, kann man Diesen vorher mit dieser Funktion durchleuchten und alle Tags mit denen böswilliger Code implementiert werden kann rauslöschen.
So bleibt von dem Value aus 10 = TEXT überhaupt nichts mehr übrig und auch das Value aus 20 = TEXT wurde gekürzt. Es bleibt also nur noch dieses Fragment im Quellcode übrig:
Klick mich </div></form>
cropHTML
Typ: string
Default:
10 = TEXT
10.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
10.cropHTML = 30
20 = TEXT
20.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
20.cropHTML = 16
30 = TEXT
30.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
30.cropHTML = -10
40 = TEXT
40.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
40.cropHTML = 16|...
50 = TEXT
50.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
50.cropHTML = 16|*+#|1
crob heißt soviel wie abschneiden und genau das macht diese Funktion hier mit der Berücksichtigung NICHT innerhalb von HTML-Tags rumzuschnibbeln.
Während man beim ersten Beispiel denkt, dass die Funktion in der Nähe des color-Wortes einen Schnitt macht, wird trotzdem der vollständige Text im Frontend angezeigt. Das liegt daran, das der reine Text nur 23 Zeichen lang ist.
Das zweite Beispiel macht es besser. Der reine Text wird nach 16 Zeichen abgeschnitten: "Ich bin ein blau"
Im dritten Beispiel verwende ich eine negative Zahl (-10) und kann damit den Text vom Ende an abschneiden: "lauer Text"
Das 4te Beispiel ist ein Text der hinten bzw. vorne angefügt wird: "Ich bin ein blau..." bzw. "...lauer Text"
Im fünften Beispiel habe ich die Punkte mal durch völlig andere Zeichen ersetzt und gebe mit dem dritten Parameter an, dass erst beim nächsten Leerzeichen abgeschnitten werden soll: "Ich bin ein blauer*+#"
stripHtml
Typ: Boolean
Default:
10 = TEXT
10.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
10.stripHtml = 1
Diese Funktion entfernt alle Tags in einem String mit Hilfe der PHP-Funktion strip_tags($content). Von unserem value im Beispiel bleibt also nur noch das übrig:
Ich bin ein blauer Text
crop
Typ: string
Default:
10 = TEXT
10.value = Ich bin ein einfacher Text
10.crop = 10|...
20 = TEXT
20.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
20.crop = 32|...
30 = TEXT
30.value = <div>Ich bin ein <span style="color: blue;">blauer</span> Text</div>
30.crop = -10|...|1
crop arbeitet wie cropHTML. Allerdings kann crop die HTML-Tags nicht berücksichtigen und sollte somit nur für reinen Text verwendet werden.
Beispiel 1: "ich bin ei..."
Beispiel 2: Eine absolute Katastrophe, denn nun wird innerhalb des HTML-Tags einfach abgeschnitten. Das zweite Anführungszeichen ist nicht mehr vorhanden und die komplette Webseite kann von jetzt auf gleich völlig schräg aussehen. Ergebnis: <div>Ich bin ein <span style="co...
Beispiel 3: ...Text</div>
rawUrlEncode
Typ: Boolean
Default:
10 = COA
10.10 = TEXT
10.10.value = Ich bin ein <a href="index.php?id=2&pfad=
10.20 = TEXT
10.20.value = media/pics/bild1.png
10.20.rawUrlEncode = 1
10.30 = TEXT
10.30.value = ">Link</a>
Zu aller erst dienst dieses Beispiel nur als ähm Beispiel :-) Denn diese Art der Linkgestaltung gehört verboten. Für sowas hat TYPO3 viel besserer Funktionen wie typolink.
In unserem Beispiel möchte ich der GET-Variable den Pfad media/pics/bild1.png übergeben. Da aber die Schrägstriche von Browsern schnell als Trenner für tiefere Verzeichnisstrukturen auf dem Server interpretiert werden, kann man solche Pfade mit Hilfe der PHP-Funktion rawurlencode maskieren.
Als Ergebnis erhalten wir einen Link mit dem wirklich jeder Browser klarkommt:
Ich bin ein <a href="index.php?id=2&pfad=media%2Fpics%2Fbild1.png">Link</a>
Typ: Boolean
Default: 0
10 = TEXT
10.value = <div>Müller & Breuer</div>
10.htmlSpecialChars = 1
20 = TEXT
20.value = <div>Müller & Breuer</div>
20.stdWrap.htmlSpecialChars = 1
20.htmlSpecialChars = 1
30 = TEXT
30.value = <div>Müller & Breuer</div>
30.stdWrap.htmlSpecialChars = 1
30.htmlSpecialChars = 1
30.htmlSpecialChars.preserveEntities = 1
Damit HTML-Tags nicht ausgeführt werden und auf dem Frontend angezeigt werden gibt es die Funktion htmlspecialchars.
Beispiel 1: Wie Ihr sehr gut erkennen könnt werden nicht nur die eckigen Klammern sondern auch das &-Zeichen maskiert: <div>Müller & Breuer</div>
Beispiel 2: Je größer die Scripte und TS werden, desto schneller kann es mal vorkommen, dass ein Inhalt auch 2fach maskiert wird: &lt;div&gt;Müller &amp; Breuer&lt;/div&gt;
Beispiel 3: Im Beispiel 2 haben wir gesehen, dass das &-Zeichen doppelt maskiert wurde. Um diesen Fehler wieder zu bereinigen könnt Ihr noch die Unter-Eigenschaft preserveEntities aktivieren, um wieder eine sauber Ausgabe zu erhalten wie in Beispiel 1: <div>Müller & Breuer</div&g;
doubleBrTag
Typ: String
Default:
10 = TEXT
10.value (
<div>Ein Absatz
Noch ein Absatz
und noch ein Absatz</div>
)
10.doubleBrTag = ###TEST###
20 < 10
20.doubleBrTag = <br />
30 < 10
30.doubleBrTag = </div><div>
doubleBrTag sucht im Inhalt nach mindestens 2 Zeilenumbrüchen hintereinander und bietet Euch an diese Zeilenumbrüche durch eigenen Text zu ersetzen.
Beispiel 1: Macht wenig Sinn aber es zeigt die grundsätzliche Funktionsweise
<div>Ein Absatz###TEST### Noch ein Absatz###TEST### und noch ein Absatz</div>
Beispiel 2:
<div>Ein Absatz<br /> Noch ein Absatz<br /> und noch ein Absatz</div>
Beispiel 3:
<div>Ein Absatz</div><div> Noch ein Absatz</div><div> und noch ein Absatz</div>
br
Typ = Boolean
Default:
10 = TEXT
10.value (
<div>Ein Absatz
Noch ein Absatz
und noch ein Absatz</div>
)
10.br = 1
Jeder Zeilenumbruch wird mit Hilfe der PHP-Funktion nl2br in <br /> umgewandelt:
Ergebnis:
<div>Ein Absatz<br />
<br />
Noch ein Absatz<br />
<br />
und noch ein Absatz</div>
brTag
Typ: Boolean
Default:
10 = TEXT
10.value (
<div>Ein Absatz
Noch ein Absatz
und noch ein Absatz</div>
)
10.brTag = </div><div>
brTag ersetzt alle Zeilenumbrüche (CHR(10)) mit dem Inhalt von brTag. So wird aus diesem Inhalt folgende Ausgabe:
<div>Ein Absatz</div><div> </div><div> Noch ein Absatz</div><div> </div><div> und noch ein Absatz</div>
encapsLines
Typ: encapsLines
Default:
10 = TEXT
10.value (
<div>Ein Absatz</div>
<div>Noch ein Absatz</div>
<b>und noch ein Absatz</b>
)
10.encapsLines {
encapsTagList = div
remapTag.DIV = P
wrapNonWrappedLines = <p>|</p>
innerStdWrap_all.ifEmpty =
}
encapseLines sucht im Inhalt nach Zeilenumbrüchen "CHR(10)" und bietet Euch dann an bestimmte Eigenschaften für alle Zeilen zu setzen. So findet encapsLines in unserem Beispiel die erste Zeile "<div>Ein Absatz</div>" und wandelt die vorhandenen div-Tags Dank remapTag in p-Tags um. Die leeren Zeilen werden Dank wrapNonWrappedLines mit <p>|</p> gefüllt. Da solche leeren Tags nicht XHTML-kompatibel sind, gibt es noch die Eigenschaft innerStdWrap_all, die sich darum kümmert, leere Tags mit einem Inhalt wie zu füllen.
keywords
Typ: Boolean
Default:
10 = TEXT
10.value (
Apfel, Birne, Pfirsich; Banane
Kirche;Traube
Kirsche;Erdbeere
)
10.keywords = 1
keywords splittet einen Inhalt an Hand von Komma, Semikolon und einfachen Zeilenumbrüchen CHR(10) auf, löscht alle Leerzeichen vor und hinter einem jeden Teil (trim) und listet alle Teile sauber durch Komme getrennt hintereinander wieder auf. TYPO3 arbeitet sehr häufig mit kommaseparierten Listen. Falls also mal ein Liste etwas durcheinander gekommen sein sollte, dann ist das hier die richtige Funktion, um sie wieder aufzuräumen.
Ergebnis:
Apfel,Birne,Pfirsich,Banane,Kirche,Traube,Kirsche,Erdbeere
innerWrap
Typ: wrap / stdWrap
Default:
10 = TEXT
10.value = Ich werde ein fetter Text
10.innerWrap = <b>|</b>
10.wrap = <div>|</div>
innerWrap hat in erster Linie die gleiche Eigenschaft wie wrap. Allerdings kann innerWrap mit den Eigenschaften von stdWrap erweitert werden. innerWrap bedeutet eigentlich nichts anderes als, dass dieser Wrap noch VOR der Eigenschaft "wrap" ausgeführt wird. Deshalb erhalten wir auch folgendes Ergebnis im Frontend:
<div><b>Ich werde ein fetter Text</b></div>
Wie wir später noch lernen werden gibt es natürlich auch ein outerWrap, dass noch NACH der wrap-Eigenschaft ausgeführt wird.
innerWrap2
Typ: wrap / stdWrap
Default:
10 = TEXT
10.value = Ich werde ein Listeneintrag
10.innerWrap = <li>|</li>
10.innerWrap2 = <ul>|</ul>
10.wrap = <div>|</div>
Wir haben zig wraps in der stdWrap-Funktion. Warum hier ein weiteres innerWrap eingeführt wurde ist mir nicht ganz klar?! Auf jeden Fall haben wir hier mit innerWrap2 eine exakte Kopie von innerWrap. innerWrap2 wird NACH innerWrap ausgeführt. Wir erhalten also folgendes Ergebnis:
<div><ul><li>Ich werde ein Listeneintrag</li></ul></div>
fontTag
Typ: wrap
Default:
10 = TEXT
10.value = Ich bin ein fetter Satz
10.fontTag = <b>|</b>
und noch ein ganz banaler wrap. Er hätte auch innerWrap3 heißen können oder sowas.
Eine ganz persönliche Annahme: fontTag ist in der stdWrap-Doku nicht erklärt. Noch nicht mal ein Beispiel steht dort und selbst im Quellcode ist nichts besonderes zu finden. Ich vermute, dass dieser Tag damals eine Funktion beinhaltet hat, der diese font-Tags erzeugte und nun durch die Funktion textStyle ersetzt wurde. Denn hier steht in einem Kommentar auch noch mal das Wort fontTag.
Ergebnis: <b>Ich bin ein fetter Satz</b>
addParams
Typ: addParams
Default:
10 = HTML
10.value = <div>Ich bin ein <span>blaues</span> Wort</div>
10.value.addParams.style = color:blue
10.value.addParams._offset = 2
addParams fügt einem HTML-Tag einen weiteren Parameter hinzu. Welcher Tag den gewünschten Parameter erhalten soll gebt Ihr mit der Angabe von _offset an. 1 bedeutet erster Tag, 2 bedeutet 2ter Tag wie hier in meinem Beispiel (span). Diese _offset-Angaben können auch negative Werte enthalten. So würde ein _offset=-2 bedeuten, dass das vorletzte Tag diese zusätzlichen Parameter erhalten soll.
Ergebnis:
Ich bin ein blaues Wort
textStyle
Typ: textStyle
Default:
10 = TEXT
10.value = Ich werde in ein font-Tag gewrapped
10.textStyle.face.field = 1
Dieses Beispiel ist zwar richtig, aber es hat auf dem Frontend überhaupt keine Auswirkung. Ich hab den "Fehler" zwar gefunden, aber noch weiß ich nicht, ob es sich dabei wirklich um einen Fehler handelt, denn immerhin sind font-Tags outdated und sollen durch StyleSheets ersetzt werden. Evtl. liegt hier das Problem begraben und TYPO3 hat die Funktion einfach "unbrauchbar" gemacht.
tableStyle
Typ: tableStyle
Default:
10 = TEXT
10.value = <td>Spalte 1</td><td>Spalte 2</td>
10.tableStyle.border = 3
10.tableStyle.color.field = 1
tableStyle umschließt einen Content nur mit dem Table-Tag. Mehr nicht! Um die td und th-Tags müsst Ihr Euch schon selber kümmern. Im oberen Beispiel könnt Ihr zwar Angaben zu border, cellpadding und cellspacing machen, aber die Angaben über die Farbe klappe wie schon bei textStyle auch nicht.
Ergebnis:
<table border="3" cellspacing="0" cellpadding="0"><td>Spalte 1</td><td>Spalte 2</td></table>
filelink
Typ: filelink
Default:
10 = TEXT
10.value = headerblue.jpg
10.filelink {
path = uploads/media/
size = 1
size.wrap = <span style="padding-left: 10px; font-size: 10px;">|</span>
size.bytes = 1
}
filelink erzeugt direkte Links zu Dateien im TYPO3-Verzeichnis. filelink kopiert die Dateien also nicht erst nach uploads/irgendwas, sondern lässt die Dateien da wo sie sind und können so auch mehrfach verlinkt werden OHNE diese [Dateineme]_1-Dateien zu erzeugen.
Im oberen Beispiel habe ich neben dem Dateilink noch angegeben, dass die Dateigröße angezeigt werden soll. Damit sie nicht so dicht am Link klebt, habe ich mit dem wrap noch einen Abstand eingebaut und angegeben, dass die Größe in KB dargestellt werden soll.
Folgender Code wurde im HTML erzeugt:
<a href="uploads/media/headerblue.jpg" >headerblue.jpg</a><span style="padding-left: 10px; font-size: 10px;">78 K</span>
preCObject
Typ: cObject
Default:
10 = TEXT
10.value = headerblue.jpg
10.filelink {
path = uploads/media/
}
10.preCObject = TEXT
10.preCObject.value = Download:
Mit preCObject können wir unserem ContentElement ein weiteres CE voranstellen. In unserem Beispiel füge ich einfach ein weiteres TEXT-Objekt voran mit dem Text "Download:". Aber natürlich könnt Ihr auch ein Bild oder ein anderes ContentElement wählen.
Als Ausgabe erhalten wir "Download: " gefolgt von einem Dateiverweis
postCObject
Typ: cObject
Default:
10 = TEXT
10.value = headerblue.jpg
10.filelink {
path = uploads/media/
}
10.postCObject = TEXT
10.postCObject.value = <--: Coole Datei...unbedingt runterladen!!!
Genau das gleiche Prinzip wie bei preCObject. Nur das hier das ContentElement an unser aktuelles Element hinten dran gehangen wird.
wrapAlign
Typ: align / stdWrap
Default:
10 = TEXT
10.value = Setz mich an die rechte Seite
10.wrapAlign = right
wrapAlign erzeugt einen neuen DIV-Container mit unserem Inhalt und fügt dem DIV-Tag auch gleich ein StyleSheet hinzu, dass unseren Inhalt an die gewünschte Position setzt. Erlaubt ist right, left oder center.
Als Ergebnis im Quellcode erhalten wir:
<div style="text-align:right;">Setz mich an die rechte Seite</div>
typolink
Typ: typolink
Default:
10 = TEXT
10.value = Ich werde ein Link
10.typolink.target = _blank
10.typolink.parameter = 32
typolink ist das Allroundtool für Links. Hiermit können nicht nur Links zu Dateien erzeugt werden, sondern auch Links zu internen und extenen Seiten als auch Dateien und E-Mail-Adressen.
In unserem Beispiel erstelle ich einen Link zur internen Seite mit der ID 32 und habe angegeben, dass sich diese Seite in einem neuen Fenster öffnen soll.
TCAselectItem
Typ: Array
Default:
10 = TEXT
10.value = 1
10.TCAselectItem {
table = tx_sfstdwrap_select
field = selecttest
delimiter = ,
}
20 = TEXT
20.value = 3
20.TCAselectItem {
table = pages
field = doktype
delimiter = ,
}
TCAselectItem greift Dank der TCA auf die gewählte Tabelle zu und sucht nach dem angegebenen Feld. Dieses Feld MUSS vom Typ "select" sein und die Optionen dort MÜSSEN manuell eingetragen worden bzw. mit Hilfe des Arrays "items" erreichbar sein. Ob das bei Euch der Fall ist könnt Ihr nachprüfen über Konfiguration->Selectbox $TCA->Tabelle auswählen->Columns->Feld->Config->items.
Innerhalb dieser Items wird nun nach dem Key aus der Eigenschaft value gesucht und der Text diesen Arrayeintrages wird zurückgegeben. Ihr könnt auch mehrere values abfragen in dem Ihr die Wert mit Kommas trennt. Die Daten werden dann mit dem Wert in delimiter getrennt im Frontend ausgegeben.
Erschwerend kommt hinzu, dass die Funktion mit includeTCA arbeitet. Bei selbst programmierten Extensions mit dem kickstarter werden die Werte für columns nicht ausgelesen und stehen somit für diese Funktion nicht zur Verfügung.
Also: Entweder Ihr greift wie im 2ten Beispiel nur auf Systemtabellen zu und erhaltet als Ausgabe: "Link zu externer URL"
Oder Ihr müsst Eure Extension so umkonfigurieren, dass die column-Einträge aus der tca.php ausgeschnitten werden und in der ext_tables.php wieder eingefügt werden. So ist es auch mit den meisten Systemextensions der Fall. Diese wurde nicht mit der tca.php definiert, sondern mit der ext_tables.php. Kurz: Nur alle Arrays, die in der ext_tables definiert wurden, stehen auch nach einem includeTCA zur Verfügung.
Beispiel 1: Ich hab meine Extension entsprechend geändert und erhalte "Kirsche" als Ausgabe. Alle anderen erhalten einfach nur den Wert aus value wieder zurück.
Diese Problematik wurde auch hier schon besprochen:
space
Typ: space / stdWrap
Default:
10 = TEXT
10.value = Viel Platz oben und unten (clear.gif)
10.space = 20 | 20
20 = TEXT
20.value = Viel Platz oben und unten (div mit height)
20.space = 20 | 20
20.space.useDiv = 1
space kann über und unter einem Element zusätzlichen Platz schaffen. Die Angaben werden als Pixel interpretiert.
Beispiel 1 ist der Standard und fügt ein clear.gif ein, um den Abstand zu realisieren.
Beispiel 2 ist eine Möglichkeit, um den Abstand mit Hilfe eines div-Tags zu realisieren. Die Höhe wird dann über height: Pixelangabe realisiert.
spaceBefore
Typ: int / stdWrap
Default:
10 = TEXT
10.value = Viel Platz oben (clear.gif)
10.spaceBefore = 20
20 = TEXT
20.value = Viel Platz oben (div mit height)
20.spaceBefore = 20
20.space.useDiv = 1
spaceBefore fügt nur über dem Contentelement einen Zwischenraum wie hier im Beispiel von 20 Pixeln ein.
Beispiel 1 erzeugt den Abstand mit Hilfe von clear.gif währen Beispiel 2 mit einem Div arbeitet.
spaceAfter
Typ: int / stdWrap
Default:
10 = TEXT
10.value = Viel Platz unten (clear.gif)
10.spaceAfter = 20
20 = TEXT
20.value = Viel Platz unten (div mit height)
20.spaceAfter = 20
20.space.useDiv = 1
spaceAfter fügt nur unter dem Contentelement einen Zwischenraum wie hier im Beispiel von 20 Pixeln ein.
Beispiel 1 erzeugt den Abstand mit Hilfe von clear.gif währen Beispiel 2 mit einem Div arbeitet.
Bug: Wenn die aktuelle Zeile 12 Pixel größ ist, dann fügt das erste Beispiel nur einen Abstand von 8 Pixeln ein, weil hier das Bild hinter dem Contentelement eingefügt wird, anstatt erst mal ein <br /> zu machen.
wrap
Typ: wrap
Default:
10 = TEXT
10.value = Ich werde jetzt fett
10.wrap = <b>|</b>
wrap "ummantelt" den aktuellen Inhalt mit den Angaben die vor und hinter der Tilde "|" stehen. Als Ergebnis erhalten wir also ein
<b>Ich werde jetzt fett</b>
noTrimWrap
Typ: spezieller wrap
Default:
10 = TEXT
10.value = Hallo
20 = TEXT
20.value = zusammen
30 = TEXT
30.value = Hallo
30.noTrimWrap = || |
40 = TEXT
40.value = zusammen
Während 10 und 20 zusammen geklatscht werden und ein "Hallozusammen" ausgeben, gibt 30 und 40 zusammen ein "Hallo zusammen" aus. noTrimWrap "ummantelt" also den Inhalt wie auch schon bei wrap. Allerdings werden hier die Leerzeichen berücksichtigt. Damit das sauber funktioniert muss hier der Wrap mit | begonnen und auch wieder abgeschlossen werden. Nur die mittlere Tilde | wird mit dem aktuellen Inhalt ersetzt.
wrap2
Typ: wrap
Default:
10 = TEXT
10.value = Ich werde jetzt 2mal gewrapped
10.wrap = <b>|</b>
10.wrap2 = <i>|</i>
Ist genau das gleiche wie wrap. Einzigster Unterschied dieses wrap2 wird NACH wrap ausgeführt. Deshalb erhalten wie im Quellcode dieses Ergebnis:
<i><b>Ich werde jetzt 2mal gewrapped</b></i>
dataWrap
Typ: string mit getText
Default:
10 = TEXT
10.value = Ich werde noch hinter dem dataWrap angezeigt. Mich kann man aber auch weglassen
10.dataWrap = Seitenname: {LEVELTITLE:1}; Seiten-ID: {TSFE:id}
dataWrap ist eine extreme Erleichterung, um Inhalt mit Variablen aus dem TYPO3-System zu mischen. Ich weiß nicht seit wann, aber Ihr könnt auch mehrere Variablen im dataWrap definieren, wie hier im Beispiel. Ich meine die Angabe von mehreren Variablen im Text war damals noch nicht möglich. Naja...es geht jetzt auf jeden Fall. schick schick :-)
Alle Variablen sind vom Typ getText. Alle Angaben, die Ihr also in der data-Eigenschaft machen könnt haben auch hier Ihre Gültigkeit.
prepend
Ist genau das Gleiche wie preCObject. Mit dem einzigen Unterschied das prepend NACH preCObject ausgeführt wird.
append
Ist genau das Gleiche wie postCObject. Mit dem einzigen Unterschied das append NACH postCObject ausgeführt wird.
wrap3
Ist genau das Gleiche wie wrap. Mit dem einzigen Unterschied das wrap3 NACH wrap und wrap2 ausgeführt wird.
outerWrap
Typ: wrap / stdWrap
Default:
und noch ein Wrap mit stdWrap-Eigenschaften
insertData
Typ: Boolean
Default:
10 = TEXT
10.value = Seitenname: {LEVELTITLE:1}; Seiten-ID: {TSFE:id}
10.insertData = 1
20 = TEXT
20.dataWrap = Seitenname: {LEVELTITLE:1}; Seiten-ID: {TSFE:id}
Beide Beispiele machen exakt das Gleiche. Ein Text/Inhalt mit Variablen wird durchsucht und die Variablen werden dann in den enthaltenen Text eingefügt.
Auch hier gilt wieder: Alle Variablen aus getText sind erlaubt.
offsetWrap
Typ: x,y
Default:
10 = TEXT
10.value = versetzter Eintrag in einem Tabellenfeld
10.offsetWrap = 20,30
Mit offsetWrap wird der Inhalt in eine Tabelle gewrapped. Die Angaben zu x und y werden als Pixel interpretiert und geben an, wo in der Tabelle von oben link der Inhalt angezeigt werden soll. Das Resultat ist eine Tabelle mit 2 Spalten und 2 Zeilen. Die Zelle 1-1 spiegelt ein clear.gif mit den Maßen aus x und y wieder. Zellen 1-2 und 2-2 bleiben leer. Zelle 2-2 enthält dann unseren Inhalt.
Grobe Ausgabe im Quellcode:
<table>
<tr>
<td>clear.gif mit Maßen aus x, y</td>
<td>leer</td>
</tr>
<tr>
<td>leer</td>
<td>Inhalt</td>
</tr>
</table>
Mit Hilfe der Untereigenschaften tableParams und tdParams kann die Tabelle näher definiert werden (border, cellpadding, cellspacing).
postUserFunc
Ist genau das Gleiche wie preUserFunc. Mit dem einzigen Unterschied das postUserFunc NACH preUserFunc und all den Funktionen dazwischen ausgeführt wird.
postUserFuncInt
Scheint das Gleiche zu sein wie postUserFunc. Mit dem Unterschied, dass diese Funktion nicht gecached wird.
prefixComment
Typ: string
Default:
10 = TEXT
10.value = Ich bin ein kommentierter Inhalt
10.prefixComment = |Hier steht der Inhalt aus Seite {TSFE:id}
Dieses Beispiel ummantelt den kompletten Inhalt mit einem Kommentar davor und dahinter. Auch hier sind wieder alle Variablen aus getText vergügbar. Siehe hier:
<!-- Hier steht der Inhalt aus Seite 34 [begin] -->
Ich bin ein kommentierter Inhalt
<!-- Hier steht der Inhalt aus Seite 34 [end] -->
Dieses Beispiel erzeugt die gleiche Ausgabe, nur wird hier alles um 3 Tabs nach rechts eingerückt:
10 = TEXT
10.value = Ich bin ein kommentierter Inhalt
10.prefixComment = 3|Hier steht der Inhalt aus Seite {TSFE:id}
prefixComment funktioniert nur, wenn es im page-TS-config nicht deaktiviert wurde.
editIcons
Sobald ich diese Option setze kachelt mir meine komplette Seite mit einer riesen Fehlermeldung ab. Werd wohl genauer analysieren müssen woran das liegt.
editPanel
Da das AdminPanel über die User-TS konfiguriert wird, weiß ich noch nicht ganz wozu hier nochmal auf das ContentElement ADMPANEL verwiesen wird.
debug
Typ: Boolean
Default:
10 = TEXT
10.value = versetzter Eintrag in einem Tabellenfeld
10.offsetWrap = 20,30
10.debug = 1
Grade bei solchen Funktionen, die viel Code einem Inhalt hinzufügen, kann debug=1 sehr hilfreich sein. Außerdem hat es den Vorteil, dass Ihr nicht erst im Quellcode rumwühlen braucht.
debugFunc
Typ: Boolean + 2
Default: 0
10 = TEXT
10.value = versetzter Eintrag in einem Tabellenfeld
10.offsetWrap = 20,30
10.debugFunc = 1
Arbeitet wie debug. Mit dem Unterschied, das der Inhalt nicht irgendwo im Contentbereich der Seite angezeigt wird und evtl. von irgendwelchen Elementen verdeckt wird, sondern ganz oben auf der Seite.
debugFunc=2 erzeugt eine Tabelle mit weißen Hintergrund und enthaltenem Inhalt. Hier kann man den Text gleich viel besser lesen.
debugData
Typ: Boolean
Default: 0
10 = TEXT
10.value = versetzter Eintrag in einem Tabellenfeld
10.offsetWrap = 20,30
10.debugData = 1
Dieses debugData gibt das komplette Array des aktuellen Datensatzes aus. Heißt: Wenn wir unser TypoScript in einem Objekt von tt_content eingetragen haben, dann wird der komplette Inhalt diesen tt_content-Objektes ausgegeben. Dasselbe mit pages (im Template-TS-setup) und auch in TemplaVoila in diesen XML-Bereichen
