<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.161.157.121</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.161.157.121"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/84.161.157.121"/>
	<updated>2026-05-06T19:59:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=266</id>
		<title>Typo3 - Extensions programmieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=266"/>
		<updated>2006-05-22T10:52:39Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Struktur einer Extension ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_emconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Informationen und Metadaten zur Extension. Etwa die Infos die im Kickstarter unter General Info stehen.&lt;br /&gt;
&lt;br /&gt;
* Root-Verzeichnis&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; Enthält Konfigurationsdaten ($TYPO3_CONF_VARS) für das Backend und Frontend. Hier kann über die Extension API auch TypoScript eingebunden werden.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; Konfiguration von Datenbanktabellen. Plugins und Module üver die Extension API einbinden. (Alles über Kickstarter)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.sql&amp;#039;&amp;#039;&amp;#039; SQL-Daten für die Tabellendefinition. Die Auswertung erfolgt über den Extension Manager und das Install-Tool.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables_static+adt.sql&amp;#039;&amp;#039;&amp;#039; SQL-Tabellendefinition inkl. Daten. Z.B. für statische Daten (Länderinfos etc.)Die Tabellen müssen zusätzlich in ext_tables.sql definiert sein.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_typoscript_*.txt&amp;#039;&amp;#039;&amp;#039; Globaler TypoScript-Code. Steht nicht üver Template-Datensätze zur Auswahl (siehe /static)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_conf_template.txt&amp;#039;&amp;#039;&amp;#039; Hier werden Optionen zur Konfiguration angelegt, die der Benutzer im Extensionmanager einstellen kann.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;*icon*.gif&amp;#039;&amp;#039;&amp;#039; Symbol-Dateien für Extension,DB-Tabellen,Plugins, Module...&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;locallang*.php&amp;#039;&amp;#039;&amp;#039; Texte für die Lokalisierung in verschiedenen Sprachen&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class.ext_update.php&amp;#039;&amp;#039;&amp;#039; Funktionen für ein Update der Extension (Beispiel siehe newloginbox).&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;pi1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für Skripte und Daten des Plugin&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class*.php&amp;#039;&amp;#039;&amp;#039; PHP-Klassen z.B. für Plugins oder Submodule&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;cm1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für Dateien die das Kontext-Menü betreffen&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;mod1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für ein Modul.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;conf.php&amp;#039;&amp;#039;&amp;#039; Konfigurationsdatei für ein Modul zum einbinden ins Backend.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;index.php&amp;#039;&amp;#039;&amp;#039; Hauptscript eines Moduls.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;modfunc1/&amp;#039;&amp;#039;&amp;#039; Skripte und Daten für Submodul-Funktionen&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;static/&amp;#039;&amp;#039;&amp;#039; TypoScript-Template-Dateien. Diese werden über die Extension-API eingebunden und stehen dann in Template-Datensätzen, ähnlich den Standard Templates zur Auswahl.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sv1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für Services&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;res/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für beliebige &amp;#039;recourcen&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;doc/&amp;#039;&amp;#039;&amp;#039; Verzeichnis der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
== Wo werden Extensions installiert ? ==&lt;br /&gt;
===typo3/sysext/ (System)===&lt;br /&gt;
System Extensions wie cms und lang. Hier können keine Extensions mit dem Extension Manager installiert werden.&lt;br /&gt;
===typo3/ext/ - globale Extensions (Global) ===&lt;br /&gt;
Z.B. diese die von Typo3 mitgeliefert werden. Mit der Option allowGlobalInstall kann man die Installation in dieses Verzeichnis erlauben. Das ist dann nicht sinnvoll wenn sich mehrere Typo3 WEbsites eine Installation teilen, weil es hier zu Versionskonflikten kommen kann.&lt;br /&gt;
===typo3conf/ext - lokale Extensions (Local)===&lt;br /&gt;
Hier werden normalerweise alle Extensions installiert. Die Lokale Installation hat immer Vorang vor einer globalen.&lt;br /&gt;
&lt;br /&gt;
== Typolinks richtig in Extensions einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem kurzem Tutorial möchte ich zeigen, wie man Typolinks in eigenen Erweiterungen erstellt, die das&lt;br /&gt;
Feature &amp;#039;Simulate Static Documents&amp;#039; unterstützen und eine Ausgabe erstellen, die von Typo3 gecached wird&lt;br /&gt;
und so auch mit der Indexed search verwendet werden können. Diese Informationen wurden aus anderen&lt;br /&gt;
Erweiterungen zusammengetragen, speziell aus der Erweiterung tt_board.&lt;br /&gt;
Typoscript&lt;br /&gt;
Zuerst erstelle in der Datei &amp;#039;ext_typoscript_setup.txt&amp;#039; eine Eigenschaft, die deiner Erweiterung mitteilt, ob&lt;br /&gt;
caching genutzt werden soll oder nicht:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_myextension_pi1 {&lt;br /&gt;
allowCaching = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das später auf 0 gesetzt wird, werden diese Seiten nicht mehr gecached.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorbereitung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bereite in der main() Funktion den Typolink vor und konfiguriere das caching:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_pi1 extends tslib_pibase {&lt;br /&gt;
...&lt;br /&gt;
var $allowCaching = &amp;quot;&amp;quot;;&lt;br /&gt;
function main($content,$conf) {&lt;br /&gt;
$this-&amp;gt;conf=$conf;&lt;br /&gt;
...&lt;br /&gt;
// Preconfigure the typolink&lt;br /&gt;
$this-&amp;gt;local_cObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
$this-&amp;gt;local_cObj-&amp;gt;setCurrentVal($GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
$this-&amp;gt;typolink_conf = $this-&amp;gt;conf[&amp;quot;typolink.&amp;quot;];&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;parameter.&amp;quot;][&amp;quot;current&amp;quot;] = 1;&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;] =&lt;br /&gt;
$this-&amp;gt;cObj-&amp;gt;stdWrap($this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;],&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
unset($this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
// Configure caching&lt;br /&gt;
$this-&amp;gt;allowCaching = $this-&amp;gt;conf[&amp;quot;allowCaching&amp;quot;]?1:0;&lt;br /&gt;
if (!$this-&amp;gt;allowCaching) {&lt;br /&gt;
$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;set_no_cache();&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Links erstellen&lt;br /&gt;
Um nun Links in der Erweiterung zu erstellen, benutze das folgende Code Fragment:&lt;br /&gt;
$temp_conf = $this-&amp;gt;typolink_conf;&lt;br /&gt;
$temp_conf[&amp;quot;additionalParams&amp;quot;] .= &amp;quot;&amp;amp;tx_myextension_pi1[key]=value&amp;quot;;&lt;br /&gt;
$temp_conf[&amp;quot;useCacheHash&amp;quot;] = $this-&amp;gt;allowCaching;&lt;br /&gt;
$temp_conf[&amp;quot;no_cache&amp;quot;] = !$this-&amp;gt;allowCaching;&lt;br /&gt;
$the_link = $this-&amp;gt;local_cObj-&amp;gt;typolink(&amp;quot;Linktext&amp;quot;, $temp_conf);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann man &amp;#039;$the_link&amp;#039; zu der Ausgabe hinzufügen. Das &amp;#039;$temp_conf&amp;#039; Array kann man mit allen&lt;br /&gt;
Eigenschaften des typolink Objektes erweitern.&lt;br /&gt;
&lt;br /&gt;
Tutorial by typo3.hachmeister.org&lt;br /&gt;
Von:fruit-lab.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debug Methode ==&lt;br /&gt;
Typo3 | Debug Methode :: Hilfe bei der Programmierung&lt;br /&gt;
&lt;br /&gt;
Wenn man eine eigene Extension schreibt benutzt man zum größten Teil Array, und um den Überblick zu&lt;br /&gt;
behalten was nach den ganzen schritten in einem Array noch so drin steht hat man die möglichkeit mit einer Funktion das Array schön und sauber in einer tabelle anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:[[Bild:Beispiel.jpg]]&lt;br /&gt;
je nach devIPMask Einstellungen ist auch nur&lt;br /&gt;
 debug($sonstwas);&lt;br /&gt;
nützlich, vor allem wenn ein Kundenprojekt Online isteinfach im Installtool und devIpMask deine IP eingeben und dann mit debug($sonstwas); arbeiten, so kannst nur du den debug sehen und nicht irgendwelche User die grade auf der Site sind.&lt;br /&gt;
&lt;br /&gt;
Kleiner Zusatz Tip:&lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch gleichzeitig mehrere Debugs ausgeben und verliert den überblick welcher debug welcher ist...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch ein Array vor einer funktion debugen und anschliessend...&lt;br /&gt;
da habt ihr dann die möglichkeit euerem Debug einen Namen zu geben..&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array vorher&amp;#039;);&lt;br /&gt;
$data[&amp;#039;Name&amp;#039;] = &amp;#039;T.uX&amp;#039;;&lt;br /&gt;
$data[&amp;#039;Alter&amp;#039;] = 32;&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array nachher&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
Hinweis:&lt;br /&gt;
läst du dir eine Variable im debug ausgeben erscheint [b]|debug|[/b]. das funzt nur mit Arrays ;-)&lt;br /&gt;
Auch bei der Verwendung der integrierten DB-Abstrktionsschicht können eine Reihe von Fehlern auftreten,&lt;br /&gt;
die teilweise nur sehr magere Fehlermeldungen produzieren. Um eine etwas explizitere Fehlerausgabe zu&lt;br /&gt;
erzwingen sollte man folgende Zeile in seine Extension integrieren*:&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;debugOutput = true;&lt;br /&gt;
&lt;br /&gt;
So wird z.B. das SQL-Stement Ausgegeben, das zu einem Fehler geführt hat.&lt;br /&gt;
Tutorial by typo3.kj187.de&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Installation&amp;diff=279</id>
		<title>Typo3 - Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Installation&amp;diff=279"/>
		<updated>2006-05-22T10:42:31Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Uploaden ==&lt;br /&gt;
&lt;br /&gt;
# Typo3 - Dummy auf den Server laden&lt;br /&gt;
# Aus dem Installscript /typo3/install/index.php die die() Funktion auskommentieren&lt;br /&gt;
# Install Skript im Browser aufrufen (Standard Passwort ist joh316)&lt;br /&gt;
# Passwort ändern !! und neu einloggen (evt. Schreibrecht für /typo3/typo3conf/localconf.php setzten)&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration ==&lt;br /&gt;
&lt;br /&gt;
# Schreibrechte für die rot markierten Ordner ändern und den den fileadmin Ordner ebenfalls schreibbar machen.&lt;br /&gt;
# Datenbank Zugangsdaten eingeben. Host ist in der Regel &amp;#039;localhost&amp;#039;&lt;br /&gt;
# Update localconf.php klicken dann click to continue&lt;br /&gt;
# Jetzt die Datenbank im neuen Dropdownfeld. Auswählen&lt;br /&gt;
# Encryption key: Generate Knopf klicken&lt;br /&gt;
&lt;br /&gt;
== Database Analyser ==&lt;br /&gt;
# Benötigte Tabellen anlegen: Compare klicken - dann write to database&lt;br /&gt;
# Dump static data IMPORT  	&lt;br /&gt;
# (Notwendig?) Tabellen füllen mit statischen Templates typo3conf/database.sql (1.1 M) ebenfalls Compare und write to database&lt;br /&gt;
# admin User erstellen damit man sich im Backend einloggen kann.&lt;br /&gt;
&lt;br /&gt;
== All Configuration ==&lt;br /&gt;
# [gdlib_2] auf 1 stellen Wenn GDlib Version 2 Verwendet wird&lt;br /&gt;
# [TTFdpi] muß auf 96 stehen wenn die Schrift im Bild bei &amp;#039;Basic Configuration&amp;#039; nicht vollständig angezeigt wird.&lt;br /&gt;
# [noEdit] auf 0 stellen dann kann man vom Backend-Bereich Text-Dateien (z.B. CSS-Files) verändern.&lt;br /&gt;
# [warning_email_addr] setzten dann bekommt man eine Email wenn sich jemand viermal falsch einloggt&lt;br /&gt;
&lt;br /&gt;
== Image Magick über SSH Zugang auf VMWare ==&lt;br /&gt;
Quelle: http://www.4many.net/imagemagick_setup.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ImageMagick Installation on Virtual Host Account with SSH Access&lt;br /&gt;
Situation: 	Customer got virtual host with ssh access&lt;br /&gt;
TYPO3 was installed&lt;br /&gt;
no ImageMagick&lt;br /&gt;
after installing static linked package imagemagick-4.2.9_i386-static-1.tar.gz&lt;br /&gt;
TYPO3 complained that no valid version could be found&lt;br /&gt;
Problem: 	It turned out that due to the virtual setup and the setup of the Apache the environment got lost and the ImageMagick.so.9 couldn&amp;#039;t be found during the exec()&lt;br /&gt;
Challenge: 	&lt;br /&gt;
&lt;br /&gt;
   1. convince the provider to change the setup&lt;br /&gt;
      Nice try!&lt;br /&gt;
   2. convince the provider to install ImageMagick globally&lt;br /&gt;
      No support for third party products&lt;br /&gt;
   3. fix it in TYPO3 to pass environment&lt;br /&gt;
      possible solution, just no time to do so&lt;br /&gt;
&lt;br /&gt;
Solution: 	Fixed it on script level&lt;br /&gt;
&lt;br /&gt;
   1. move required executable to *.bin, i.e.&lt;br /&gt;
&lt;br /&gt;
      mv convert convert.bin&lt;br /&gt;
      mv combine combine.bin&lt;br /&gt;
      mv identify identify.bin&lt;br /&gt;
&lt;br /&gt;
   2. create script&lt;br /&gt;
&lt;br /&gt;
      pico convert&lt;br /&gt;
&lt;br /&gt;
   3. content of the script file&lt;br /&gt;
&lt;br /&gt;
      #!/usr/local/bin/bash&lt;br /&gt;
      export PATH; PATH=&amp;quot;/home/usr203227042/ImageMagick-4.2.9/bin:$PATH&amp;quot;&lt;br /&gt;
      export MAGICK_HOME=&amp;quot;/home/usr203227042/ImageMagick-4.2.9&amp;quot;&lt;br /&gt;
      export LD_LIBRARY_PATH=&amp;quot;/home/usr203227042/ImageMagick-4.2.9/lib&amp;quot;&lt;br /&gt;
      /home/usr203227042/ImageMagick-4.2.9/bin/convert.bin $*&lt;br /&gt;
&lt;br /&gt;
   4. make script executable&lt;br /&gt;
&lt;br /&gt;
      chmod 755 convert&lt;br /&gt;
&lt;br /&gt;
   5. repeat steps 2.-4. for combine and identify and don&amp;#039;t forget to change convert.bin to the appropriate value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=18426</id>
		<title>Typo3 - TS Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=18426"/>
		<updated>2006-05-22T10:26:24Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: /* XHTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Typo3 - TypoScript Grundeinstellungen ==&lt;br /&gt;
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
=== XHTML ===&lt;br /&gt;
 # DOCTYPE auf XHTML Transitional umstellen &lt;br /&gt;
 config.doctype = xhtml_trans&lt;br /&gt;
 # XML-Prolog aus&lt;br /&gt;
 config.xmlprologue = none&lt;br /&gt;
 # Standard XHTML Filter aktivieren (Tags werden kleingeschrieben, ...)&lt;br /&gt;
 config.xhtml_cleaning = all&lt;br /&gt;
 # HTML Atribute setzen&lt;br /&gt;
 config.htmlTag_setParams = xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;de&amp;quot; lang=&amp;quot;de&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Spracheinstellungen ==&lt;br /&gt;
&lt;br /&gt;
== HTML-Template einbinden ==&lt;br /&gt;
siehe auch: [[Typo3 - HTML-Templates]]&lt;br /&gt;
Beispiel (das page Objekt muß natürlich vorher definiert werden):&lt;br /&gt;
&lt;br /&gt;
Im TS Template Setup:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
 page.10 = TEMPLATE&lt;br /&gt;
 page.10{&lt;br /&gt;
   template = FILE&lt;br /&gt;
   template.file = fileadmin/templates/main.html&lt;br /&gt;
 &lt;br /&gt;
   ### Subparts ansprechen ###&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
   # Rootline (Pathway) einfügen ###&lt;br /&gt;
   subparts.ROOTLINE &amp;lt; temp.rootline_html&lt;br /&gt;
   &lt;br /&gt;
   # Hauptinhalt&lt;br /&gt;
   subparts.CONTENT &amp;lt; layoutWrap&lt;br /&gt;
   subparts.CONTENT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;   &lt;br /&gt;
   &lt;br /&gt;
   #Inhalt rechts&lt;br /&gt;
   subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
   # Rand bzw. Header&lt;br /&gt;
   subparts.HEADER &amp;lt; styles.content.getBorder&lt;br /&gt;
   subparts.HEADER &amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
   # subparts.HEADER &amp;lt; temp.flashHeader&lt;br /&gt;
  &lt;br /&gt;
   ### Hauptnavigation ###&lt;br /&gt;
   subparts.NAVI_LINKS &amp;lt; temp.navi_gLayer&lt;br /&gt;
  &lt;br /&gt;
   ### rechte Navi ###&lt;br /&gt;
   subparts.NAVI_RECHTS &amp;lt;temp.naviGRight&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Page Objekt ==&lt;br /&gt;
&lt;br /&gt;
== statische Seiten Simulieren ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Admin Panel ==&lt;br /&gt;
&lt;br /&gt;
== Spamschutz für Email Adressen ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für Bilder ==&lt;br /&gt;
Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)&lt;br /&gt;
&lt;br /&gt;
== Link to Top ==&lt;br /&gt;
&lt;br /&gt;
== Darstellung von Tabellen ==&lt;br /&gt;
Betrifft hauptsächlich das static Template content(default)&lt;br /&gt;
&lt;br /&gt;
== clear.gif und Absätze loswerden ==&lt;br /&gt;
content(default)&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
_self oder _blank, aussehen...&lt;br /&gt;
styles.content.links.extTarget (bei css_styled_content)&lt;br /&gt;
&lt;br /&gt;
== Listenpunkte und Aufzählungen ==&lt;br /&gt;
&lt;br /&gt;
== Layoutauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Inline CSS loswerden ==&lt;br /&gt;
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.&lt;br /&gt;
&lt;br /&gt;
== CSS per random laden ==&lt;br /&gt;
&lt;br /&gt;
im typoscritp template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Configuring the Auto-Parser for main template:&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1 {&lt;br /&gt;
    # Read the template file:&lt;br /&gt;
  content = FILE&lt;br /&gt;
  content.file = fileadmin/template/rasterpage-startseite-css.html&lt;br /&gt;
 &lt;br /&gt;
    # Here we define which elements in the HTML that &lt;br /&gt;
    # should be wrapped in subpart-comments:&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.rmTagSections = title&lt;br /&gt;
    &lt;br /&gt;
    TD.all = 1&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
    # Prefix all relative paths with this value:&lt;br /&gt;
  relPathPrefix = fileadmin/template/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//----------------------------  random css  ---------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.cssrandom =  PHP_SCRIPT&lt;br /&gt;
temp.cssrandom.file = fileadmin/template/random_css.php&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
# Main TEMPLATE cObject for the HEAD&lt;br /&gt;
temp.headTemplate = TEMPLATE&lt;br /&gt;
temp.headTemplate {&lt;br /&gt;
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:&lt;br /&gt;
  template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
    # Select only the content between the &amp;lt;head&amp;gt;-tags&lt;br /&gt;
   workOnSubpart = DOCUMENT_HEADER&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
/ html templates need a marker named &amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt; in the head&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
   subparts.cssrandom &amp;lt; temp.cssrandom&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
im html-template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;DER TITEL&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und das ist das random_css.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/***********************&lt;br /&gt;
*  Copyright notice&lt;br /&gt;
*  GPL&lt;br /&gt;
*  @author fabian thommen job@fabtho.net&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$relPathPrefix=&amp;#039;fileadmin/template/&amp;#039;;&lt;br /&gt;
$css = array(&amp;#039;eins.css&amp;#039;,&amp;#039;zwei.css&amp;#039;,&amp;#039;drei.css&amp;#039;,&amp;#039;vier.css&amp;#039;);&lt;br /&gt;
$randomzahl = rand(0, count($css)-1);&lt;br /&gt;
$content = &amp;#039;&amp;lt;link href=&amp;quot;&amp;#039;.$relPathPrefix.&amp;#039;css/&amp;#039;.$css[$randomzahl].&amp;#039;&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&amp;#039;;&lt;br /&gt;
if (headers_sent()) {&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JavaScript in externe Datei auslagern ==&lt;br /&gt;
Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern.&lt;br /&gt;
Wie bindet man externes JavaScript ein.&lt;br /&gt;
&lt;br /&gt;
== Ausgabe einer Spalte Wrappen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #Inhalt rechts&lt;br /&gt;
 subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
 #Ganze Spalte Wrappen&lt;br /&gt;
 subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content_right&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
 #Einzelnes Element Wrappen &lt;br /&gt;
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=&amp;lt;div class=&amp;quot;bordered&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen wenn nicht leer ===&lt;br /&gt;
Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rightContent &amp;lt; styles.content.getRight&lt;br /&gt;
temp.rightContent.stdWrap {&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;right-main&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  if.isTrue.numRows &amp;lt; styles.content.getRight&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(TypoWizard.com 9.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Senkrechter Strich bei Wrap ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tt_content.menu.20.2.1.NO.linkWrap = | &amp;amp;#124;&amp;amp;nbsp;|*||*| |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benutzer Funktionen (userFunc) ==&lt;br /&gt;
&lt;br /&gt;
Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class user_UserFunc{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomRecordIds()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Returns a random comma seperated list of IDs&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    table    -    The table to get the record IDs from&lt;br /&gt;
&lt;br /&gt;
     *    pid - The Page ID of the page where the records are located&lt;br /&gt;
&lt;br /&gt;
     *    max - The number of IDs to return&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *    &lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords {&lt;br /&gt;
&lt;br /&gt;
     *      10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.wrap = &amp;lt;div id=&amp;quot;randomRecords&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc = user_UserFunc-&amp;gt;getRandomRecordIds&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.pid = {$lib.randomRecords.pid}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.table = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.max = {$lib.randomRecords.max}&lt;br /&gt;
&lt;br /&gt;
     *      10.split.token = ,&lt;br /&gt;
&lt;br /&gt;
     *      10.split.cObjNum = 1&lt;br /&gt;
&lt;br /&gt;
     *      10.split.1 {&lt;br /&gt;
&lt;br /&gt;
     *        10 = RECORDS&lt;br /&gt;
&lt;br /&gt;
     *        10.dontCheckPid = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.tables = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *        10.source.current = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} = COA&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} {&lt;br /&gt;
&lt;br /&gt;
     *          10 = IMAGE&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import = uploads/tx_bannerimages/&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.data = field:image&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.parameter.data = field:url&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.wrap = &amp;lt;span&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *        }&lt;br /&gt;
&lt;br /&gt;
     *      }&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomRecordIds($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $lCObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $table = $conf[&amp;#039;table&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $pid = $conf[&amp;#039;pid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $query = &amp;#039;SELECT * FROM &amp;#039;.$table.&amp;#039; WHERE pid=&amp;#039;.$pid.$lCObj-&amp;gt;enableFields($table).&amp;#039; ORDER BY RAND() LIMIT 0,&amp;#039;.$max;&lt;br /&gt;
&lt;br /&gt;
        $res = mysql(TYPO3_db,$query);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $ar = array();&lt;br /&gt;
&lt;br /&gt;
        while($row = mysql_fetch_assoc($res)){&lt;br /&gt;
&lt;br /&gt;
            $ar[] = $row[&amp;#039;uid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getCurrentFEuser()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a field from fe_users table&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    field    -    The feusers field to get.&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    The marker ###USER### is replaced with the returned value&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *    10.value = Your name is: ###USER###&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc = user_UserFunc-&amp;gt;getCurrentFEuser&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc.field = name&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getCurrentFeuser($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $field = $conf[&amp;#039;field&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $fedata = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;user[$field];&lt;br /&gt;
&lt;br /&gt;
        return ($fedata ) ? str_replace(&amp;quot;###USER###&amp;quot;,$fedata , $content) : $content;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomItem()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a random item from a comma seperated list of items&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    10 {&lt;br /&gt;
&lt;br /&gt;
     *      10 =IMAGE&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import = uploads/media/&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.field = media&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.postUserFunc = user_UserFunc-&amp;gt;getRandomItems&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomItem($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
                $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
                return $item[rand(0,count($item)-1)];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    function getRandomItems($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
            srand((float) microtime() * 10000000);&lt;br /&gt;
&lt;br /&gt;
            $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
            $max = ($max&amp;gt;0) ? $max : 1;&lt;br /&gt;
&lt;br /&gt;
            $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
            $rkeys = array_rand($item,$max);&lt;br /&gt;
&lt;br /&gt;
            for ( $i=0;$i&amp;lt;$max;$i++) { &lt;br /&gt;
&lt;br /&gt;
                $ar[] = $item[$rkeys[$i]];&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=263</id>
		<title>Typo3 - TS Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=263"/>
		<updated>2006-05-22T10:25:59Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: /* Typo3 - TypoScript Grundeinstellungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Typo3 - TypoScript Grundeinstellungen ==&lt;br /&gt;
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
=== XHTML ===&lt;br /&gt;
# DOCTYPE auf XHTML Transitional umstellen&lt;br /&gt;
config.doctype = xhtml_trans&lt;br /&gt;
# XML-Prolog aus&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
# Standard XHTML Filter aktivieren (Tags werden kleingeschrieben, ...)&lt;br /&gt;
config.xhtml_cleaning = all&lt;br /&gt;
# HTML Atribute setzen&lt;br /&gt;
config.htmlTag_setParams = xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;de&amp;quot; lang=&amp;quot;de&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Spracheinstellungen ==&lt;br /&gt;
&lt;br /&gt;
== HTML-Template einbinden ==&lt;br /&gt;
siehe auch: [[Typo3 - HTML-Templates]]&lt;br /&gt;
Beispiel (das page Objekt muß natürlich vorher definiert werden):&lt;br /&gt;
&lt;br /&gt;
Im TS Template Setup:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
 page.10 = TEMPLATE&lt;br /&gt;
 page.10{&lt;br /&gt;
   template = FILE&lt;br /&gt;
   template.file = fileadmin/templates/main.html&lt;br /&gt;
 &lt;br /&gt;
   ### Subparts ansprechen ###&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
   # Rootline (Pathway) einfügen ###&lt;br /&gt;
   subparts.ROOTLINE &amp;lt; temp.rootline_html&lt;br /&gt;
   &lt;br /&gt;
   # Hauptinhalt&lt;br /&gt;
   subparts.CONTENT &amp;lt; layoutWrap&lt;br /&gt;
   subparts.CONTENT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;   &lt;br /&gt;
   &lt;br /&gt;
   #Inhalt rechts&lt;br /&gt;
   subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
   # Rand bzw. Header&lt;br /&gt;
   subparts.HEADER &amp;lt; styles.content.getBorder&lt;br /&gt;
   subparts.HEADER &amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
   # subparts.HEADER &amp;lt; temp.flashHeader&lt;br /&gt;
  &lt;br /&gt;
   ### Hauptnavigation ###&lt;br /&gt;
   subparts.NAVI_LINKS &amp;lt; temp.navi_gLayer&lt;br /&gt;
  &lt;br /&gt;
   ### rechte Navi ###&lt;br /&gt;
   subparts.NAVI_RECHTS &amp;lt;temp.naviGRight&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Page Objekt ==&lt;br /&gt;
&lt;br /&gt;
== statische Seiten Simulieren ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Admin Panel ==&lt;br /&gt;
&lt;br /&gt;
== Spamschutz für Email Adressen ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für Bilder ==&lt;br /&gt;
Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)&lt;br /&gt;
&lt;br /&gt;
== Link to Top ==&lt;br /&gt;
&lt;br /&gt;
== Darstellung von Tabellen ==&lt;br /&gt;
Betrifft hauptsächlich das static Template content(default)&lt;br /&gt;
&lt;br /&gt;
== clear.gif und Absätze loswerden ==&lt;br /&gt;
content(default)&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
_self oder _blank, aussehen...&lt;br /&gt;
styles.content.links.extTarget (bei css_styled_content)&lt;br /&gt;
&lt;br /&gt;
== Listenpunkte und Aufzählungen ==&lt;br /&gt;
&lt;br /&gt;
== Layoutauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Inline CSS loswerden ==&lt;br /&gt;
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.&lt;br /&gt;
&lt;br /&gt;
== CSS per random laden ==&lt;br /&gt;
&lt;br /&gt;
im typoscritp template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Configuring the Auto-Parser for main template:&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1 {&lt;br /&gt;
    # Read the template file:&lt;br /&gt;
  content = FILE&lt;br /&gt;
  content.file = fileadmin/template/rasterpage-startseite-css.html&lt;br /&gt;
 &lt;br /&gt;
    # Here we define which elements in the HTML that &lt;br /&gt;
    # should be wrapped in subpart-comments:&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.rmTagSections = title&lt;br /&gt;
    &lt;br /&gt;
    TD.all = 1&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
    # Prefix all relative paths with this value:&lt;br /&gt;
  relPathPrefix = fileadmin/template/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//----------------------------  random css  ---------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.cssrandom =  PHP_SCRIPT&lt;br /&gt;
temp.cssrandom.file = fileadmin/template/random_css.php&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
# Main TEMPLATE cObject for the HEAD&lt;br /&gt;
temp.headTemplate = TEMPLATE&lt;br /&gt;
temp.headTemplate {&lt;br /&gt;
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:&lt;br /&gt;
  template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
    # Select only the content between the &amp;lt;head&amp;gt;-tags&lt;br /&gt;
   workOnSubpart = DOCUMENT_HEADER&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
/ html templates need a marker named &amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt; in the head&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
   subparts.cssrandom &amp;lt; temp.cssrandom&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
im html-template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;DER TITEL&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und das ist das random_css.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/***********************&lt;br /&gt;
*  Copyright notice&lt;br /&gt;
*  GPL&lt;br /&gt;
*  @author fabian thommen job@fabtho.net&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$relPathPrefix=&amp;#039;fileadmin/template/&amp;#039;;&lt;br /&gt;
$css = array(&amp;#039;eins.css&amp;#039;,&amp;#039;zwei.css&amp;#039;,&amp;#039;drei.css&amp;#039;,&amp;#039;vier.css&amp;#039;);&lt;br /&gt;
$randomzahl = rand(0, count($css)-1);&lt;br /&gt;
$content = &amp;#039;&amp;lt;link href=&amp;quot;&amp;#039;.$relPathPrefix.&amp;#039;css/&amp;#039;.$css[$randomzahl].&amp;#039;&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&amp;#039;;&lt;br /&gt;
if (headers_sent()) {&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JavaScript in externe Datei auslagern ==&lt;br /&gt;
Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern.&lt;br /&gt;
Wie bindet man externes JavaScript ein.&lt;br /&gt;
&lt;br /&gt;
== Ausgabe einer Spalte Wrappen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #Inhalt rechts&lt;br /&gt;
 subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
 #Ganze Spalte Wrappen&lt;br /&gt;
 subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content_right&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
 #Einzelnes Element Wrappen &lt;br /&gt;
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=&amp;lt;div class=&amp;quot;bordered&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen wenn nicht leer ===&lt;br /&gt;
Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rightContent &amp;lt; styles.content.getRight&lt;br /&gt;
temp.rightContent.stdWrap {&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;right-main&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  if.isTrue.numRows &amp;lt; styles.content.getRight&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(TypoWizard.com 9.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Senkrechter Strich bei Wrap ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tt_content.menu.20.2.1.NO.linkWrap = | &amp;amp;#124;&amp;amp;nbsp;|*||*| |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benutzer Funktionen (userFunc) ==&lt;br /&gt;
&lt;br /&gt;
Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class user_UserFunc{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomRecordIds()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Returns a random comma seperated list of IDs&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    table    -    The table to get the record IDs from&lt;br /&gt;
&lt;br /&gt;
     *    pid - The Page ID of the page where the records are located&lt;br /&gt;
&lt;br /&gt;
     *    max - The number of IDs to return&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *    &lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords {&lt;br /&gt;
&lt;br /&gt;
     *      10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.wrap = &amp;lt;div id=&amp;quot;randomRecords&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc = user_UserFunc-&amp;gt;getRandomRecordIds&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.pid = {$lib.randomRecords.pid}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.table = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.max = {$lib.randomRecords.max}&lt;br /&gt;
&lt;br /&gt;
     *      10.split.token = ,&lt;br /&gt;
&lt;br /&gt;
     *      10.split.cObjNum = 1&lt;br /&gt;
&lt;br /&gt;
     *      10.split.1 {&lt;br /&gt;
&lt;br /&gt;
     *        10 = RECORDS&lt;br /&gt;
&lt;br /&gt;
     *        10.dontCheckPid = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.tables = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *        10.source.current = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} = COA&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} {&lt;br /&gt;
&lt;br /&gt;
     *          10 = IMAGE&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import = uploads/tx_bannerimages/&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.data = field:image&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.parameter.data = field:url&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.wrap = &amp;lt;span&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *        }&lt;br /&gt;
&lt;br /&gt;
     *      }&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomRecordIds($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $lCObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $table = $conf[&amp;#039;table&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $pid = $conf[&amp;#039;pid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $query = &amp;#039;SELECT * FROM &amp;#039;.$table.&amp;#039; WHERE pid=&amp;#039;.$pid.$lCObj-&amp;gt;enableFields($table).&amp;#039; ORDER BY RAND() LIMIT 0,&amp;#039;.$max;&lt;br /&gt;
&lt;br /&gt;
        $res = mysql(TYPO3_db,$query);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $ar = array();&lt;br /&gt;
&lt;br /&gt;
        while($row = mysql_fetch_assoc($res)){&lt;br /&gt;
&lt;br /&gt;
            $ar[] = $row[&amp;#039;uid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getCurrentFEuser()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a field from fe_users table&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    field    -    The feusers field to get.&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    The marker ###USER### is replaced with the returned value&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *    10.value = Your name is: ###USER###&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc = user_UserFunc-&amp;gt;getCurrentFEuser&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc.field = name&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getCurrentFeuser($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $field = $conf[&amp;#039;field&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $fedata = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;user[$field];&lt;br /&gt;
&lt;br /&gt;
        return ($fedata ) ? str_replace(&amp;quot;###USER###&amp;quot;,$fedata , $content) : $content;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomItem()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a random item from a comma seperated list of items&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    10 {&lt;br /&gt;
&lt;br /&gt;
     *      10 =IMAGE&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import = uploads/media/&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.field = media&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.postUserFunc = user_UserFunc-&amp;gt;getRandomItems&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomItem($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
                $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
                return $item[rand(0,count($item)-1)];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    function getRandomItems($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
            srand((float) microtime() * 10000000);&lt;br /&gt;
&lt;br /&gt;
            $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
            $max = ($max&amp;gt;0) ? $max : 1;&lt;br /&gt;
&lt;br /&gt;
            $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
            $rkeys = array_rand($item,$max);&lt;br /&gt;
&lt;br /&gt;
            for ( $i=0;$i&amp;lt;$max;$i++) { &lt;br /&gt;
&lt;br /&gt;
                $ar[] = $item[$rkeys[$i]];&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=262</id>
		<title>Typo3 - TS Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=262"/>
		<updated>2006-05-22T09:51:05Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: /* Benutzer Funktionen (userFunc) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Typo3 - TypoScript Grundeinstellungen ==&lt;br /&gt;
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spracheinstellungen ==&lt;br /&gt;
&lt;br /&gt;
== HTML-Template einbinden ==&lt;br /&gt;
siehe auch: [[Typo3 - HTML-Templates]]&lt;br /&gt;
Beispiel (das page Objekt muß natürlich vorher definiert werden):&lt;br /&gt;
&lt;br /&gt;
Im TS Template Setup:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
 page.10 = TEMPLATE&lt;br /&gt;
 page.10{&lt;br /&gt;
   template = FILE&lt;br /&gt;
   template.file = fileadmin/templates/main.html&lt;br /&gt;
 &lt;br /&gt;
   ### Subparts ansprechen ###&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
   # Rootline (Pathway) einfügen ###&lt;br /&gt;
   subparts.ROOTLINE &amp;lt; temp.rootline_html&lt;br /&gt;
   &lt;br /&gt;
   # Hauptinhalt&lt;br /&gt;
   subparts.CONTENT &amp;lt; layoutWrap&lt;br /&gt;
   subparts.CONTENT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;   &lt;br /&gt;
   &lt;br /&gt;
   #Inhalt rechts&lt;br /&gt;
   subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
   # Rand bzw. Header&lt;br /&gt;
   subparts.HEADER &amp;lt; styles.content.getBorder&lt;br /&gt;
   subparts.HEADER &amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
   # subparts.HEADER &amp;lt; temp.flashHeader&lt;br /&gt;
  &lt;br /&gt;
   ### Hauptnavigation ###&lt;br /&gt;
   subparts.NAVI_LINKS &amp;lt; temp.navi_gLayer&lt;br /&gt;
  &lt;br /&gt;
   ### rechte Navi ###&lt;br /&gt;
   subparts.NAVI_RECHTS &amp;lt;temp.naviGRight&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Page Objekt ==&lt;br /&gt;
&lt;br /&gt;
== statische Seiten Simulieren ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Admin Panel ==&lt;br /&gt;
&lt;br /&gt;
== Spamschutz für Email Adressen ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für Bilder ==&lt;br /&gt;
Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)&lt;br /&gt;
&lt;br /&gt;
== Link to Top ==&lt;br /&gt;
&lt;br /&gt;
== Darstellung von Tabellen ==&lt;br /&gt;
Betrifft hauptsächlich das static Template content(default)&lt;br /&gt;
&lt;br /&gt;
== clear.gif und Absätze loswerden ==&lt;br /&gt;
content(default)&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
_self oder _blank, aussehen...&lt;br /&gt;
styles.content.links.extTarget (bei css_styled_content)&lt;br /&gt;
&lt;br /&gt;
== Listenpunkte und Aufzählungen ==&lt;br /&gt;
&lt;br /&gt;
== Layoutauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Inline CSS loswerden ==&lt;br /&gt;
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.&lt;br /&gt;
&lt;br /&gt;
== CSS per random laden ==&lt;br /&gt;
&lt;br /&gt;
im typoscritp template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Configuring the Auto-Parser for main template:&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1 {&lt;br /&gt;
    # Read the template file:&lt;br /&gt;
  content = FILE&lt;br /&gt;
  content.file = fileadmin/template/rasterpage-startseite-css.html&lt;br /&gt;
 &lt;br /&gt;
    # Here we define which elements in the HTML that &lt;br /&gt;
    # should be wrapped in subpart-comments:&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.rmTagSections = title&lt;br /&gt;
    &lt;br /&gt;
    TD.all = 1&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
    # Prefix all relative paths with this value:&lt;br /&gt;
  relPathPrefix = fileadmin/template/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//----------------------------  random css  ---------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.cssrandom =  PHP_SCRIPT&lt;br /&gt;
temp.cssrandom.file = fileadmin/template/random_css.php&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
# Main TEMPLATE cObject for the HEAD&lt;br /&gt;
temp.headTemplate = TEMPLATE&lt;br /&gt;
temp.headTemplate {&lt;br /&gt;
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:&lt;br /&gt;
  template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
    # Select only the content between the &amp;lt;head&amp;gt;-tags&lt;br /&gt;
   workOnSubpart = DOCUMENT_HEADER&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
/ html templates need a marker named &amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt; in the head&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
   subparts.cssrandom &amp;lt; temp.cssrandom&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
im html-template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;DER TITEL&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und das ist das random_css.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/***********************&lt;br /&gt;
*  Copyright notice&lt;br /&gt;
*  GPL&lt;br /&gt;
*  @author fabian thommen job@fabtho.net&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$relPathPrefix=&amp;#039;fileadmin/template/&amp;#039;;&lt;br /&gt;
$css = array(&amp;#039;eins.css&amp;#039;,&amp;#039;zwei.css&amp;#039;,&amp;#039;drei.css&amp;#039;,&amp;#039;vier.css&amp;#039;);&lt;br /&gt;
$randomzahl = rand(0, count($css)-1);&lt;br /&gt;
$content = &amp;#039;&amp;lt;link href=&amp;quot;&amp;#039;.$relPathPrefix.&amp;#039;css/&amp;#039;.$css[$randomzahl].&amp;#039;&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&amp;#039;;&lt;br /&gt;
if (headers_sent()) {&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JavaScript in externe Datei auslagern ==&lt;br /&gt;
Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern.&lt;br /&gt;
Wie bindet man externes JavaScript ein.&lt;br /&gt;
&lt;br /&gt;
== Ausgabe einer Spalte Wrappen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #Inhalt rechts&lt;br /&gt;
 subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
 #Ganze Spalte Wrappen&lt;br /&gt;
 subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content_right&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
 #Einzelnes Element Wrappen &lt;br /&gt;
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=&amp;lt;div class=&amp;quot;bordered&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen wenn nicht leer ===&lt;br /&gt;
Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rightContent &amp;lt; styles.content.getRight&lt;br /&gt;
temp.rightContent.stdWrap {&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;right-main&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  if.isTrue.numRows &amp;lt; styles.content.getRight&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(TypoWizard.com 9.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Senkrechter Strich bei Wrap ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tt_content.menu.20.2.1.NO.linkWrap = | &amp;amp;#124;&amp;amp;nbsp;|*||*| |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benutzer Funktionen (userFunc) ==&lt;br /&gt;
&lt;br /&gt;
Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class user_UserFunc{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomRecordIds()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Returns a random comma seperated list of IDs&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    table    -    The table to get the record IDs from&lt;br /&gt;
&lt;br /&gt;
     *    pid - The Page ID of the page where the records are located&lt;br /&gt;
&lt;br /&gt;
     *    max - The number of IDs to return&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *    &lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords {&lt;br /&gt;
&lt;br /&gt;
     *      10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.wrap = &amp;lt;div id=&amp;quot;randomRecords&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc = user_UserFunc-&amp;gt;getRandomRecordIds&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.pid = {$lib.randomRecords.pid}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.table = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.max = {$lib.randomRecords.max}&lt;br /&gt;
&lt;br /&gt;
     *      10.split.token = ,&lt;br /&gt;
&lt;br /&gt;
     *      10.split.cObjNum = 1&lt;br /&gt;
&lt;br /&gt;
     *      10.split.1 {&lt;br /&gt;
&lt;br /&gt;
     *        10 = RECORDS&lt;br /&gt;
&lt;br /&gt;
     *        10.dontCheckPid = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.tables = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *        10.source.current = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} = COA&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} {&lt;br /&gt;
&lt;br /&gt;
     *          10 = IMAGE&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import = uploads/tx_bannerimages/&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.data = field:image&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.parameter.data = field:url&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.wrap = &amp;lt;span&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *        }&lt;br /&gt;
&lt;br /&gt;
     *      }&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomRecordIds($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $lCObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $table = $conf[&amp;#039;table&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $pid = $conf[&amp;#039;pid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $query = &amp;#039;SELECT * FROM &amp;#039;.$table.&amp;#039; WHERE pid=&amp;#039;.$pid.$lCObj-&amp;gt;enableFields($table).&amp;#039; ORDER BY RAND() LIMIT 0,&amp;#039;.$max;&lt;br /&gt;
&lt;br /&gt;
        $res = mysql(TYPO3_db,$query);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $ar = array();&lt;br /&gt;
&lt;br /&gt;
        while($row = mysql_fetch_assoc($res)){&lt;br /&gt;
&lt;br /&gt;
            $ar[] = $row[&amp;#039;uid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getCurrentFEuser()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a field from fe_users table&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    field    -    The feusers field to get.&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    The marker ###USER### is replaced with the returned value&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *    10.value = Your name is: ###USER###&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc = user_UserFunc-&amp;gt;getCurrentFEuser&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc.field = name&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getCurrentFeuser($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $field = $conf[&amp;#039;field&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $fedata = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;user[$field];&lt;br /&gt;
&lt;br /&gt;
        return ($fedata ) ? str_replace(&amp;quot;###USER###&amp;quot;,$fedata , $content) : $content;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomItem()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a random item from a comma seperated list of items&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    10 {&lt;br /&gt;
&lt;br /&gt;
     *      10 =IMAGE&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import = uploads/media/&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.field = media&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.postUserFunc = user_UserFunc-&amp;gt;getRandomItems&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomItem($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
                $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
                return $item[rand(0,count($item)-1)];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    function getRandomItems($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
            srand((float) microtime() * 10000000);&lt;br /&gt;
&lt;br /&gt;
            $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
            $max = ($max&amp;gt;0) ? $max : 1;&lt;br /&gt;
&lt;br /&gt;
            $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
            $rkeys = array_rand($item,$max);&lt;br /&gt;
&lt;br /&gt;
            for ( $i=0;$i&amp;lt;$max;$i++) { &lt;br /&gt;
&lt;br /&gt;
                $ar[] = $item[$rkeys[$i]];&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=261</id>
		<title>Typo3 - TS Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TS_Templates&amp;diff=261"/>
		<updated>2006-05-22T09:50:40Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: /* Senkrechter Strich bei Wrap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Typo3 - TypoScript Grundeinstellungen ==&lt;br /&gt;
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spracheinstellungen ==&lt;br /&gt;
&lt;br /&gt;
== HTML-Template einbinden ==&lt;br /&gt;
siehe auch: [[Typo3 - HTML-Templates]]&lt;br /&gt;
Beispiel (das page Objekt muß natürlich vorher definiert werden):&lt;br /&gt;
&lt;br /&gt;
Im TS Template Setup:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
 page.10 = TEMPLATE&lt;br /&gt;
 page.10{&lt;br /&gt;
   template = FILE&lt;br /&gt;
   template.file = fileadmin/templates/main.html&lt;br /&gt;
 &lt;br /&gt;
   ### Subparts ansprechen ###&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
   # Rootline (Pathway) einfügen ###&lt;br /&gt;
   subparts.ROOTLINE &amp;lt; temp.rootline_html&lt;br /&gt;
   &lt;br /&gt;
   # Hauptinhalt&lt;br /&gt;
   subparts.CONTENT &amp;lt; layoutWrap&lt;br /&gt;
   subparts.CONTENT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;   &lt;br /&gt;
   &lt;br /&gt;
   #Inhalt rechts&lt;br /&gt;
   subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
   # Rand bzw. Header&lt;br /&gt;
   subparts.HEADER &amp;lt; styles.content.getBorder&lt;br /&gt;
   subparts.HEADER &amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
   # subparts.HEADER &amp;lt; temp.flashHeader&lt;br /&gt;
  &lt;br /&gt;
   ### Hauptnavigation ###&lt;br /&gt;
   subparts.NAVI_LINKS &amp;lt; temp.navi_gLayer&lt;br /&gt;
  &lt;br /&gt;
   ### rechte Navi ###&lt;br /&gt;
   subparts.NAVI_RECHTS &amp;lt;temp.naviGRight&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Page Objekt ==&lt;br /&gt;
&lt;br /&gt;
== statische Seiten Simulieren ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Admin Panel ==&lt;br /&gt;
&lt;br /&gt;
== Spamschutz für Email Adressen ==&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für Bilder ==&lt;br /&gt;
Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)&lt;br /&gt;
&lt;br /&gt;
== Link to Top ==&lt;br /&gt;
&lt;br /&gt;
== Darstellung von Tabellen ==&lt;br /&gt;
Betrifft hauptsächlich das static Template content(default)&lt;br /&gt;
&lt;br /&gt;
== clear.gif und Absätze loswerden ==&lt;br /&gt;
content(default)&lt;br /&gt;
&lt;br /&gt;
== externe Links ==&lt;br /&gt;
_self oder _blank, aussehen...&lt;br /&gt;
styles.content.links.extTarget (bei css_styled_content)&lt;br /&gt;
&lt;br /&gt;
== Listenpunkte und Aufzählungen ==&lt;br /&gt;
&lt;br /&gt;
== Layoutauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Inline CSS loswerden ==&lt;br /&gt;
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.&lt;br /&gt;
&lt;br /&gt;
== CSS per random laden ==&lt;br /&gt;
&lt;br /&gt;
im typoscritp template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Configuring the Auto-Parser for main template:&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1 {&lt;br /&gt;
    # Read the template file:&lt;br /&gt;
  content = FILE&lt;br /&gt;
  content.file = fileadmin/template/rasterpage-startseite-css.html&lt;br /&gt;
 &lt;br /&gt;
    # Here we define which elements in the HTML that &lt;br /&gt;
    # should be wrapped in subpart-comments:&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.rmTagSections = title&lt;br /&gt;
    &lt;br /&gt;
    TD.all = 1&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
    # Prefix all relative paths with this value:&lt;br /&gt;
  relPathPrefix = fileadmin/template/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//----------------------------  random css  ---------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.cssrandom =  PHP_SCRIPT&lt;br /&gt;
temp.cssrandom.file = fileadmin/template/random_css.php&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
# Main TEMPLATE cObject for the HEAD&lt;br /&gt;
temp.headTemplate = TEMPLATE&lt;br /&gt;
temp.headTemplate {&lt;br /&gt;
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:&lt;br /&gt;
  template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
    # Select only the content between the &amp;lt;head&amp;gt;-tags&lt;br /&gt;
   workOnSubpart = DOCUMENT_HEADER&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
/ html templates need a marker named &amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt; in the head&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
   subparts.cssrandom &amp;lt; temp.cssrandom&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
im html-template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;DER TITEL&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--###cssrandom### begin --&amp;gt;random css&amp;lt;!--###cssrandom### end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und das ist das random_css.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/***********************&lt;br /&gt;
*  Copyright notice&lt;br /&gt;
*  GPL&lt;br /&gt;
*  @author fabian thommen job@fabtho.net&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$relPathPrefix=&amp;#039;fileadmin/template/&amp;#039;;&lt;br /&gt;
$css = array(&amp;#039;eins.css&amp;#039;,&amp;#039;zwei.css&amp;#039;,&amp;#039;drei.css&amp;#039;,&amp;#039;vier.css&amp;#039;);&lt;br /&gt;
$randomzahl = rand(0, count($css)-1);&lt;br /&gt;
$content = &amp;#039;&amp;lt;link href=&amp;quot;&amp;#039;.$relPathPrefix.&amp;#039;css/&amp;#039;.$css[$randomzahl].&amp;#039;&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&amp;#039;;&lt;br /&gt;
if (headers_sent()) {&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JavaScript in externe Datei auslagern ==&lt;br /&gt;
Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern.&lt;br /&gt;
Wie bindet man externes JavaScript ein.&lt;br /&gt;
&lt;br /&gt;
== Ausgabe einer Spalte Wrappen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #Inhalt rechts&lt;br /&gt;
 subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
 #Ganze Spalte Wrappen&lt;br /&gt;
 subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content_right&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
 #Einzelnes Element Wrappen &lt;br /&gt;
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=&amp;lt;div class=&amp;quot;bordered&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen wenn nicht leer ===&lt;br /&gt;
Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rightContent &amp;lt; styles.content.getRight&lt;br /&gt;
temp.rightContent.stdWrap {&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;right-main&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  if.isTrue.numRows &amp;lt; styles.content.getRight&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(TypoWizard.com 9.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Senkrechter Strich bei Wrap ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tt_content.menu.20.2.1.NO.linkWrap = | &amp;amp;#124;&amp;amp;nbsp;|*||*| |&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Benutzer Funktionen (userFunc) ===&lt;br /&gt;
&lt;br /&gt;
Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class user_UserFunc{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomRecordIds()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Returns a random comma seperated list of IDs&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    table    -    The table to get the record IDs from&lt;br /&gt;
&lt;br /&gt;
     *    pid - The Page ID of the page where the records are located&lt;br /&gt;
&lt;br /&gt;
     *    max - The number of IDs to return&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *    &lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    lib.randomRecords {&lt;br /&gt;
&lt;br /&gt;
     *      10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.wrap = &amp;lt;div id=&amp;quot;randomRecords&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc = user_UserFunc-&amp;gt;getRandomRecordIds&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.pid = {$lib.randomRecords.pid}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.table = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *      10.preUserFunc.max = {$lib.randomRecords.max}&lt;br /&gt;
&lt;br /&gt;
     *      10.split.token = ,&lt;br /&gt;
&lt;br /&gt;
     *      10.split.cObjNum = 1&lt;br /&gt;
&lt;br /&gt;
     *      10.split.1 {&lt;br /&gt;
&lt;br /&gt;
     *        10 = RECORDS&lt;br /&gt;
&lt;br /&gt;
     *        10.dontCheckPid = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.tables = {$lib.randomRecords.table}&lt;br /&gt;
&lt;br /&gt;
     *        10.source.current = 1&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} = COA&lt;br /&gt;
&lt;br /&gt;
     *        10.conf.{$lib.randomRecords.table} {&lt;br /&gt;
&lt;br /&gt;
     *          10 = IMAGE&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import = uploads/tx_bannerimages/&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.data = field:image&lt;br /&gt;
&lt;br /&gt;
     *          10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.parameter.data = field:url&lt;br /&gt;
&lt;br /&gt;
     *          10.stdWrap.typolink.wrap = &amp;lt;span&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *        }&lt;br /&gt;
&lt;br /&gt;
     *      }&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomRecordIds($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $lCObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $table = $conf[&amp;#039;table&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $pid = $conf[&amp;#039;pid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $query = &amp;#039;SELECT * FROM &amp;#039;.$table.&amp;#039; WHERE pid=&amp;#039;.$pid.$lCObj-&amp;gt;enableFields($table).&amp;#039; ORDER BY RAND() LIMIT 0,&amp;#039;.$max;&lt;br /&gt;
&lt;br /&gt;
        $res = mysql(TYPO3_db,$query);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $ar = array();&lt;br /&gt;
&lt;br /&gt;
        while($row = mysql_fetch_assoc($res)){&lt;br /&gt;
&lt;br /&gt;
            $ar[] = $row[&amp;#039;uid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getCurrentFEuser()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a field from fe_users table&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    field    -    The feusers field to get.&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    The marker ###USER### is replaced with the returned value&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = TEXT&lt;br /&gt;
&lt;br /&gt;
     *    10.value = Your name is: ###USER###&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc = user_UserFunc-&amp;gt;getCurrentFEuser&lt;br /&gt;
&lt;br /&gt;
     *    10.postUserFunc.field = name&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getCurrentFeuser($content,$conf){&lt;br /&gt;
&lt;br /&gt;
        $field = $conf[&amp;#039;field&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
        $fedata = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;user[$field];&lt;br /&gt;
&lt;br /&gt;
        return ($fedata ) ? str_replace(&amp;quot;###USER###&amp;quot;,$fedata , $content) : $content;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
&lt;br /&gt;
     * Function: getRandomItem()&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Return a random item from a comma seperated list of items&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Parameters:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     * Example:&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     *    10 = COA_INT&lt;br /&gt;
&lt;br /&gt;
     *    10 {&lt;br /&gt;
&lt;br /&gt;
     *      10 =IMAGE&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import = uploads/media/&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject = TEXT&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.field = media&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.cObject.postUserFunc = user_UserFunc-&amp;gt;getRandomItems&lt;br /&gt;
&lt;br /&gt;
     *      10.file.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
     *    }&lt;br /&gt;
&lt;br /&gt;
     *&lt;br /&gt;
&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    function getRandomItem($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
                $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
                return $item[rand(0,count($item)-1)];&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    function getRandomItems($content,$conf) {&lt;br /&gt;
&lt;br /&gt;
        if ($content) {&lt;br /&gt;
&lt;br /&gt;
            srand((float) microtime() * 10000000);&lt;br /&gt;
&lt;br /&gt;
            $max = $conf[&amp;#039;max&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
            $max = ($max&amp;gt;0) ? $max : 1;&lt;br /&gt;
&lt;br /&gt;
            $item = explode(&amp;quot;,&amp;quot;,$content);&lt;br /&gt;
&lt;br /&gt;
            $rkeys = array_rand($item,$max);&lt;br /&gt;
&lt;br /&gt;
            for ( $i=0;$i&amp;lt;$max;$i++) { &lt;br /&gt;
&lt;br /&gt;
                $ar[] = $item[$rkeys[$i]];&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return implode(&amp;quot;,&amp;quot;,$ar);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Tipps_und_Tricks&amp;diff=268</id>
		<title>Typo3 - Tipps und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Tipps_und_Tricks&amp;diff=268"/>
		<updated>2006-05-22T09:46:16Z</updated>

		<summary type="html">&lt;p&gt;84.161.157.121: /* Rendering von Content Elementen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mehr auf [[Typo3 - TS Templates]]&lt;br /&gt;
und: [[Typo3 - Wichtige TypoScript Einstellungen]]&lt;br /&gt;
&lt;br /&gt;
== Rendering von Content Elementen ==&lt;br /&gt;
weitere Infos unter:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Content Elemente anpassen]]&lt;br /&gt;
&lt;br /&gt;
=== Neuste Inhalte anzeigen ===&lt;br /&gt;
Quelle: http://typo3.umloud.dk/index.php?id=360 22.5.2006&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This shows the content elements in the normal column of the page last created/edited.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;tstamp&amp;quot; ONLY get changed/set when you create a new page, or edit the page header NOT when you insert a content element on a page..&lt;br /&gt;
&lt;br /&gt;
lib.newestContent = COA&lt;br /&gt;
lib.newestContent {&lt;br /&gt;
  # First we collect the uids on all levels of the site&lt;br /&gt;
 &lt;br /&gt;
  # Gets the uids on 1st level&lt;br /&gt;
  10 = LOAD_REGISTER&lt;br /&gt;
  10.level1uids.cObject = CONTENT&lt;br /&gt;
  10.level1uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.data = leveluid:0&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Gets the uids on 2nd level&lt;br /&gt;
  20 = LOAD_REGISTER&lt;br /&gt;
  20.level2uids.cObject = CONTENT&lt;br /&gt;
  20.level2uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.cObject = TEXT&lt;br /&gt;
    select.pidInList.cObject.data = register:level1uids&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Gets the uids on 3rd level&lt;br /&gt;
  30 = LOAD_REGISTER&lt;br /&gt;
  30.level3uids.cObject = CONTENT&lt;br /&gt;
  30.level3uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.cObject = TEXT&lt;br /&gt;
    select.pidInList.cObject.data = register:level2uids&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Gets the uids on 4th level&lt;br /&gt;
  40 = LOAD_REGISTER&lt;br /&gt;
  40.level4uids.cObject = CONTENT&lt;br /&gt;
  40.level4uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.cObject = TEXT&lt;br /&gt;
    select.pidInList.cObject.data = register:level3uids&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Gets the uids on 5th level&lt;br /&gt;
  50 = LOAD_REGISTER&lt;br /&gt;
  50.level5uids.cObject = CONTENT&lt;br /&gt;
  50.level5uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.cObject = TEXT&lt;br /&gt;
    select.pidInList.cObject.data = register:level4uids&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Gets the uids on 6th level&lt;br /&gt;
  60 = LOAD_REGISTER&lt;br /&gt;
  60.level5uids.cObject = CONTENT&lt;br /&gt;
  60.level5uids.cObject {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select.pidInList.cObject = TEXT&lt;br /&gt;
    select.pidInList.cObject.data = register:level5uids&lt;br /&gt;
    renderObj = TEXT&lt;br /&gt;
    renderObj.field = uid&lt;br /&gt;
    renderObj.wrap = |,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # next we combine all of them into one list of uids&lt;br /&gt;
  70 = LOAD_REGISTER&lt;br /&gt;
  70.alluids.cObject = COA&lt;br /&gt;
  70.alluids.cObject {&lt;br /&gt;
    10 = TEXT&lt;br /&gt;
    10.data = register:level1uids&lt;br /&gt;
&lt;br /&gt;
    20 = TEXT&lt;br /&gt;
    20.data = register:level2uids&lt;br /&gt;
&lt;br /&gt;
    30 = TEXT&lt;br /&gt;
    30.data = register:level3uids&lt;br /&gt;
&lt;br /&gt;
    40 = TEXT&lt;br /&gt;
    40.data = register:level4uids&lt;br /&gt;
&lt;br /&gt;
    50 = TEXT&lt;br /&gt;
    50.data = register:level5uids&lt;br /&gt;
&lt;br /&gt;
    60 = TEXT&lt;br /&gt;
    60.data = register:level6uids&lt;br /&gt;
&lt;br /&gt;
    70 = TEXT&lt;br /&gt;
    70.data = leveluid:0&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # Test output&lt;br /&gt;
  #75 = TEXT&lt;br /&gt;
  #75.data = register:alluids&lt;br /&gt;
  #75.wrap = [|]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  # More Testoutput&lt;br /&gt;
  80 = CONTENT&lt;br /&gt;
  80 {&lt;br /&gt;
    table = pages&lt;br /&gt;
    select {&lt;br /&gt;
      pidInList.data = register:alluids&lt;br /&gt;
      orderBy = tstamp DESC&lt;br /&gt;
      max = 1&lt;br /&gt;
    }&lt;br /&gt;
    renderObj = COA&lt;br /&gt;
    renderObj {&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
      10.field = title&lt;br /&gt;
      10.wrap = The newest page is:&amp;amp;nbsp;&amp;lt;b&amp;gt;|&amp;lt;/b&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
      20.field = tstamp&lt;br /&gt;
      20.strftime = %d-%b-%Y %H:%M:%S&lt;br /&gt;
      20.wrap = which was last edited:&amp;amp;nbsp;|&amp;lt;br&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # And the final output of the content elements&lt;br /&gt;
  90 = COA&lt;br /&gt;
  90 {&lt;br /&gt;
    wrap = And here are the content in the normal column of that page:&amp;lt;hr&amp;gt;|&amp;lt;hr&amp;gt;&lt;br /&gt;
    10 = CONTENT&lt;br /&gt;
    10 {&lt;br /&gt;
      table = tt_content&lt;br /&gt;
      select {&lt;br /&gt;
        orderBy = sorting&lt;br /&gt;
        where = colPos=0&lt;br /&gt;
        languageField = sys_language_uid&lt;br /&gt;
        pidInList.cObject = CONTENT&lt;br /&gt;
        pidInList.cObject {&lt;br /&gt;
          table = pages&lt;br /&gt;
          select {&lt;br /&gt;
            pidInList.data = register:alluids&lt;br /&gt;
            orderBy = tstamp DESC&lt;br /&gt;
            max = 1&lt;br /&gt;
          }&lt;br /&gt;
          renderObj = TEXT&lt;br /&gt;
          renderObj.field = uid&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen für Bilder ===&lt;br /&gt;
Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)&lt;br /&gt;
====Border Attribut loswerden====&lt;br /&gt;
config.config.disableImgBorderAttr = 1&lt;br /&gt;
&lt;br /&gt;
Wichtig wenn man mit CSS arbeiten möchte.&lt;br /&gt;
&lt;br /&gt;
=== Link to Top ===&lt;br /&gt;
&lt;br /&gt;
=== Darstellung von Tabellen ===&lt;br /&gt;
Betrifft hauptsächlich das static Template content(default)&lt;br /&gt;
&lt;br /&gt;
=== clear.gif und Absätze loswerden ===&lt;br /&gt;
content(default)&lt;br /&gt;
 # Entfernen der &amp;lt;img src=&amp;quot;clear.gif&amp;#039; ...&amp;gt;&lt;br /&gt;
 content.headerSpace = 0|0&lt;br /&gt;
 content.space = 0|0&lt;br /&gt;
&lt;br /&gt;
=== externe Links ===&lt;br /&gt;
_self oder _blank, aussehen...&lt;br /&gt;
 styles.content.links.extTarget (bei css_styled_content)&lt;br /&gt;
&lt;br /&gt;
=== Links und Sitemap ===&lt;br /&gt;
Die Links einer eingebundenen Sitemap sind standardmäßig auf den Wert &amp;#039;page&amp;#039; eingestellt (Typo 3.8). Das macht nur bei Framesets Sinn.&lt;br /&gt;
&lt;br /&gt;
Die relevanten Setup-Werte die man ändern muß (je nach ausgewählter Sitemap):&lt;br /&gt;
 tt_content.menu.20.1.1.target = _self&lt;br /&gt;
 tt_content.menu.20.2. [...]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Listenpunkte und Aufzählungen ===&lt;br /&gt;
&lt;br /&gt;
=== Layoutauswahl ===&lt;br /&gt;
siehe [[Typo3 - Rahmen (Frames)]] für Rahmen&lt;br /&gt;
&lt;br /&gt;
und [[Typo3 - Backend anpassen]] für Header (Überschriften)&lt;br /&gt;
&lt;br /&gt;
=== Inline CSS loswerden ===&lt;br /&gt;
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.&lt;br /&gt;
&lt;br /&gt;
 # Inline Styles auslagern&lt;br /&gt;
 config.inlineStyle2TempFile = true&lt;br /&gt;
&lt;br /&gt;
=== JavaScript in externe Datei auslagern ===&lt;br /&gt;
Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern.&lt;br /&gt;
Wie bindet man externes JavaScript ein...&lt;br /&gt;
&lt;br /&gt;
siehe unter&lt;br /&gt;
[[Typo3 - HTML Code optimieren]]&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #Inhalt rechts&lt;br /&gt;
 subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
 #Ganze Spalte Wrappen&lt;br /&gt;
 subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content_right&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
 #Einzelnes Element Wrappen &lt;br /&gt;
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=&amp;lt;div class=&amp;quot;bordered&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Ausgabe einer Spalte Wrappen wenn nicht leer ===&lt;br /&gt;
Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rightContent &amp;lt; styles.content.getRight&lt;br /&gt;
temp.rightContent.stdWrap {&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;right-main&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  if.isTrue.numRows &amp;lt; styles.content.getRight&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(TypoWizard.com 9.1.2006)&lt;br /&gt;
&lt;br /&gt;
===p style=&amp;quot;margin:0 0 0 0;&amp;quot; aus dem p-Tag rausnehmen===&lt;br /&gt;
&lt;br /&gt;
 tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes.P.style=&lt;br /&gt;
&lt;br /&gt;
== Backend anpassen ==&lt;br /&gt;
=== Content element wizard ändern ===&lt;br /&gt;
aus http://krungkuene.org/krung/wiki/Typo3.html 18.5.2006&lt;br /&gt;
&lt;br /&gt;
Dafür erweitere die php-Klasse SC_db_new_content_el und speichere diese datei unter typo3conf/ux_SC_db_new_content_el.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class ux_SC_db_new_content_el extends SC_db_new_content_el {&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  // Modify the Wizard Array, which holds the values shown at create new&lt;br /&gt;
  //record page:&lt;br /&gt;
  function wizardArray() {&lt;br /&gt;
    global $LANG,$TBE_MODULES_EXT;&lt;br /&gt;
    &lt;br /&gt;
    $wizardItems = array(&lt;br /&gt;
                         &amp;quot;common&amp;quot; =&amp;gt; array(&amp;quot;header&amp;quot;=&amp;gt;&amp;quot;Typical page content&amp;quot;),&lt;br /&gt;
                         &lt;br /&gt;
                         &amp;#039;common_1&amp;#039; =&amp;gt; array(&lt;br /&gt;
                                             &amp;quot;icon&amp;quot;=&amp;gt;&amp;#039;../typo3conf/hos/intext_left_wi.gif&amp;#039;,&lt;br /&gt;
                                             &amp;#039;title&amp;#039;=&amp;gt;&amp;#039;Text with Image to the left&amp;#039;,&lt;br /&gt;
                                             &amp;#039;description&amp;#039;=&amp;gt;&amp;#039;A regular text element which contains a image positioned left to the text&amp;#039;,&lt;br /&gt;
                                             &amp;#039;params&amp;#039;=&amp;gt;&amp;#039;&amp;amp;defVals[tt_content][CType]=textpic&amp;amp;defVals[tt_content][imageorient]=26&amp;amp;defVals[tt_content][imagewidth]=80&amp;#039;,&lt;br /&gt;
                                             ),&lt;br /&gt;
&lt;br /&gt;
                         &lt;br /&gt;
                         &amp;quot;common_2&amp;quot; =&amp;gt; array(&lt;br /&gt;
                                             &amp;quot;icon&amp;quot;=&amp;gt;&amp;#039;../typo3conf/hos/fdfx_2cols.gif&amp;#039;,&lt;br /&gt;
                                             &amp;quot;title&amp;quot;=&amp;gt;&amp;#039;Two Column Text&amp;#039;,&lt;br /&gt;
                                             &amp;quot;description&amp;quot;=&amp;gt;&amp;#039;A Text with two Column&amp;#039;,&lt;br /&gt;
                                             &amp;#039;params&amp;#039;=&amp;gt;&amp;#039;&amp;amp;defVals[tt_content][CType]=fdfx_2cols_pi1&amp;#039;&lt;br /&gt;
                                             ),&lt;br /&gt;
                         &lt;br /&gt;
&lt;br /&gt;
                         &amp;#039;common_3&amp;#039; =&amp;gt; array(&lt;br /&gt;
                                             &amp;quot;icon&amp;quot;=&amp;gt;&amp;#039;../typo3conf/hos/intext_right_wi.gif&amp;#039;,&lt;br /&gt;
                                             &amp;#039;title&amp;#039;=&amp;gt;&amp;#039;Text with big Image to the right&amp;#039;,&lt;br /&gt;
                                             &amp;#039;description&amp;#039;=&amp;gt;&amp;#039;A regular text element which contains a image positioned right to the text&amp;#039;,&lt;br /&gt;
                                             &amp;#039;params&amp;#039;=&amp;gt;&amp;#039;&amp;amp;defVals[tt_content][CType]=textpic&amp;amp;defVals[tt_content][imageorient]=25&amp;amp;defVals[tt_content][imagewidth]=480&amp;#039;,&lt;br /&gt;
                                             &amp;#039;tt_content_defValues&amp;#039; =&amp;gt; array(&lt;br /&gt;
                                                                             &amp;#039;CType&amp;#039; =&amp;gt; &amp;#039;textpic&amp;#039;,&lt;br /&gt;
                                                                             &amp;#039;imageorient&amp;#039; =&amp;gt; 25,&lt;br /&gt;
                                                                             &amp;#039;imagewidth&amp;#039; =&amp;gt; 480,&lt;br /&gt;
                                                                             )&lt;br /&gt;
                                             ),&lt;br /&gt;
&lt;br /&gt;
                         );&lt;br /&gt;
    &lt;br /&gt;
    return $wizardItems;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um das ganze auch zu verwenden, mache diesen Eintrag in typo3conf/localconf.php&lt;br /&gt;
&lt;br /&gt;
 $TYPO3_CONF_VARS[&amp;quot;BE&amp;quot;][&amp;quot;XCLASS&amp;quot;][&amp;quot;ext/cms/layout/db_new_content_el.php&amp;quot;] = PATH_typo3conf.&amp;quot;class.ux_db_new_content_el.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== Suche ==&lt;br /&gt;
===Index-Suche – kein eigenes Fenster öffnen===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 styles.content.searchresult.resultTarget = _self&lt;br /&gt;
 styles.content.searchresult.target = _self&lt;br /&gt;
&lt;br /&gt;
== Domains anlegen ==&lt;br /&gt;
Todo...&lt;br /&gt;
== Rootline Navigation ==&lt;br /&gt;
Ein Beispiel bei dem zusätzlich Englisch (L=1) berücksichtigt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rootline_html= HMENU&lt;br /&gt;
temp.rootline_html.special = rootline&lt;br /&gt;
temp.rootline_html.special.range = 0|-1&lt;br /&gt;
temp.rootline_html.1 = TMENU&lt;br /&gt;
temp.rootline_html.1 {&lt;br /&gt;
    wrap = Sie sind hier:&amp;amp;nbsp;|&lt;br /&gt;
   # evt. bestimte Seiten ausblenden...&lt;br /&gt;
   excludeUidList =&lt;br /&gt;
   # Sprache mit der ID 1 (Englisch)&lt;br /&gt;
  target = _top&lt;br /&gt;
  NO {&lt;br /&gt;
    linkWrap= &amp;lt;span class=&amp;quot;pathway&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
    # optionSplit: vor erstem item kein delimiter, sonst immer einer&lt;br /&gt;
    allWrap = | |*| &amp;gt;&amp;amp;nbsp;| |*| &lt;br /&gt;
    ATagBeforeWrap = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wrap für Englisch&lt;br /&gt;
[globalVar = GP:L = 1]&lt;br /&gt;
temp.rootline_html.1.wrap = You are here:&amp;amp;nbsp;|&lt;br /&gt;
[global]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mehrsprachigkeit ==&lt;br /&gt;
So baut man mehrsprachige Seiten in Typo3:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Mehrsprachige Seiten]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Mehrsprachige Navigation]]&lt;br /&gt;
&lt;br /&gt;
== Spracheinstellungen ==&lt;br /&gt;
&lt;br /&gt;
== HTML-Template einbinden ==&lt;br /&gt;
siehe auch: [[Typo3 - HTML-Templates]]&lt;br /&gt;
Beispiel (das page Objekt muß natürlich vorher definiert werden):&lt;br /&gt;
&lt;br /&gt;
Im TS Template Setup:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
 page.10 = TEMPLATE&lt;br /&gt;
 page.10{&lt;br /&gt;
   template = FILE&lt;br /&gt;
   template.file = fileadmin/templates/main.html&lt;br /&gt;
 &lt;br /&gt;
   ### Subparts ansprechen ###&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
 &lt;br /&gt;
   # Rootline (Pathway) einfügen ###&lt;br /&gt;
   subparts.ROOTLINE &amp;lt; temp.rootline_html&lt;br /&gt;
   &lt;br /&gt;
   # Hauptinhalt&lt;br /&gt;
   subparts.CONTENT &amp;lt; layoutWrap&lt;br /&gt;
   subparts.CONTENT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;   &lt;br /&gt;
   &lt;br /&gt;
   #Inhalt rechts&lt;br /&gt;
   subparts.CONTENT_RIGHT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.CONTENT_RIGHT.wrap = &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
   # Rand bzw. Header&lt;br /&gt;
   subparts.HEADER &amp;lt; styles.content.getBorder&lt;br /&gt;
   subparts.HEADER &amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt; | &amp;lt;/div&amp;gt;&lt;br /&gt;
   # subparts.HEADER &amp;lt; temp.flashHeader&lt;br /&gt;
  &lt;br /&gt;
   ### Hauptnavigation ###&lt;br /&gt;
   subparts.NAVI_LINKS &amp;lt; temp.navi_gLayer&lt;br /&gt;
  &lt;br /&gt;
   ### rechte Navi ###&lt;br /&gt;
   subparts.NAVI_RECHTS &amp;lt;temp.naviGRight&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellungen für das Page Objekt ==&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Einstellungen ==&lt;br /&gt;
=== statische Seiten Simulieren ===&lt;br /&gt;
Statische Seiten simulieren&lt;br /&gt;
 config.simulateStaticDocuments = PATH_INFO&lt;br /&gt;
 config.simulateStaticDocuments_addTitle = 30&lt;br /&gt;
 config.simulateStaticDocuments = 1&lt;br /&gt;
 config.admPanel = 1&lt;br /&gt;
 config.simulateStaticDocuments_noTypeIfNoTitle = 1&lt;br /&gt;
&lt;br /&gt;
.htaccess Datei für Apache Server nicht vergessen (muß nur unbenannt werden)&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen für das Admin Panel ===&lt;br /&gt;
&lt;br /&gt;
===Email===&lt;br /&gt;
&lt;br /&gt;
==== Spamschutz für Email Adressen ====&lt;br /&gt;
 config.spamProtectEmailAddresses = 1&lt;br /&gt;
 config.spamProtectEmailAddresses_atSubst = (at)&lt;br /&gt;
&lt;br /&gt;
====E-Mail-Absender für automatische E-Mails z.B. über Kontaktformular====&lt;br /&gt;
E-Mail-Adresse&lt;br /&gt;
 plugin.feadmin.dmailsubscription.email = info(at)easy-office4you.de&lt;br /&gt;
E-Mail-Name&lt;br /&gt;
 plugin.feadmin.dmailsubscription.emailName = Barbara Hofbauer&lt;br /&gt;
&lt;br /&gt;
== Typo3 RTE - Einstellungen ==&lt;br /&gt;
===RTE Absatz Formatierung einstellen===&lt;br /&gt;
 lib.parseFunc_RTE {&lt;br /&gt;
 nonTypoTagStdWrap.encapsLines.nonWrappedTag &amp;gt;&lt;br /&gt;
 nonTypoTagStdWrap.encapsLines.wrapNonWrappedLines = | &amp;lt;/br&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===HTML-Area (htmlarea) statt RTE===&lt;br /&gt;
Mit der Extension htmlarea kann man den RTE ersetzen. Er bietet einiges mehr an Bearbeitungsfunktionen (wenn man die denn will) aber vor allem läuft er auch auf Mozilla, Firefox, etc. Browsern.&lt;br /&gt;
&lt;br /&gt;
==htmlarea anpassen==&lt;br /&gt;
Die Möglichkeiten des htmlarea Editors sind oft zuviel des Guten. Die meisten Anpassungen des RTE funktionieren auch im htmlarea. Beispiele:&lt;br /&gt;
&lt;br /&gt;
Minimale Funktionalität&lt;br /&gt;
&lt;br /&gt;
Im Page Setup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTE.default {&lt;br /&gt;
	## Toolbar options applicable to all RTE&amp;#039;s&lt;br /&gt;
	## The TCA configuration may add buttons to the toolbar&lt;br /&gt;
	showButtons =  bold,italic,undo,redo,about&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## front end RTE configuration for the general public (htmlArea RTE only)&lt;br /&gt;
RTE.default.FE &amp;lt; RTE.default&lt;br /&gt;
&lt;br /&gt;
== Header Image austauschen ==&lt;br /&gt;
[[Typo3 - Header Image austauschen]]&lt;/div&gt;</summary>
		<author><name>84.161.157.121</name></author>
	</entry>
</feed>