De:TSref/stdWrap
TypoScript (Liste TypoScript) This page is document in progress.
Überblick: stdWrap
stdWrap ist eine TypoScript Funktion und wird in TypoScript (Liste TypoScript) von vielen Objekten ausgewertet. Genau genommen sollte stdWrap eher als Container für eine Reihe von Funktionen bezeichnet werden. Wenn eine Eigenschaft vom Typ stdWrap ist, dann können alle diese Funktionen auf die Eigenschaft angewendet werden.
Da es rekursiv aufgerufen werden kann, ermöglicht es auch komplexe Zusammenhänge via TypoScript zu lösen.
Die Funktionen sind hier in der Reihe angegeben, wie sie ausgeführt werden, die Reihenfolge im TypoScript hat dagegen keinen Einfluss.
# Ziel: # Eine Zahl die via Get/Post übergeben wurde, # soll mit 3 multipliziert werden data = GP:zahl wrap = |*3 prioriCalc = 1
# Das Ergebnis bei dem Parameter &zahl=10 wäre: "10*3" und nicht "30" # Die Ausführungsreihenfolge ist allerdings: data = GP:zahl => 10 prioriCalc = 1 => 10 wrap = |*3 => 10*3
# Um das gewünschte Ziel zu erreichen, muss "wrap" vor "prioriCalc" ausgeführt werden data = GP:zahl stdWrap.wrap = |*3 prioriCalc = 1 # ergibt das gewünchte Ergebnis "30" da sowohl data als auch stdWrap vor prioriCalc ausgeführt wird.
Offizielle Dokumentation: stdWrap
Beispiel: HTML mit stdWrap
10 = HTML 10.value = <em>Beispieltext</em> # Die Eigenschaft .value des Objektes HTML hat die Eigenschaft "HTML /stdWrap", # kann also HTML aufnehmen und/oder stdWrap Eigenschaften 10.value.case = upper 10.value.wrap = <h2>Dies ist ein |</h2>
ergibt
<h2>Dies ist ein<em>BEISPIELTEXT</em>>h;//h2<
Wenn ein Objekt oder eine Eigenschaft mit stdWrap bezeichnet wird, dann kann darauf jede stdWrap Funktion angewendet werden.
# TEXT / stdWrap 20 = TEXT 20.field = bodytext 20.case = upper
Schon bei TEXT und HTML existiert also ein Unterschied - bei HTML liegt die stdWrap Eigenschaft auf value, bei TEXT auf dem Objekt selber.
Die stdWrap Eigenschaften werden in der Reihenfolge ausgewertet, wie sie unten aufgeführt werden. Details sind in der Datei typo3/sysext/cms/tslib/class.tslib_content.php, function stdWrap() nachzulesen.
Wenn eine stdWrap Eigenschaft einen Inhalt zurückgibt, so wird der Wert in .value = überschrieben.
10 = HTML 10.value = <em>Beispielstext</em> 10.value.case = upper # überschreibt "<em>Beispielstext</em>" durch den Inhalt des Feldes header aus dem Array $cObj->data-array 10.value.field = header
Daten holen
setContentToCurrent
Überschreibt den aktuellen Inhalt mit dem Inhalt der Funktion.
#Datentyp boolean
setCurrent
Sets the "current"-value. This is normally set from some outside routine, so be careful with this. But it might be handy to do this
#Datentyp string / stdWrap
lang
Diese Funktion wird dafür verwendet einen optionalen Text für andere Sprachen festzulegen.
Wenn config.language in dem Array gefunden wird, dann wird diese Spracheversion anstelle des Standard-Wertes gewählt.
#Datentyp Ein Array von Sprachkürzlen (de,pl,dk, usw.)
#Beispiel config.language = de page.10 = TEXT page.10.value = I am a Berliner! page.10.lang.de = Ich bin ein Berliner! # Gibt zurück: "Ich bin ein Berliner", da config.language auf "de" gesetzt ist.
Üblicherweise stehen die zu ändernden Texte nicht alleine als TEXT oder HTML Objekt im value Wert, sondern werden in Wraps geschrieben.
#Beispiel rootline.wrap = <p>Menü-Position:|</p> # In einer solchen Funktion, kann entweder eine Condition verwendet werden, # dann müssen bei Veränderungen des TypoScripts direkt alle Sprachvarianten verändert werden, # das kann recht umständlich und fehlerträchtig werden. # # Eine Alternative bietet die Funktion stdWrap: rootline.stdWrap.wrap = <p>|</p> # Der Inhalt von diesem Objekt wird dem eigentlichen Inhalt vorangestellt, der Text # landet also innerhalb des Wraps! rootline.stdWrap.preCObject = TEXT rootline.stdWrap.preCObject.value = Menü-Position: rootline.stdWrap.preCObject.lang.pl = pozycja: rootline.stdWrap.preCObject.lang.en = menu position:
data
Der Datentyp getText hat eine große Funktionsvielfalt. Darüber können Informationen aus unterschiedlichsten Quellen geholt werden. Systemeinstellungen, Session-Daten, Inhalte aus dem aktuellen Datensatz, der Inhalt eines konkreten DB Feldes, Registerwerte usw.
#Datentyp getText
field
Füllt den Inhalt mit dem Inhalt des Feldes $cObj->data[field].
Weitere Informationen sind bei der Funktion getText zu finden.
Hinweis: Es ist möglich, mehrere Feldnamen durch zwei Slashes "//" zu trennen. Der Inhalt des ersten nicht leeren Feldes wird dann zurückgegeben.
#Datentyp fieldname
#Beispiel 10 = HTML 10.value = test 10.value.field = nav_title // title # Der Inhalt von value wird mit dem Wert des Feldes "nav_title" überschrieben. # Wenn nav_title leer ist, dann wird der Inhalt von value mit dem Wert des Feldes "title" überschrieben.
current
Sets the content to the "current"-value (see ->split) Füllt den Inhalt mit dem aktuellen Wert. Wird bei der Funktion split verwendet.
#Datentyp boolean
cObject
Lädt Inhalt aus einem Content-Objekt
#Datentyp cObject
numRows
Gibt zurück, wieviele Zeilen durch ein select ermittelt wurden.
#Datentyp numRows
filelist
Liest ein Verzeichnis aus und gibt eine Liste der Dateien zurück. Der übergebene Wert wird durch die Pipe ("|") in mehrere Parameter aufgeteilt.
- Der Pfad
- Eine kommagetrennte Liste aller Dateiendungen (ohne Leerzeichen!). Leer bedeutet alle Dateiendungen werden akzeptiert.
- Sortierung: name, size, ext, date, mdate (Änderungsdatum)
- Sortierreihenfolge umkehren: "r"
- 0/1; Wenn ein Wert gesetzt ist, dann wird der komplette Pfad zurückgegeben und nicht nur der Dateiname.
#Datentyp dir / stdWrap
filelist Beispiel
page.100 = HTML
page.100.value.filelist = fileadmin/verzeichnis/|jpg,jpeg|name| |1
page.100.value.split {
# die Liste wird komma-getrennt aufgebaut
token = ,
cObjNum = 1
1 {
# da alles Bilder sind, sollen die auch angezeigt werden
10 = IMAGE
10.file.import.current=1
10.file.width = 120px
# aber es soll auf die Datei verlinkt werden
10.stdWrap.typolink.parameter {
current = 1
# rawUrlEncode muss auf die Dateien angewendet werden,
# damit z.B. Leerzeichen decodiert werden.
# Aber der Verzeichnispfad darf nicht geändert werden
# also wird er via substring entfernt und nacher via
# wrap im Orginal wieder hinzugefügt.
substring = 22,0
rawUrlEncode = 1
wrap = fileadmin/verzeichnis/|
}
10.wrap = <div style="padding:10px; float:left;">|</div>
}
}
preUserFunc
Ruft eine PHP-Funktion oder eine Methode einer Klasse auf. Der aktuelle Inhalt wird als erster Parameter übergeben, weitere Eigenschaften werden im zweiten Parameter übergeben.
#Datentyp Erwartet einen Funktionsnamen Weitere Informationen: postUserFunc
Überschreiben / Bedingungen
override
Wenn override einen Inhalt zurückgibt der nicht gleich einem leeren String oder 0 ist, dann wird der Inhalt mit dem zurückgegebenen Wert überschrieben.
#Datentyp string / stdWrap
preIfEmptyListNum
Siehe listNum
ifEmpty
Wenn der Inhalt an dieser Stelle leer ist (Leerzeichen werden abgeschnitten), dann wird der Inhalt mit dem Wert von ifEmpty gefüllt.
#Datentyp string / stdWrap
ifBlank
Das selbe Verhalten wie ifEmpty allerdings wird die Prüfung mit strlen() vollzogen.
#Datentyp string / stdWrap
listNum
Konvertiert einen Text, der eine mit kommagetrennte Liste (,) darstellt, in ein Array.
Mit dem keyword "last" kann das letzte Element des Arrays bestimmt werden.
.splitChar (string): Definiert einen String der für das aufteilen anstelle des Kommas verwendet werden soll. Wenn splitChar eine Zahl ist, dann wird das Zeichen mit der Nummer dafür verwendet. 10 entspricht dem Zeilenumbruch und teilt daher einen Text in Zeilen auf. .stdWrap : Die stdWrap-Funktion kann verwendet werden.
#Datentyp int +calc +"last"
#Standard: ,
Beispiel: # folgende Liste ist gegeben: "item 1, item 2, item 3, item 4" # Dieser Aufruf für "item 3" - den vorletzten - zurückgeben. .listNum = last - 1
trim
PHP-Funktion trim() - entfernt alle Leerzeichen am Anfang und am Ende des Inhalts.
stdWrap
Die stdWrap Funktion kann sich selber rekursiv aufrufen. Diese Eigenschaft kann dafür verwendet werden, die Reihenfolge der Ausführung der unterschiedlichen stdWrap-Funktionen zu beeinflussen.
#Datentyp stdWrap
required
Wenn der Inhalt leer ist, dann gibt die stdWrap-Funktion einen leerer String zurück. Somit kann bestimmt werden, dass der Inhalt in einem bestimmten Listenelement (listNum), einem Datenbankfeld (field) usw. nicht leer sein darf. Das bezieht sich auf den Import aus Tabellenfeldern oder Funktionen (data,field,current, listNum, trim).
#Datentyp boolean
if
Wenn die if-Funktion false zurückgibt, gibt die stdWrap-Funktion einen leeren String zurück - unabhängig von weiteren Wraps usw.
#Datentyp if
fieldRequired
Der Inhalt in dem angegebenen Datenbank Feld darf nicht leer sein, sonst wird ein leerer String zurückgegeben.
#Datentyp fieldname
Daten verarbeiten (parse data)
csConv
Convert the charset of the string from the charset given as value to the current rendering charset of the frontend (renderCharset).
#Datentyp string
parseFunc
Der Inhalt kann nach bestimmten Kriterien von HTML-Tags bereinigt werden. Die Funktion parseFunc stellt dafür die notwendigen Funktionen bereit.
Wenn eine Zeichenkette übergeben wird, so wird das als Referenz auf ein Globales Objekt im TypoScript Objekt Baum verwendet. Das ist die Standard-Konfiguration für parseFunc die mit den hier angegebenen Funktionen angepasst wird. Das funktioniert genau so wie Referenzen für Content Objekte.
#Datentyp object path reference / ->parseFunc
# Beispiel: parseFunc = < lib.parseFunc_RTE parseFunc.tags.myTag = TEXT parseFunc.tags.myTag.value = Dieser Text wird eingefügt, wenn <mytag> gefunden wird.
# Beispiel2: ################################################################# # in der Überschrift soll ein <u>-Tag zugelassen werden, # ansonsten aber alle Elemente wie gewohnt geparst werden. lib.stdheader.10.setCurrent.htmlSpecialChars = 0 lib.stdheader.10.setCurrent.parseFunc { allowTags = u denyTags = * constants=1 nonTypoTagStdWrap.HTMLparser = 1 nonTypoTagStdWrap.HTMLparser { keepNonMatchedTags=1 htmlSpecialChars = 2 allowTags = u removeTags = * } }
HTMLparser
Dieses Element erlaubt HTML-Inhalte zu parsen und erlaubt erweiterte Filterfunktionen.
Value must be set and properties are those of ->HTMLparser.
(See adminguide for ->HTMLparser options)
#Datentyp boolean / ->HTMLparser
split
Eine Funktion die es ermöglicht den Inhalt anhand von Trennzeichen aufzuteilen.
#Datentyp ->split
prioriCalc
Kalkulation des Wertes mit Hilfe der Operatoren -+*/%^. Die Funktion respektiert Prioritäten ("Punkt vor Strich"-Rechnung) und Klammern.
. (punkt) ist der Dezimaltrenner (z.B. 0.2).
Gibt einen Wert vom Typ "Double" zurück.
Wenn .prioriCalc auf "intval" gesetzt wurde, gibt die Funktion eine Ganzzahl (Integer) zurück.
Es gibt keine Fehlerüberprüfung, Teilen durch null oder andere fehlerhaften Werte können komische Ergebnisse erzielen. Benutze bitte außerdem eine korrekte Syntax, weil zukünftige Änderungen der Funktion evtl. weitere Operatoren und Funktionen haben könnte.
#Datentyp boolean
# Beispiele: 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
char
Inhalt wird gesetzt auf chr(wert).
PHP: $content=chr(intval($conf["char"]);
#Datentyp int
intval
PHP Funktion intval(); Rückgabewert: Ganzzahl (integer).
PHP: $content=intval($content);
#Datentyp boolean
date
Der Inhalt sollte vom Datentyp "UNIX-time" sein (Sekunden seit 1.9.1970). Rückgabewert: Inhalt als Datum formatiert
$content=Date($conf["date"], $content);
#Datentyp date-conf
#Beispiel, in dem ein Zeitstempel importiert wird .value.field = tstamp .value.date =
strftime
Genauso wie "date" oben. Siehe PHP-Handbuch (strftime) für die Codes oder den Datentyp "strftime-conf".
Diese Formatierung ist nützlich, wenn die locale-Einstellung im CONFIG-Objekt eingestellt wurde. Siehe dort.
Eigenschaften:
.charset : (Zeichensatz) Kann den Zeichensatz der Ausgabe bestimmen, falls eine Konvertierung in das "renderCharset" nötig ist. Der Standard ist die Benutzung des durch t3lib_cs intelligent geratenen Zeichensatzes.
#Datentyp strftime-conf
age
If enabled with a "1" (number, integer) the content is seen as a date (UNIX-time) and the difference from present time and the content-time is returned as one of these four variations:
"xx min" or "xx hrs" or "xx days" or "xx yrs"
The limits between which layout is used are 60 minutes, 24 hours, 365 days,
NOTE:
If you set this property with a non-integer, it's used to format the four units. This is the default value:
" min| hrs| days| yrs"
Set another string if you want to change the units. You may include the "-signs. They are removed anyway.
#Datentyp boolean oder string
case
Wandelt in Groß- ("upper") oder Kleinbuchstaben ("lower") um.
Dabei wird auch das gewählte Encoding (z.B. config.renderCharset = UTF-8) berücksichtigt.
#Datentyp case
#Wertebereich lower upper
#Beispiel page.40 = TEXT page.40.value = Guten Tag. page.40.case = upper
#Beispiel2 page.40 = HTML page.40.value = Guten Tag. page.40.value.case = lower
bytes
Will format the input (an integer) as bytes: bytes, kb, mb
If you add a value for the property "labels" you can alter the default suffixes. Labels for bytes, kilo, mega and giga are separated by vertical bar (|) and possibly encapsulated in "". Eg: " | K| M| G" (which is the default value)
#Datentyp boolean
#Beispiel: bytes.labels = | K| M| G
substring
Returns the substring with [p1] and [p2] send as the 2nd and 3rd parameter to the PHP substring function.
Uses "renderCharset" for the operation.
page.10 = TEXT page.10.value = 123456789 page.10.substring = 2,5
# Output: 34567
removeBadHTML
Entfernt "schlimmen" HTML-Code, der XSS-Bugs ermöglichen könnte.
#Datentyp boolean
cropHTML
(TYPO3 v. >= 4.3.x) Kürzt einen Text unter Wahrung aller HTML Tags.
# Ausgabe: <em>stdWrap</em>.. ist prima page.98 = TEXT page.98.value = <em>stdWrap</em> ist toll page.98.cropHTML = 7|..|1 page.98.noTrimWrap = || ist prima|
stripHtml
Entfernt alle HTML-Tags.
#Datentyp boolean
crop
Crops the content to a certain length
Syntax: +/- (chars) = from left / from right | [string] | [boolean: keep whole words]
Examples: .crop = 20 | ... => max 20 characters. If more, the value will be truncated to first 20 chars and appended with "..." .crop = -20 | ... => max 20 characters. If more, the value will be truncated to last 20 chars and prepended with "..." .crop = 20 | ... | 1 => max 20 characters. If more, the value will be truncated to last 20 chars and appended with "...". If the division is in the middle of word, the remains of that word is removed.
Uses "renderCharset" for the operation.
rawUrlEncode
Auf den Inhalt wird die PHP-Funktion [rawurlencode()] angewendet.
#Datentyp boolean
htmlSpecialChars
Auf den Inhalt wird die PHP-Funktion [htmlspecialchars()] angewendet.
Die zusätzliche Eigenschaft ".preserveEntities" verändert Entities (" ") nicht.
#Datentyp boolean
# Beispiel: # Entities in Überschriften werden jetzt nicht mehr ersetzt: lib.stdheader.10.setCurrent.htmlSpecialChars.preserveEntities=1
doubleBrTag
Alle doppelten Zeilenumbrüche werden mit diesem Wert ersetzt.
#Datentyp string
br
Die PHP-Funktion nl2br() wird verwendet. Zeilenumbrüche werden in <br />-Tags umgewandelt.
#Datentyp boolean
brTag
Alle ASCII-Zeichen mit dem Wert "10" (Zeilenumbruch) wird mit dem angegebenen Wert ersetzt.
#Datentyp string
encapsLines
Lets you split the content by chr(10) and process each line independently. Used to format content made with the RTE.
#Datentyp ->encapsLines
keywords
splits the content by characters "," ";" and chr(10) (return), trims each value and returns a comma-separated list of the values.
#Datentyp boolean
innerWrap
Wrapt den Inhalt
#Datentyp wrap /stdWrap
innerWrap2
same as .innerWrap (but watch the order in which they are executed)
#Datentyp wrap /stdWrap
fontTag
#Datentyp wrap
addParams
Lets you add tag-parameters to the content if the content is a tag!
#Datentyp ->addParams
textStyle
Wraps content in font-tags
#Datentyp ->textStyle
tableStyle
Wraps content with table-tags
#Datentyp ->tableStyle
filelink
Used to make lists of links to files.
#Datentyp ->filelink
preCObject
Ein cObject, dass dem Inhalt vorangestellt wird.
#Datentyp cObject
postCObject
Ein cObject, dass an den Inhalt angefügt wird.
#Datentyp cObject
wrapAlign
Wraps content with#Datentyp align /stdWrap
typolink
Ruft die Funktion typolink auf, die um den Inhalt ein a-Tag legt.
#Datentyp ->typolink
TCAselectItem
Resolves a comma seperated list of values into the TCA item representation.
.table (string): The Table to look up
.field (string): The field to resolve
.delimiter (string): Delimiter for concatenating multiple elements.
Notice: Currently this works only with TCA fields of type select which are not database relations.
#Datentyp Array mit den Eigenschaften
spaceBefore
Pixels space before. Done with a clear-gif; <img ...>
#Datentyp int /stdWrap
spaceAfter
Pixels space after. Done with a clear-gif; <img ...>
#Datentyp int /stdWrap
space
Additional property:
.useDiv = 1
If set, a clear gif is not used by rather a <div> tag with a style-attribute setting the height. (Affects spaceBefore and spaceAfter as well).
#Datentyp space [spaceBefore] | [spaceAfter]
wrap
#Datentyp
wrap /+.splitChar
.splitChar bestimmt das Trennzeichen anhand dessen der Text in vorne und hinten aufgeteilt wird. Standardmäßig wird die Pipe ("|") verwendet.
#Beispiel page.40 = HTML page.40.value = oder page.40.value.wrap.splitChar = ? page.40.value.wrap = U|n|i|x?W|i|n|d|o|w|s
noTrimWrap
Diese Funktion wrapt den Inhalt inklusive den Leerzeichen. Die Werte werden nicht getrimmt, die Leerzeichen bleiben erhalten. Wichtig ist, dass der Anfang und das Ende sowie der Wrap selber durch die Pipe ("|") bestimmt wird.
#Datentyp "special" wrap
#Beispiel .noTrimWrap = | val1 | val2 |
wrap2
Ein weiterer wrap, wird allerdings nach "wrap" ausgeführt.
#Datentyp wrap /+.splitChar
dataWrap
Wenn in dem String Geschweifte Klammern {...} vorkommen, und der Inhalt vom typ getText ist, dann wird der Inhalt der geschweiften Klammer durch das Ergebnis von getText ersetzt.
# Beispiel:
# Der div-Container bekommt eine id in Abhängigkeit von der aktuellen Seite.
<div id="id_{TSFE : id}"> | </div>
prepend
cObject prepended to content (before)
#Datentyp cObject
append
cObject appended to content (after)
#Datentyp cObject
wrap3
same as .wrap (but watch the order in which they are executed)
#Datentyp wrap /+.splitChar
outerWrap
Wraps the complete content
#Datentyp wrap /stdWrap
insertData
If set, then the content string is parsed like .dataWrap above.
#Datentyp boolean
Example:
Displays the page title:
10 = TEXT
10.value = This is the page title: {page:title}
10.insertData = 1
offsetWrap
This wraps the input in a table with columns to the left and top that offsets the content by the values of x,y. Based on the cObject OTABLE.
.tableParams / .tdParams +stdWrap
- used to manipulate tableParams/tdParams (default width=99%) of the offset. Default: See OTABLE.
.stdWrap
- stdWrap properties wrapping the offsetWrap'ed output
#Datentyp x,y
postUserFunc
Calling a PHP-function or method in a class, passing the current content to the function as first parameter and any properties as second parameter. Please see the description of the cObject De:TSref/USER for in-depth information.
#Datentyp function-name
#Example:
#You can paste this example directly into a new template record.
page = PAGE
page.typeNum=0
includeLibs.something = media/scripts/example_callfunction.php
page.10 = TEXT
page.10 {
value = Hello World
postUserFunc = user_reverseString
postUserFunc.uppercase = 1
}
page.20 = TEXT
page.20 {
value = Hello World
postUserFunc = user_various->reverseString
postUserFunc.uppercase = 1
postUserFunc.typolink = 11
}
postUserFuncInt
Calling a PHP-function or method in a class, passing the current content to the function as first parameter and any properties as second parameter. The result will be rendered non-cached, outside the main page-rendering. Please see the description of the cObject USER_INT and PHP_SCRIPT_INT for in-depth information.
Supplied by Jens Ellerbrock
#Datentyp function-name
prefixComment
Prefixes content with a HTML comment with the second part of input string (divided by "|") where first part is an integer telling how many trailing tabs to put before the comment on a new line.
The content is parsed through insertData.
#Datentyp string
#Example:
#prefixComment = 2 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
#Will indent the comment with 1 tab (and the next line with 2+1 tabs)
#(Added in TYPO3 >3.6.0RC1)
editIcons
If not empty, then insert an icon linking to the typo3/alt_doc.php with some parameters to build and backend user edit form for certain fields.
The value of this property is a list of fields from a table to edit. It's assumed that the current record of the cObj is the record to be edited.
Syntax: optional tablename : comma list of fieldnames[list of pallette-field names separated by | ]
.beforeLastTag (1,0,-1): If set (1), the icon will be inserted before the last HTML tag in the content. If -1 the icon will be prepended to the content. If zero (0) the icon is appended in the end of the content.
.styleAttribute (string): Adds a style-attribute to the icon image with this value. For instance you can set position:absolute if you want a non-destructive insertion of the icon. Notice: For general styling all edit icons has the class frontEndEditIcons which can be addressed from the stylesheet of the site.
.iconTitle (string): The title attribute of the image tag.
.iconImg (HTML): Alternative HTML code instead of the default icon shown. Can be used to set another icon for editing (for instance a red dot or otherwise... :-)
#Datentyp string
#Example: This will insert an edit icon which links to a form where the header and bodytext fields are displayed and made available for editing (provided the user has access!). editIcons = tt_content : header, bodytext Or this line that puts the header_align and date field into a palette which means they are displayed on a single line below the header field. This saves some space. editIcons = header[header_align|date], bodytext
editPanel
See cObject EDITPANEL.
#Datentyp boolean / editPanel
debug
Prints content with HTMLSpecialChars() and : Usefull for debugging which value stdWrap actually ends up with, if you're constructing a website with TypoScript.Should be used under construction only.
#Datentyp boolean
debugFunc
Prints the content directly to browser with the debug() function.
Should be used under construction only.
Set to value 2 the content will be printed in a table - looks nicer.
#Datentyp boolean
debugData
Prints the current data-array, $cObj->data, directly to browser. This is where ".field" gets data from.
Should be used under construction only.
#Datentyp boolean
stdWrap in eigener Extension ermöglichen
Um stdWrap im TypoScript einer eigenen Extension zu ermöglichen, muss der Parameter vor der ersten Verwendung wie folgt durch die stdWrap Funktion eines cObjects geführt werden, dabei stehen alle Elemente im data Array des cObjects als Felder zur Verfügung.
$this->cObj->data['myCustomField'] = 'Do Something here'; $conf['myTsParam']=$this->cObj->stdWrap($conf['myTsParam'],$conf['myTsParam.']);
stdWrap mit Hooks erweitern
Seit TYPO3 4.2 implementiert stdWrap 4 Hooks. Damit erübrigt sich die Verwendung von XCLASS zur Erweiterung von stdWrap ab dieser Version.
stdWrapPreProcess
Dieser stdWrap Hook wird vor jeder anderen stdWrap funktion aufgerufen. Also auch vor jeder Funktion, die Daten holt wie field, data etc. Achtung! wird vor override aufgerufen.
stdWrapOverride
Wird direkt nach preUserFunc aufgerufen. Zu diesem ist das holen der Daten abgeschlossen, diese wurden jedoch noch nicht überprüft (ifEmpty etc) oder verarbeitet (wrap etc.).
stdWrapProcess
Wird nach der ersten Überprüfung und Vorverarbeitung der Daten (ifEmpty, trim, listNum) und direkt nach dem rekursiven Aufruf von stdWrap aufgerufen.
stdWrapPostProcess
Wird nach jeder anderen stdWrap Funktion außer der Debugausgabe aufgerufen. Auch nach prefixComment, editIcons etc!
Extensions, die stdWrap per Hook erweitern
Folgende Extensions implementieren stdWrap Hooks:
- sm_stdwrapquote (stdWrapProcess)
- pmkhtmlcrop (stdWrapProcess)
- jsageforms (stdWrapProcess)
Anleitung: Hook für stdWrap erstellen
Um stdWrap per Hook zu erweitern zunächst eine Extension mit dem Kickstarter o. ä. erzeugen. Dann in der ext_localconf.php den Hook registrieren:
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'][] = 'EXT:my_ext/class.tx_mystdwrap.php:&tx_mystdwrap';
Unter entsprechendem Link eine Klasse erzeugen:
/***************************************************************
* Copyright notice
* [...]
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
require_once(PATH_typo3.'/sysext/cms/tslib/interfaces/interface.tslib_content_stdwraphook.php');
class tx_mystdwrap implements tslib_content_stdWrapHook {
function stdWrapPreProcess($content, array $configuration, tslib_cObj &$parentObject) {
if ($conf['myStdWrapFunc3']) {
$content = 'zzz';
}
return $content;
}
function stdWrapOverride($content, array $configuration, tslib_cObj &$parentObject) {
return $content;
}
function stdWrapProcess($content, array $conf, tslib_cObj &$parentObject) {
if ($conf['myStdWrapFunc1']) {
$content = 'xxx';
} elseif ($conf['myStdWrapFunc2']) {
$content = 'yyy';
}
return $content;
}
function stdWrapPostProcess($content, array $configuration, tslib_cObj &$parentObject) {
return $content;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/my_ext/class.tx_mystdwrap.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/my_ext/class.tx_mystdwrap.php']);
}