<?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=91.47.50.190</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=91.47.50.190"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.47.50.190"/>
	<updated>2026-05-06T15:15:20Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1754</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1754"/>
		<updated>2009-04-07T17:19:54Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: /* Tabellen im RTE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Auf Daten zugreifen ==&lt;br /&gt;
Beispiele gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - stdWrap]]&lt;br /&gt;
&lt;br /&gt;
Die stdWrap Eigenschaft steht vielen Objekten zur Verfügung. Wenn Sie vorhanden ist ist Sie der Problemlöser für fast alle Probleme :-).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - TSFE]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Das Media Feld]]&lt;br /&gt;
&lt;br /&gt;
== Standardeinstellungen ==&lt;br /&gt;
[[Typo3 - Standardeinstellungen]]&lt;br /&gt;
&lt;br /&gt;
== Quellcode aufräumen - Sourcecode verbessern - valides XHTML ==&lt;br /&gt;
Der Core produziert seit 4.0 valides XHTML&lt;br /&gt;
&lt;br /&gt;
weitere Hilfen wenn Extensions nicht valide arbeiten bieten:&lt;br /&gt;
&lt;br /&gt;
Installation von Tidy auf dem SErver (aktivieren im Install-Tool)&lt;br /&gt;
&lt;br /&gt;
HTML Cleaner http://typo3.org/extensions/repository/view/qcom_htmlcleaner/2.4.0/&lt;br /&gt;
&lt;br /&gt;
Das Bordeigene HTML-Cleaning: config.xhtml_cleaning = all&lt;br /&gt;
&lt;br /&gt;
Vorsicht bei den Cleanern wenn JavaScript im Spiel ist weil dieser z.T. zerstört werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel aus dem Forum zum Quelltext aufräumen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Einstellen des DocType auf XHTML Transitional&lt;br /&gt;
config.doctype = xhtml_trans&lt;br /&gt;
#XHTML Cleaning aktivieren&lt;br /&gt;
config.xhtml_cleaning = all&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
=== GMenu mit Bildern aus den Seiteneigenschaften (Media-Feld) ===&lt;br /&gt;
Ein Schnipsel vom 12.3.2009 typo3 blogger&lt;br /&gt;
Nicht sehr oft benötigt, aber unter Umständen dennoch hilfreich: ein kleines Copy&amp;amp;Paste Tutorial zur Erstellung eines GMENUs mit Bildern aus dem “media”-Feld der Seiteneigenschaften. Zu beachten gibt es: der GIFBUILDER greift bei diesem Snippet das Bild nicht an, sodass es unverändert im Frontend ausgegeben wird. Dies hatte bei mir den Grund, dass die Website nur aus Bildern besteht und Photoshop nunmal bessere Ergebnisse als ImageMagick bzw. GraphicsMagick liefert - deshalb wollte ich auch nicht, dass er irgendwas an den Bildern verändert oder neu berechnet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.menu = HMENU&lt;br /&gt;
temp.menu {&lt;br /&gt;
	1 = GMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		noBlur = 0&lt;br /&gt;
		NO = 1&lt;br /&gt;
		NO {&lt;br /&gt;
			wrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
			altImgResource.import = uploads/media/&lt;br /&gt;
			altImgResource.import.field = media&lt;br /&gt;
			altImgResource.import.listNum = 0&lt;br /&gt;
 &lt;br /&gt;
			ATagTitle.field = subtitle // title&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		RO = 1&lt;br /&gt;
		RO &amp;lt; .NO&lt;br /&gt;
		RO {&lt;br /&gt;
			altImgResource.import.listNum = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .RO&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.menu &amp;lt; temp.menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Welches Bild (falls mehrere vorhanden sind) TYPO3 nun für das Erzeugen des Menüs nimmt bestimmt folgende Zeile:&lt;br /&gt;
&lt;br /&gt;
 altImgResource.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
Zu beachten gibt es dabei: wie in der Datentechnik üblich fängt man bei 0 zu zählen an, 0 ist dabei das erste Bild, 1 das zweite, 2 das dritte, usw.&lt;br /&gt;
&lt;br /&gt;
=== GMENU und wrapItemAndSub Workaround mit TMENU===&lt;br /&gt;
Ebenfalls von Typo3Blogger&lt;br /&gt;
&lt;br /&gt;
Freunde von semantisch korrektem HTML die auf ein grafisches, mehrstufiges Menü angewiesen sind, werden wissen wovon ich spreche. Man hat ein tolles GMENU gebastelt, welches wunderbare Grafiken liefert und fragt sich “warum ist mein HTML kaputt?”. Nach ein paar Sekunden googlen findet man die Antwort: GMENU fehlt die Eigenschaft “wrapItemAndSub”, mit welchem sich einfach verschachtelte Menüs realisieren lassen. Es gibt viele Ansätze dies zu umgehen, manche arbeiten mit IFSUB, manche verlassen sich auf Tidy. Vor Kurzem stand ich (wieder einmal) vor dem Problem und wollte es einmal anders lösen.&lt;br /&gt;
&lt;br /&gt;
Dabei bin ich auf folgende Lösung gestoßen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mainMenu = HMENU&lt;br /&gt;
temp.mainMenu {&lt;br /&gt;
	1 = TMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
		NO = 1&lt;br /&gt;
        	NO {&lt;br /&gt;
        		wrapItemAndSub = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
        		doNotShowLink = 1&lt;br /&gt;
 &lt;br /&gt;
			RO = 1&lt;br /&gt;
			ATagTitle.field = title&lt;br /&gt;
 &lt;br /&gt;
			beforeImg = GIFBUILDER&lt;br /&gt;
			beforeImg {&lt;br /&gt;
				XY=[20.w]+15,42&lt;br /&gt;
				backColor = #1092AD&lt;br /&gt;
 &lt;br /&gt;
				10 = TEXT&lt;br /&gt;
				10 {&lt;br /&gt;
					text {&lt;br /&gt;
						field = title&lt;br /&gt;
						align = center&lt;br /&gt;
					}			&lt;br /&gt;
 &lt;br /&gt;
					fontFile = fileadmin/font.ttf&lt;br /&gt;
					fontSize = 16&lt;br /&gt;
					fontColor = #FFFFFF&lt;br /&gt;
 &lt;br /&gt;
					offset = 0,34&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
 &lt;br /&gt;
			beforeROImg &amp;lt; .beforeImg&lt;br /&gt;
			beforeROImg.20.fontColor = #FFD20F&lt;br /&gt;
			beforeImgLink = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .NO&lt;br /&gt;
		ACT {&lt;br /&gt;
			RO = 0&lt;br /&gt;
			beforeImg.20.fontColor = #FF0000&lt;br /&gt;
			wrapItemAndSub = &amp;lt;li class=&amp;quot;act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
       2 &amp;lt; .1&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.mainMenu &amp;lt; temp.mainMenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das tolle an dieser Lösung ist nicht nur, dass man wrapItemAndSub verwenden kann, nein auch alle anderen Eigenschaften und Zustände des TMENU stehen einem zur Verfügung!&lt;br /&gt;
&lt;br /&gt;
Ich frage mich, warum wrapItemAndSub bis heute noch nicht in TYPO3 implementiert wurde. Vielleicht wäre es mit der aktuellen Veröffentlichung der TYPO3 4.3 Alpha 2 und der Aufforderung die Feature-Wunschliste zu füllen einmal Zeit diesem Punkt etwas Nachdruck zu verleihen. Falls ihr noch andere Lösungsansätze auf Lager oder bessere Ideen habt, bitte informiert uns in den Comments!&lt;br /&gt;
&lt;br /&gt;
=== Klassisches List Menu ===&lt;br /&gt;
Dieses Menü kann als Grundbaustein für alle möglichen Menüs verwendet werden. Man kopiert sich das Menü in ein neues Objekt und modifiziert dort die Eigenschaften wie man sie braucht. Als Alternative gibt es noch das [[Menue als CSS formatierte Liste]] in dem ein fixer Startpunkt vorgegeben ist:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Accessible ====&lt;br /&gt;
benötigt cronaccessiblemenues&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
  IProcFunc = user_cronaccessiblemenus-&amp;gt;makeAccessible&lt;br /&gt;
&lt;br /&gt;
//NO.after = xyz&lt;br /&gt;
# Access Keys einschalten&lt;br /&gt;
  IProcFunc.accessKeys = 1&lt;br /&gt;
&lt;br /&gt;
# Hierarchische Nummerierung der Menüpunkte einschalten&lt;br /&gt;
  IProcFunc.dfn = 1&lt;br /&gt;
  IProcFunc.accessKeyWrap = &amp;lt;span class=&amp;quot;accessKey&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  IProcFunc.appendWrap = &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;amp;nbsp;(ALT-|)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Die folgenden Accesskeys nicht verwenden (bereits belegt)&lt;br /&gt;
&lt;br /&gt;
  IProcFunc.forbiddenKeys = 0,D,B,A,F,X,m,p&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
#    stdWrap.wrap = |abc&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Classic (not accessible) ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multilanguage Menu ===&lt;br /&gt;
[[Typo3 - Multilanguage Menu]]&lt;br /&gt;
=== Bilder Menü ===&lt;br /&gt;
siehe: [[Typo3 - Bildermenü]]&lt;br /&gt;
=== Einfaches Menü mit 1 Ebene (CSS) ===&lt;br /&gt;
siehe: [[Menue als CSS formatierte Liste]]&lt;br /&gt;
&lt;br /&gt;
=== Menü mit 2 Ebenen als verschachtelte Liste ===&lt;br /&gt;
Dieses Menü ist besonders für vertikale Navigationen geeignet&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Einstieg Level 1&lt;br /&gt;
navi-L12-startID = 1&lt;br /&gt;
navi-L12-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
navi-L12-delimiter =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.navi-L12 = HMENU&lt;br /&gt;
temp.navi-L12 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi-L12-startID}&lt;br /&gt;
  # Ebene für den Einstieg (nicht vergessen wg. 2. Level)&lt;br /&gt;
  entryLevel = 1&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1{&lt;br /&gt;
    noBlur = 1&lt;br /&gt;
    wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
    NO = 1&lt;br /&gt;
    NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACT = 1&lt;br /&gt;
    ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACTIFSUB = 1&lt;br /&gt;
    #Wenn Unterpunkte dann li aufmachen&lt;br /&gt;
    ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
  }&lt;br /&gt;
  2 = TMENU&lt;br /&gt;
  2{&lt;br /&gt;
   noBlur = 1&lt;br /&gt;
   NO = 1&lt;br /&gt;
   #Unterpunkt also neue ul und danach li zu (von L1 geöffnet)&lt;br /&gt;
   wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   ACT = 1&lt;br /&gt;
   ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #ACTIFSUB = 1&lt;br /&gt;
  #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Menü mit 2 Ebenen als separate Listen ===&lt;br /&gt;
Dieses Menü ist besonders für horizontale Navigationen geeignet. &lt;br /&gt;
&lt;br /&gt;
Da die 2. Ebene relativ angegeben wird muß man bei mehreren Navigationsbäumen aufpassen, daß evt. ein Untermenü einer anderen Navigation (anderer Baum) ebenfalls angezeigt wird. Das läßt sich z.B. umgehen in dem man das Navitemplate erst im Unterbaum setzt oder indem man im Hauptbaum eine Bedingung setzt ([PIDinRootline = 123])&lt;br /&gt;
&lt;br /&gt;
Ebene 1 ist im Prinzip eine einfache Liste:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navi nur Level1&lt;br /&gt;
#Startpunkt&lt;br /&gt;
navi_startID = 1&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviL1-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.naviL1 = HMENU&lt;br /&gt;
temp.naviL1 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi_startID}&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1.noBlur = 1&lt;br /&gt;
  1.wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  1.NO = 1&lt;br /&gt;
  1.NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  1.ACT = 1&lt;br /&gt;
  1.ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  #1.ACTIFSUB = 1&lt;br /&gt;
  #1.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Ebene 2 wird eine weitere Liste generiert wenn man sich in einem bestimmten Level befindet:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navigation nur ab Level x  als ul (Standard entry Level1=2.Level)&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviLx-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
naviLx-entryLevel = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.naviLx = HMENU&lt;br /&gt;
temp.naviLx {&lt;br /&gt;
  # Seitenbaumebene ab Level 1 darstellen (2. Ebene)&lt;br /&gt;
   entryLevel = {$naviLx-entryLevel}&lt;br /&gt;
# Level 2&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1{&lt;br /&gt;
      noBlur = 1&lt;br /&gt;
      wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
      NO = 1&lt;br /&gt;
   # Für horizontale Navi mit delimiter bei vertikal einfach nichts setzen&lt;br /&gt;
      NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      ACT = 1&lt;br /&gt;
   # Für vertikale Navi ohne delimiter...      &lt;br /&gt;
      #ACT.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   # und horizontal mit delimiter&lt;br /&gt;
      ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
      #ACTIFSUB = 1&lt;br /&gt;
      #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menü als CSS formatierte Liste (allgemein) ===&lt;br /&gt;
[[Menue als CSS formatierte Liste]]&lt;br /&gt;
=== CSS-Flyout Menü ===&lt;br /&gt;
[[Typo3 - CSS-Flyout Menü]]&lt;br /&gt;
&lt;br /&gt;
=== Sauberes grafisches Menü ===&lt;br /&gt;
[[Typo3 - Grafisches Menü]]&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
=== Autoparser (automaketemplate und Templateswitcher (tx_rlmptmplselector) konfigurieren ===&lt;br /&gt;
Der Template - Switcher benötigt automaketemplate (oder man arbeitet direkt mit TS-Templates). &lt;br /&gt;
Am besten gleich beide in einem Basis Template konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### SET UP TEMPLATE SELECTOR ###&lt;br /&gt;
plugin.tx_rlmptmplselector_pi1 {&lt;br /&gt;
&lt;br /&gt;
// Define the paths leading to our HTML template files&lt;br /&gt;
   templatePathMain = fileadmin/dinos/templates/main/&lt;br /&gt;
   templatePathSub = fileadmin/dinos/templates/sub/&lt;br /&gt;
&lt;br /&gt;
      // Define the filenames used as the default HTML templates&lt;br /&gt;
   defaultTemplateFileNameMain = main.html&lt;br /&gt;
   defaultTemplateFileNameSub = sub01.html&lt;br /&gt;
&lt;br /&gt;
      // If there is a page having no template selected, use a template&lt;br /&gt;
      // selected earlier in the rootline. If there is none, use the default&lt;br /&gt;
    inheritMainTemplates = 1&lt;br /&gt;
    inheritSubTemplates = 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Autoparser Konfigurieren (alle IDs als Marker) ###&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1{&lt;br /&gt;
#  content = FILE&lt;br /&gt;
#  content.file = fileadmin/templates/main/main.html&lt;br /&gt;
&lt;br /&gt;
  content &amp;lt; plugin.tx_rlmptmplselector_pi1&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.all.rmTagSections = title&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
    TD.all = 1&lt;br /&gt;
  }&lt;br /&gt;
    relPathPrefix = fileadmin/dinos/templates/main/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== News - Modul ===&lt;br /&gt;
Hier gibt es fertige Konfigurationen:&lt;br /&gt;
[[News (tt_news)]]&lt;br /&gt;
&lt;br /&gt;
=== eCards - sr_sendcard ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The Fast Way:&lt;br /&gt;
# plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE = @import url(&amp;quot;fileadmin/dinos/templates/css/srsendcard.css&amp;quot;);&lt;br /&gt;
# But better is this (more flexible lesser Overhead)&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 14]&lt;br /&gt;
page.includeCSS.file2 = fileadmin/dinos/templates/srsendcard/srsendcard.css&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1{&lt;br /&gt;
&lt;br /&gt;
templateFile = fileadmin/dinos/templates/srsendcard/srsendcard.tmpl&lt;br /&gt;
locale_all = de_DE&lt;br /&gt;
oldYear = 2006&lt;br /&gt;
# Vorschauseite (wenn gewünscht)&lt;br /&gt;
# previewPID = your_page_id&lt;br /&gt;
enableHTMLMail = 1&lt;br /&gt;
siteEmail = info@start-reutlingen.de&lt;br /&gt;
siteName = Erben der Dinos&lt;br /&gt;
# musicDir = EXT:sr_sendcard/music&lt;br /&gt;
#cardMusicFiles = autumnleaves.mid, OverTheRainbow.mid, Pomp_and_Circumstance.mid&lt;br /&gt;
disableMusic = 1&lt;br /&gt;
maxCol = 2&lt;br /&gt;
imageSmallWidth = 150&lt;br /&gt;
imageSmallHeight = 150&lt;br /&gt;
imageBigWidth = 300&lt;br /&gt;
imageBigHeight = 300&lt;br /&gt;
#logo&lt;br /&gt;
#logoAlignHor = right&lt;br /&gt;
#logoAlignVert = bottom&lt;br /&gt;
#useAlternateImageOnPrint&lt;br /&gt;
### For use with other pids use this one too&lt;br /&gt;
#createPID&lt;br /&gt;
#formPID&lt;br /&gt;
#previewPID&lt;br /&gt;
#useCAPTCHA = 0&lt;br /&gt;
#viewPID&lt;br /&gt;
#printPID&lt;br /&gt;
### Erscheinungsbild ###&lt;br /&gt;
cardStamp = fileadmin/dinos/templates/srsendcard/stamp.gif&lt;br /&gt;
#date_stdWrap&lt;br /&gt;
disableSendDate = 1&lt;br /&gt;
cardBgcolors = #FFFFFF,#A00A1C,#FF993F&lt;br /&gt;
cardFontcolors = #000000, #FFFFFF,#A00A1C&lt;br /&gt;
#disableFontcolors&lt;br /&gt;
#disableFontfaces&lt;br /&gt;
#disableCardOptions&lt;br /&gt;
#graphicMess&lt;br /&gt;
#graphicMessWidth&lt;br /&gt;
#graphicMessFontFiles&lt;br /&gt;
#graphicMessFontSizes&lt;br /&gt;
#fontDir&lt;br /&gt;
#doNotShowCardCaptions&lt;br /&gt;
cardPresentationOrder = manual&lt;br /&gt;
salutation = informal&lt;br /&gt;
#disableBgcolors = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zufallsbild tx_ccrandomimage ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript - Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### zufallsbild erzeugen ###&lt;br /&gt;
includeLibs.tx_ccrandomimage = EXT:cc_random_image/pi1/class.tx_ccrandomimage_pi1.php&lt;br /&gt;
&lt;br /&gt;
// USER_INT means &amp;#039;no caching&amp;#039;&lt;br /&gt;
temp.randomImage = USER_INT&lt;br /&gt;
temp.randomImage{&lt;br /&gt;
  userFunc = tx_ccrandomimage_pi1-&amp;gt;main&lt;br /&gt;
  path = fileadmin/randomImage/&lt;br /&gt;
  fileExt = jpg,jpeg,gif,png&lt;br /&gt;
  #Das Render Objekt ist ein content object array (COA) mit einem Bild&lt;br /&gt;
  #Vor dem Rendern werden die ###FILE_x### marker mit den Bildern aus path ersetzt&lt;br /&gt;
  renderObj = COA&lt;br /&gt;
  renderObj {&lt;br /&gt;
    10 = IMAGE&lt;br /&gt;
    10.file = ###FILE_1###&lt;br /&gt;
    // ... weitere Bilder wenn benötigt&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hCard - Microformat ===&lt;br /&gt;
Das Thema Semantic Web wird inzwischen immer interessanter, darum kam ich auf die Idee - fast allein mit TypoScript - das bekannte hCard-Microformat in TYPO3 zu integrieren.&lt;br /&gt;
&lt;br /&gt;
Was wir dafür brauchen ist eine eigene kleine Extension, diese benötigen wir lediglich für eine einzige Zeile Code, welche in die Datei ext_tables.php kommt:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      t3lib_extMgm::addToInsertRecords(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Dazu jetzt noch das TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      temp.hcard = COA&lt;br /&gt;
   2.&lt;br /&gt;
      temp.hcard {&lt;br /&gt;
   3.&lt;br /&gt;
      wrap =&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
       &lt;br /&gt;
   6.&lt;br /&gt;
      10 = IMAGE&lt;br /&gt;
   7.&lt;br /&gt;
      10.file {&lt;br /&gt;
   8.&lt;br /&gt;
      import = uploads/pics/&lt;br /&gt;
   9.&lt;br /&gt;
      import.field = image&lt;br /&gt;
  10.&lt;br /&gt;
      width = 40&lt;br /&gt;
  11.&lt;br /&gt;
      params = class=&amp;quot;photo&amp;quot;&lt;br /&gt;
  12.&lt;br /&gt;
      }&lt;br /&gt;
  13.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  14.&lt;br /&gt;
      20.field = name&lt;br /&gt;
  15.&lt;br /&gt;
      20.typolink.parameter.field = url&lt;br /&gt;
  16.&lt;br /&gt;
      20.typolink.ATagParams = class=&amp;quot;url fn&amp;quot;&lt;br /&gt;
  17.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  18.&lt;br /&gt;
      30.field = company&lt;br /&gt;
  19.&lt;br /&gt;
      30.wrap =&lt;br /&gt;
  20.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  21.&lt;br /&gt;
       &lt;br /&gt;
  22.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  23.&lt;br /&gt;
      40.field = email&lt;br /&gt;
  24.&lt;br /&gt;
      40.typolink.parameter.field = email&lt;br /&gt;
  25.&lt;br /&gt;
      40.typolink.ATagParams = class=&amp;quot;email&amp;quot;&lt;br /&gt;
  26.&lt;br /&gt;
      50 = COA&lt;br /&gt;
  27.&lt;br /&gt;
      50 {&lt;br /&gt;
  28.&lt;br /&gt;
      wrap =&lt;br /&gt;
  29.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  30.&lt;br /&gt;
       &lt;br /&gt;
  31.&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
  32.&lt;br /&gt;
      10.field = address&lt;br /&gt;
  33.&lt;br /&gt;
      10.wrap =&lt;br /&gt;
  34.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  35.&lt;br /&gt;
       &lt;br /&gt;
  36.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  37.&lt;br /&gt;
      20.field = city&lt;br /&gt;
  38.&lt;br /&gt;
      20.wrap = &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  39.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  40.&lt;br /&gt;
      30.field = zip&lt;br /&gt;
  41.&lt;br /&gt;
      30.wrap = &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  42.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  43.&lt;br /&gt;
      40.field = country&lt;br /&gt;
  44.&lt;br /&gt;
      40.wrap = &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  45.&lt;br /&gt;
      }&lt;br /&gt;
  46.&lt;br /&gt;
      60 = TEXT&lt;br /&gt;
  47.&lt;br /&gt;
      60.field = telephone&lt;br /&gt;
  48.&lt;br /&gt;
      60.wrap =&lt;br /&gt;
  49.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  50.&lt;br /&gt;
       &lt;br /&gt;
  51.&lt;br /&gt;
      }&lt;br /&gt;
  52.&lt;br /&gt;
       &lt;br /&gt;
  53.&lt;br /&gt;
      // fe_users dem type shortcut hinzufügen&lt;br /&gt;
  54.&lt;br /&gt;
      tt_content.shortcut.20.0.tables = fe_users&lt;br /&gt;
  55.&lt;br /&gt;
      // für Tabelle fe_users sagen wir jetzt noch wie es gerendert werden soll.&lt;br /&gt;
  56.&lt;br /&gt;
      tt_content.shortcut.20.0.conf.fe_users &amp;lt; temp.hcard&lt;br /&gt;
  57.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Und was hat uns das jetzt gebracht? Ganz einfach:&lt;br /&gt;
&lt;br /&gt;
   1. Wir haben das Content Element &amp;quot;Insert Record&amp;quot; um die Tabelle fe_users erweitert.&lt;br /&gt;
   2. Wir haben mit dem TypoScript aus dem Object &amp;quot;temp.hcard&amp;quot; eine komplette hCard definiert, welche jetzt mit meinem fe_user Datensatz befüllt werden kann.&lt;br /&gt;
   3. Durch die CSS-Klassen kann man die Visitenkarte nun auch noch schön aussehen lassen.&lt;br /&gt;
&lt;br /&gt;
Sind alle Daten vorhanden, könnte der erzeugte HTML-Code dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
       &lt;br /&gt;
   2.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
   3.&lt;br /&gt;
      &amp;lt;img style=&amp;quot;float:left; margin-right:4px&amp;quot; src=&amp;quot;http://typo3weblog.de/frank.png&amp;quot; alt=&amp;quot;photo of &amp;quot; class=&amp;quot;photo&amp;quot;/&amp;gt;&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://typo3weblog.de&amp;quot;&amp;gt;Frank Nägler&amp;lt;/a&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;TYPO3Weblog.de&amp;lt;/div&amp;gt;&lt;br /&gt;
   6.&lt;br /&gt;
       &lt;br /&gt;
   7.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:frank.naegler@e-netconsulting.rl&amp;quot;&amp;gt;frank.naegler@e-netconsulting.rl&amp;lt;/a&amp;gt;&lt;br /&gt;
   8.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   9.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;Sievekingsallee 150b&amp;lt;/div&amp;gt;&lt;br /&gt;
  10.&lt;br /&gt;
       &lt;br /&gt;
  11.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Hamburg&amp;lt;/span&amp;gt;&lt;br /&gt;
  12.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;22111&amp;lt;/span&amp;gt;&lt;br /&gt;
  13.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;Deutschland&amp;lt;/span&amp;gt;&lt;br /&gt;
  14.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  15.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;+49 (0)7000 623 45 37&amp;lt;/div&amp;gt;&lt;br /&gt;
  16.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  17.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Cool oder?&lt;br /&gt;
&lt;br /&gt;
Die komplette Extension fn_hcard als T3X Export habe ich hier für Euch zum Download.&lt;br /&gt;
&lt;br /&gt;
Aus Typo3 Adventskalender2008&lt;br /&gt;
&lt;br /&gt;
===Extension: Direct Shortcuts (sms_directshortcuts)===&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/extensions/repository/view/sms_directshortcuts/current/&lt;br /&gt;
TYPO3 generiert, wie jeder weiss, bei internen Verweisen immer eine extra Seite, die selbst wiederum einen redirect macht. Dieses vorgehen hat einerseits den Vorteil, dass man Skripte dazwischen schieben kann um z.B. Klicks zu tracken, anderseits den Nachteil, dass eine “falsche” URL im Menü zu finden ist. Dieser Nachteil macht sich bemerkbar wenn man sich mit der Suchmaschinenoptimierung von TYPO3 Seiten beschäftigt.&lt;br /&gt;
&lt;br /&gt;
== Nützliche TS-Templates ==&lt;br /&gt;
=== Tabellen im RTE ===&lt;br /&gt;
Details: http://dev.datenwolken.de/index.php?id=195&lt;br /&gt;
==== Standardklasse contenttable unterdrücken eigene Klassen zulassen ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class &amp;gt;&lt;br /&gt;
==== P Tag raus ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default &amp;gt;&lt;br /&gt;
 # gar nichts parsen ist doof deshalb vorerst mal Standards:&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =&amp;lt; lib.parseFunc&lt;br /&gt;
&lt;br /&gt;
Lösung von Steffen Kamper&lt;br /&gt;
# Lösung von SK&lt;br /&gt;
&lt;br /&gt;
#wichtig, damit die nicht in p gewrappt werden&lt;br /&gt;
#lib.parseFunc_RTE.externalBlocks = ul,ol,table&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#nochmaliges parsen von tabellenzellen auschalten, damit inhalte nicht wieder in p gepackt werden&lt;br /&gt;
#lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.callRecursive = 0&lt;br /&gt;
&lt;br /&gt;
#nachträgliches ermöglichen von Links in Tabellenzellen&lt;br /&gt;
#lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc {&lt;br /&gt;
#        makelinks = 1&lt;br /&gt;
#        makelinks.http.keep = scheme,path,query&lt;br /&gt;
#        makelinks.mailto.keep = path&lt;br /&gt;
#        tags {&lt;br /&gt;
#                link = TEXT&lt;br /&gt;
#                link {&lt;br /&gt;
#                 current = 1&lt;br /&gt;
#                 typolink.parameter.data = parameters : allParams&lt;br /&gt;
#                }&lt;br /&gt;
#       }&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
=== Externes JavaScript einbinden ===&lt;br /&gt;
==== JavaScript im Header ====&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
temp.addHeaderData=COA&lt;br /&gt;
[browser = msie]&lt;br /&gt;
temp.addHeaderData{&lt;br /&gt;
  90 = TEXT&lt;br /&gt;
  90.value (&lt;br /&gt;
&amp;lt;script src=&amp;quot;fileadmin/templates/scripts/ielt7.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  )&lt;br /&gt;
  90.wrap = &amp;lt;!--[if lte IE 7]&amp;gt; | &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
  #90.stdWrap.char = 10&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
Hier wird für IE kleiner als Version 7 ein JavaScript File eingebunden.&lt;br /&gt;
&lt;br /&gt;
==== JavaScript als Marker ====&lt;br /&gt;
Als Temporäres Objekt, kann natürlich auch Javascript in einen Marker eingebunden werden.&lt;br /&gt;
==== JavaScript über Record ====&lt;br /&gt;
Eine Möglichkeit die das leichte ändern der Skripte zuläßt wäre folgende.&lt;br /&gt;
Man legt irgendwo auf einer Seite ein HTML - Element an hinterlegt das Skript und verweist mit TypoScript auf diesen RECORD. Bzw. bindet ihn im Template ein.&lt;br /&gt;
&lt;br /&gt;
ToDo Beispiel&lt;br /&gt;
&lt;br /&gt;
=== xhtml optimierung ===&lt;br /&gt;
Einiges davon braucht man in Version 4+ nicht mehr...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#######################################################&lt;br /&gt;
############ XHTML optimieren&lt;br /&gt;
#######################################################&lt;br /&gt;
&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;html lang=&amp;quot;de&amp;quot; xml:lang=&amp;quot;de&amp;quot;&amp;gt; auf de setzen&lt;br /&gt;
config.htmlTag_langKey = de&lt;br /&gt;
&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList =  div, p, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
#tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
#tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Cleargif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Auch hinter den Headlines&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass nonTypoTagStdWrap nur im Inhalt außerhalb von&lt;br /&gt;
#&amp;lt;typolist&amp;gt; und &amp;lt;typohead&amp;gt; arbeitet:&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typolist.breakoutTypoTagContent = 1&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.breakoutTypoTagContent = 1&lt;br /&gt;
&lt;br /&gt;
# ... und kein &amp;lt;BR&amp;gt; vor dem typohead.&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.wrap &amp;gt;&lt;br /&gt;
# Einstellen von nonTypoTagStdWrap, dass der Text mit P-Tags umschlossen wird.&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap &amp;gt;&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines {&lt;br /&gt;
encapsTagList = div, p&lt;br /&gt;
remapTag.DIV = P&lt;br /&gt;
wrapNonWrappedLines = |&lt;br /&gt;
innerStdWrap_all.ifEmpty =&lt;br /&gt;
innerStdWrap_all.textStyle &amp;lt; tt_content.text.20.textStyle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Schließlich noch Entfernen der alten textstyle-Formatierung des gesamten Haupttextes.&lt;br /&gt;
tt_content.text.20.textStyle &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# ... und der &amp;lt;BR&amp;gt;-Tag nach dem Inhalt wird auch nicht mehr gebraucht...&lt;br /&gt;
tt_content.text.20.wrap &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# clear.gif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# clear.gif hinter den Überschriften entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Attribute für p- und pre-tags entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {&lt;br /&gt;
P.style=&lt;br /&gt;
PRE.style=&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Unterdrückt den Umbruch &amp;lt; br &amp;gt;&lt;br /&gt;
lib.stdheader.10.stdWrap.wrap = |&lt;br /&gt;
tt_content.textpic.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.textpic.20.noStretchAndMarginCells = 1&lt;br /&gt;
tt_content.image.20.noStretchAndMarginCells = 1&lt;br /&gt;
&lt;br /&gt;
# Setup Anker-Tags entfernen&lt;br /&gt;
tt_content.noANameTagForFirstRecord = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inhalte von Backend-Feldern ausgeben ===&lt;br /&gt;
Hinweise dazu findest du unter:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
=== Ein Breadcrumb Menü (Rootline-Menü) ===&lt;br /&gt;
Constants&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#[begin-level] | [end-level]&lt;br /&gt;
# Variante 1: Seite 1 | Seite 2 | Seite 3&lt;br /&gt;
rootlineDelimiter = &amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&lt;br /&gt;
# Variante 2: Seite 1 &amp;gt; Seite 2 &amp;gt; Seite 3&lt;br /&gt;
# delimiter = &amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Setup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rootline = HMENU&lt;br /&gt;
temp.rootline {&lt;br /&gt;
   special = rootline&lt;br /&gt;
&lt;br /&gt;
# zeige komplette rootline an&lt;br /&gt;
   special.range = 2|-1&lt;br /&gt;
&lt;br /&gt;
# Variation: zeige Link auf die übergeordnete Seite&lt;br /&gt;
   #special.range = -2|-2&lt;br /&gt;
&lt;br /&gt;
# Text vor dem Rootline Menü&lt;br /&gt;
   wrap = Sie sind hier:&amp;amp;nbsp;|&lt;br /&gt;
&lt;br /&gt;
   special.targets.3 = page&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.target = _top&lt;br /&gt;
   1.NO {&lt;br /&gt;
   	ATagBeforeWrap = 0&lt;br /&gt;
   	stdWrap.htmlSpecialChars = 1&lt;br /&gt;
   	linkWrap = |{$rootlineDelimiter}|*||*| |&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 1]&lt;br /&gt;
temp.rootline.wrap = You are here:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 2]&lt;br /&gt;
temp.rootline.wrap = Vous êtes ici:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ein CSS-Template mit Markern nutzen ===&lt;br /&gt;
Ein CSS File wird eingelesen, enthaltene Marker dynamisch ersetzt und die Styles im Headerbereich der Seite als Inline-Styles eingebunden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
color1 = FFE292&lt;br /&gt;
color2 = F68D6F&lt;br /&gt;
color3 = FABD9E&lt;br /&gt;
&lt;br /&gt;
backgroundImage = fileadmin/templates/main/images/navBack-grey.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# das Objekt zunächst als Bibliothek zur späteren Verwendung&lt;br /&gt;
lib.stylesheet.default = TEMPLATE&lt;br /&gt;
lib.stylesheet.default {&lt;br /&gt;
# template einlesen&lt;br /&gt;
  template = FILE&lt;br /&gt;
  template.file=fileadmin/templates/main/colors.css&lt;br /&gt;
# Platzhalter ersetzten&lt;br /&gt;
  marks{&lt;br /&gt;
     COLOR1 = TEXT&lt;br /&gt;
     COLOR1.value = {$color1}&lt;br /&gt;
     COLOR2 = TEXT&lt;br /&gt;
     COLOR2.value = {$color2}&lt;br /&gt;
     COLOR3 = TEXT&lt;br /&gt;
     COLOR3.value = {$color3}&lt;br /&gt;
     &lt;br /&gt;
     NAVBACK = TEXT&lt;br /&gt;
     NAVBACK.value = {$backgroundImage}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Stylesheet in Header eintragen&lt;br /&gt;
page.headerData{&lt;br /&gt;
   90 = COA&lt;br /&gt;
   90{&lt;br /&gt;
      wrap = &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- | --&amp;gt;&amp;lt;/style&amp;gt;&lt;br /&gt;
      50 &amp;lt; lib.stylesheet.default&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;
&lt;br /&gt;
=== Bild aus Media-Feld auslesen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mediaFieldImage=IMAGE&lt;br /&gt;
temp.mediaFieldImage.file {  &lt;br /&gt;
  import.data = levelmedia: 2,slide  &lt;br /&gt;
  import = uploads/media/  &lt;br /&gt;
  import.listNum = 0  &lt;br /&gt;
  #width = 270  &lt;br /&gt;
  #height= 300&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bild aus Ressourcen Feld auslesen ===&lt;br /&gt;
Hinweis Seiteneigenschaften &amp;gt; Resourcen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 temp.mein Bild = IMG_RESSOURCE&lt;br /&gt;
 temp.mein Bild{&lt;br /&gt;
  file = hintergrund*.jpg&lt;br /&gt;
  stdWrap.wrap = &amp;lt;div style=&amp;quot;background-image: | ; padding: 5px;&amp;quot;&amp;gt; ein Kasten &amp;lt;/div&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Typo3 vergibt beim vervielfältigen automatisch eine Endung. Damit das Bild trotzdem immer gefunden wird, ein Sternchen setzen (Joker)&lt;br /&gt;
&lt;br /&gt;
=== Bild automatisch mit Alt-Tag versehen ===&lt;br /&gt;
Dieses TypoScript füllt das Alt-Tag Feld mit Daten aus dem Bildnamen z.B. wird Unser_Urlaubsort.jpg zu Unser Urlaubsort&lt;br /&gt;
&lt;br /&gt;
[[Bild automatisch mit Alt-Tag versehen]]&lt;br /&gt;
&lt;br /&gt;
=== Logo mit Verlinkung auf die Homepage (1.2)===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Link für das Logo&lt;br /&gt;
# Zahl (Seiten-ID), URL (www.zielseite.de) oder Email-Adresse&lt;br /&gt;
logoLink = 1&lt;br /&gt;
logoFile = fileadmin/templates/images/logo.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Fügt ein Logo mit Link ein&lt;br /&gt;
&lt;br /&gt;
temp.logo = IMAGE&lt;br /&gt;
temp.logo {&lt;br /&gt;
   #file = /fileadmin/dinos/templates/main/images/logo-rt.gif&lt;br /&gt;
   file = {$logoFile}&lt;br /&gt;
   stdWrap.typolink.parameter = {$logoLink}&lt;br /&gt;
}   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copyright mit immer aktuellem Jahr ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.copyright = COA&lt;br /&gt;
temp.copyright{&lt;br /&gt;
   5= TEXT&lt;br /&gt;
   5.value = &amp;amp;copy;&amp;amp;nbsp;&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   #HeUte Timestamp einlesen&lt;br /&gt;
   10.data = date:U&lt;br /&gt;
   10.data.strftime = %Y &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein anderes Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subparts.footer{&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   10.data = date:Y&lt;br /&gt;
   10.wrap = &amp;lt;p class=&amp;quot;footer&amp;quot;&amp;gt;&amp;amp;copy;&amp;amp;nbsp;|&amp;amp;nbsp;Ich&amp;lt;/p&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datum der letzten Änderung anzeigen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 lastChangePrefix = Letzte Änderung:&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = COA&lt;br /&gt;
temp.lastChange.5 = TEXT&lt;br /&gt;
temp.lastChange.5.value={$lastChangePrefix}&lt;br /&gt;
temp.lastChange.10 = TEXT&lt;br /&gt;
temp.lastChange.10.register:SYS_LASTCHANGED&lt;br /&gt;
temp.lastChange.10.strftime = %d.%m.%Y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Variante ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = TEXT&lt;br /&gt;
temp.lastChange {&lt;br /&gt;
  data = page:lastUpdated&lt;br /&gt;
  if.isTrue.data = page:lastUpdated&lt;br /&gt;
  date = d.m.Y&lt;br /&gt;
  wrap = Letzte Änderung:&amp;amp;nbsp;|&lt;br /&gt;
  wrap2 = |&lt;br /&gt;
  data = register : SYS_LASTCHANGED&lt;br /&gt;
  if &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Seiten IDs im Seitenbaum anzeigen ===&lt;br /&gt;
UserTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
  pageTree.showPageIdWithTitle = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client Daten des Benutzers ausgeben ===&lt;br /&gt;
&lt;br /&gt;
      temp.browserinfo = COA_INT&lt;br /&gt;
      temp.browserinfo {&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
      10.data = TSFE:clientInfo|SYSTEM&lt;br /&gt;
      10.wrap = &amp;amp;lt;p&amp;amp;gt; | &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
      20.data = TSFE:clientInfo|BROWSER&lt;br /&gt;
      20.wrap = | &amp;amp;amp;nbsp;&lt;br /&gt;
       &lt;br /&gt;
      30 = TEXT&lt;br /&gt;
      30.data = TSFE:clientInfo|VERSION&lt;br /&gt;
      30.wrap = | &amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
== Die Ausgabe von Inhalten verändern ==&lt;br /&gt;
&lt;br /&gt;
=== Layout-Rahmen verändern===&lt;br /&gt;
[[Typo3 - Rahmen (Frames)]]&lt;br /&gt;
&lt;br /&gt;
=== Rendering von Inhalten ===&lt;br /&gt;
&lt;br /&gt;
=== Ausgeben von Informationen im head der Seite ===&lt;br /&gt;
Wie kann man Stylesheet angaben, Metatags, Skripte etc. im Header ausgeben&lt;br /&gt;
[[Typo3 - Tipps und Tricks]] (page.head Objekt)&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Ausgaben im Quelltext verhindern ===&lt;br /&gt;
[[TYPO3 - Unnötige Ausgaben im Quelltext verhindern]]&lt;br /&gt;
&lt;br /&gt;
== TypoScript - Basiswissen ==&lt;br /&gt;
[[Links mit TypoSkript anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Suche ==&lt;br /&gt;
&lt;br /&gt;
weitere Infos zu Indexed Search:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - indexed search]]&lt;br /&gt;
&lt;br /&gt;
== Mit HTML und CObj erzeugtes Login ==&lt;br /&gt;
Das Beispiel von Tim Lochmüller aus dem Adventskalender 2008, zeigt wie man mit dem Template Objekte größere HTML - Bausteine verwenden kann.&lt;br /&gt;
&lt;br /&gt;
Login mit TS &amp;amp; cObj TEMPLATE&lt;br /&gt;
Georg Ringer in TYPO3, Templates, Tutorial, TypoScript&lt;br /&gt;
&lt;br /&gt;
Nach der interessanten Vorstellung von cli-Scripten durch Frank in Türchen 15 zeigt das folgende Tutorial einen guten Weg, einen Login/Logout-Bereich mit TS &amp;amp; HTML zu verwirklichen, ohne dabei auf irgendeine Extension zurückgreifen zu müssen.&lt;br /&gt;
&lt;br /&gt;
Folgendes HTML ist notwendig und wird beispielsweise in fileadmin/template/login.html abgelegt: http://pastebin.com/f4e963e25&lt;br /&gt;
Die beiden Subparts sind jeweils für den Login- &amp;amp; Logout-Bereich zuständig und werden mittels Condition umgeschalten.&lt;br /&gt;
&lt;br /&gt;
Das TS ist sehr einfach aufgebaut&lt;br /&gt;
&lt;br /&gt;
    lib.login = TEMPLATE&lt;br /&gt;
    lib.login {&lt;br /&gt;
    template = FILE&lt;br /&gt;
    template.file = fileadmin/template/login.html&lt;br /&gt;
&lt;br /&gt;
    workOnSubpart = TPL_LOGIN&lt;br /&gt;
    marks {&lt;br /&gt;
    URL = TEXT&lt;br /&gt;
    URL.data = getIndpEnv:TYPO3_REQUEST_URL&lt;br /&gt;
&lt;br /&gt;
    PID = TEXT&lt;br /&gt;
    PID.value = 10789&lt;br /&gt;
&lt;br /&gt;
    REGISTER = TEXT&lt;br /&gt;
    REGISTER {&lt;br /&gt;
    value = Mitglied werden&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10786&lt;br /&gt;
    additionalParams = &amp;amp;tx_srfeuserregister_pi1[cmd]=edit&lt;br /&gt;
    useCacheHash = 1&lt;br /&gt;
    ATagParams = class=”link link1″&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PWD = TEXT&lt;br /&gt;
    PWD {&lt;br /&gt;
    value = Password vergessen?&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10788&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PROFILE = TEXT&lt;br /&gt;
    PROFILE {&lt;br /&gt;
    value = Mein Wanderprofil!&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10790&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    [usergroup = *]&lt;br /&gt;
    lib.login.workOnSubpart = TPL_LOGOUT&lt;br /&gt;
&lt;br /&gt;
    [global]&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Variablen sind:&lt;br /&gt;
&lt;br /&gt;
    * URL: Die aktuelle URL, auf die nach dem Login/Logout auch weitergeleitet wird&lt;br /&gt;
    * PID: Id der Seite, die die Benutzer enthält&lt;br /&gt;
&lt;br /&gt;
Nützlich sind weiters:&lt;br /&gt;
&lt;br /&gt;
    * REGISTER: Link zu einer Seite, auf der man sich neu registrieren kann&lt;br /&gt;
    * PWD/PROFILE: Weitere Links zu Seiten nach Bedarf&lt;br /&gt;
&lt;br /&gt;
Die vorgestellte Variante funktioniert out-of-the-box und muss für andere Algorithmen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Das Tutorial soll dazu anregen, das TEMPLATE-Objekt öfters als nur 1x zu verwenden, denn gerade wenn es um das Inkludieren von etwas mehr HTML geht, ist dies der beste, schnellste und sauberste Weg.&lt;br /&gt;
&lt;br /&gt;
== Benutzer ==&lt;br /&gt;
=== Autor-Feld bei neuen Seiten automatisch anlegen ===&lt;br /&gt;
 TCAdefaults.pages.author = &amp;lt;Name des Redakteurs&amp;gt;&lt;br /&gt;
 TCAdefaults.pages.author_email = &amp;lt;EMail-Adresse des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das funktioniert aber nur dann wenn eine Seite neu angelegt wird. Will man viele Seiten einem Redakteur zuordnen kann man das über eien MySQL abfrage machen:&lt;br /&gt;
&lt;br /&gt;
 UPDATE `pages` SET `author` = &amp;#039;&amp;lt;Name des Redakteurs&amp;gt;&amp;#039;, `author_email` =&lt;br /&gt;
 &amp;#039;&amp;lt;EMail-Adresse des Redakteurs&amp;gt;&amp;#039;&lt;br /&gt;
 WHERE 1 AND `perms_userid` = &amp;lt;UserId des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in perms_userid steht die ID des Besitzers der Seite, deshalb kann man diesen mit Hilfe des Whereclause ausfiltern.&lt;br /&gt;
&lt;br /&gt;
=== Author Feld, Email-Feld und News Author automatisch anlegen ===&lt;br /&gt;
Als weitere Möglichkeit gibt es die Extension cron_setdefaultauthor die genau diese Aufgaben übernimmt. Sie arbeitet im Prinzip wie oben angeführt.&lt;br /&gt;
&lt;br /&gt;
== Ändern von Extension Meldungen durch den Redakteur ==&lt;br /&gt;
&lt;br /&gt;
Adventskalender 2008 von Tim Lochmüller&lt;br /&gt;
Immer wieder erlebe ich es, dass der Kunde Texte selber ändern möchte, klar dafür hat er ja auch von uns TYPO3 bekommen. Leider Zum Glück, möchte der Kunde aber manchmal alles pflegen, also auch Texte die aus LocalLang-Dateien oder Templates kommen.&lt;br /&gt;
&lt;br /&gt;
Eine sehr einfache aber durchaus effektive Lösung dafür ist mal wieder ein wenig TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError = RECORDS&lt;br /&gt;
   2.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError {&lt;br /&gt;
   3.&lt;br /&gt;
      tables = tt_content&lt;br /&gt;
   4.&lt;br /&gt;
      source = 123&lt;br /&gt;
   5.&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
Jetzt noch das ContentElement mit der UID 123 im Seitenbaum anlegen und folgenden PHP Code in der Extension verwenden:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      $marker[&amp;#039;###ERR_SEARCH###&amp;#039;] = $this-&amp;gt;cObj-&amp;gt;cObjGetSingle(&lt;br /&gt;
   2.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError&amp;#039;],&lt;br /&gt;
   3.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError.&amp;#039;]&lt;br /&gt;
   4.&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
Das war es schon, jetzt enthält der Marker ###ERR_SEARCH### den Content, den der Kunde selbst eingepflegt hat. Natürlich muss man kein RECORD nehmen, sondern kann auch alle anderen TS-Objekte wie TEXT oder IMAGE.&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1658</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1658"/>
		<updated>2009-04-07T17:17:55Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: /* P Tag raus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Auf Daten zugreifen ==&lt;br /&gt;
Beispiele gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - stdWrap]]&lt;br /&gt;
&lt;br /&gt;
Die stdWrap Eigenschaft steht vielen Objekten zur Verfügung. Wenn Sie vorhanden ist ist Sie der Problemlöser für fast alle Probleme :-).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - TSFE]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Das Media Feld]]&lt;br /&gt;
&lt;br /&gt;
== Standardeinstellungen ==&lt;br /&gt;
[[Typo3 - Standardeinstellungen]]&lt;br /&gt;
&lt;br /&gt;
== Quellcode aufräumen - Sourcecode verbessern - valides XHTML ==&lt;br /&gt;
Der Core produziert seit 4.0 valides XHTML&lt;br /&gt;
&lt;br /&gt;
weitere Hilfen wenn Extensions nicht valide arbeiten bieten:&lt;br /&gt;
&lt;br /&gt;
Installation von Tidy auf dem SErver (aktivieren im Install-Tool)&lt;br /&gt;
&lt;br /&gt;
HTML Cleaner http://typo3.org/extensions/repository/view/qcom_htmlcleaner/2.4.0/&lt;br /&gt;
&lt;br /&gt;
Das Bordeigene HTML-Cleaning: config.xhtml_cleaning = all&lt;br /&gt;
&lt;br /&gt;
Vorsicht bei den Cleanern wenn JavaScript im Spiel ist weil dieser z.T. zerstört werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel aus dem Forum zum Quelltext aufräumen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Einstellen des DocType auf XHTML Transitional&lt;br /&gt;
config.doctype = xhtml_trans&lt;br /&gt;
#XHTML Cleaning aktivieren&lt;br /&gt;
config.xhtml_cleaning = all&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
=== GMenu mit Bildern aus den Seiteneigenschaften (Media-Feld) ===&lt;br /&gt;
Ein Schnipsel vom 12.3.2009 typo3 blogger&lt;br /&gt;
Nicht sehr oft benötigt, aber unter Umständen dennoch hilfreich: ein kleines Copy&amp;amp;Paste Tutorial zur Erstellung eines GMENUs mit Bildern aus dem “media”-Feld der Seiteneigenschaften. Zu beachten gibt es: der GIFBUILDER greift bei diesem Snippet das Bild nicht an, sodass es unverändert im Frontend ausgegeben wird. Dies hatte bei mir den Grund, dass die Website nur aus Bildern besteht und Photoshop nunmal bessere Ergebnisse als ImageMagick bzw. GraphicsMagick liefert - deshalb wollte ich auch nicht, dass er irgendwas an den Bildern verändert oder neu berechnet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.menu = HMENU&lt;br /&gt;
temp.menu {&lt;br /&gt;
	1 = GMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		noBlur = 0&lt;br /&gt;
		NO = 1&lt;br /&gt;
		NO {&lt;br /&gt;
			wrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
			altImgResource.import = uploads/media/&lt;br /&gt;
			altImgResource.import.field = media&lt;br /&gt;
			altImgResource.import.listNum = 0&lt;br /&gt;
 &lt;br /&gt;
			ATagTitle.field = subtitle // title&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		RO = 1&lt;br /&gt;
		RO &amp;lt; .NO&lt;br /&gt;
		RO {&lt;br /&gt;
			altImgResource.import.listNum = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .RO&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.menu &amp;lt; temp.menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Welches Bild (falls mehrere vorhanden sind) TYPO3 nun für das Erzeugen des Menüs nimmt bestimmt folgende Zeile:&lt;br /&gt;
&lt;br /&gt;
 altImgResource.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
Zu beachten gibt es dabei: wie in der Datentechnik üblich fängt man bei 0 zu zählen an, 0 ist dabei das erste Bild, 1 das zweite, 2 das dritte, usw.&lt;br /&gt;
&lt;br /&gt;
=== GMENU und wrapItemAndSub Workaround mit TMENU===&lt;br /&gt;
Ebenfalls von Typo3Blogger&lt;br /&gt;
&lt;br /&gt;
Freunde von semantisch korrektem HTML die auf ein grafisches, mehrstufiges Menü angewiesen sind, werden wissen wovon ich spreche. Man hat ein tolles GMENU gebastelt, welches wunderbare Grafiken liefert und fragt sich “warum ist mein HTML kaputt?”. Nach ein paar Sekunden googlen findet man die Antwort: GMENU fehlt die Eigenschaft “wrapItemAndSub”, mit welchem sich einfach verschachtelte Menüs realisieren lassen. Es gibt viele Ansätze dies zu umgehen, manche arbeiten mit IFSUB, manche verlassen sich auf Tidy. Vor Kurzem stand ich (wieder einmal) vor dem Problem und wollte es einmal anders lösen.&lt;br /&gt;
&lt;br /&gt;
Dabei bin ich auf folgende Lösung gestoßen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mainMenu = HMENU&lt;br /&gt;
temp.mainMenu {&lt;br /&gt;
	1 = TMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
		NO = 1&lt;br /&gt;
        	NO {&lt;br /&gt;
        		wrapItemAndSub = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
        		doNotShowLink = 1&lt;br /&gt;
 &lt;br /&gt;
			RO = 1&lt;br /&gt;
			ATagTitle.field = title&lt;br /&gt;
 &lt;br /&gt;
			beforeImg = GIFBUILDER&lt;br /&gt;
			beforeImg {&lt;br /&gt;
				XY=[20.w]+15,42&lt;br /&gt;
				backColor = #1092AD&lt;br /&gt;
 &lt;br /&gt;
				10 = TEXT&lt;br /&gt;
				10 {&lt;br /&gt;
					text {&lt;br /&gt;
						field = title&lt;br /&gt;
						align = center&lt;br /&gt;
					}			&lt;br /&gt;
 &lt;br /&gt;
					fontFile = fileadmin/font.ttf&lt;br /&gt;
					fontSize = 16&lt;br /&gt;
					fontColor = #FFFFFF&lt;br /&gt;
 &lt;br /&gt;
					offset = 0,34&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
 &lt;br /&gt;
			beforeROImg &amp;lt; .beforeImg&lt;br /&gt;
			beforeROImg.20.fontColor = #FFD20F&lt;br /&gt;
			beforeImgLink = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .NO&lt;br /&gt;
		ACT {&lt;br /&gt;
			RO = 0&lt;br /&gt;
			beforeImg.20.fontColor = #FF0000&lt;br /&gt;
			wrapItemAndSub = &amp;lt;li class=&amp;quot;act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
       2 &amp;lt; .1&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.mainMenu &amp;lt; temp.mainMenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das tolle an dieser Lösung ist nicht nur, dass man wrapItemAndSub verwenden kann, nein auch alle anderen Eigenschaften und Zustände des TMENU stehen einem zur Verfügung!&lt;br /&gt;
&lt;br /&gt;
Ich frage mich, warum wrapItemAndSub bis heute noch nicht in TYPO3 implementiert wurde. Vielleicht wäre es mit der aktuellen Veröffentlichung der TYPO3 4.3 Alpha 2 und der Aufforderung die Feature-Wunschliste zu füllen einmal Zeit diesem Punkt etwas Nachdruck zu verleihen. Falls ihr noch andere Lösungsansätze auf Lager oder bessere Ideen habt, bitte informiert uns in den Comments!&lt;br /&gt;
&lt;br /&gt;
=== Klassisches List Menu ===&lt;br /&gt;
Dieses Menü kann als Grundbaustein für alle möglichen Menüs verwendet werden. Man kopiert sich das Menü in ein neues Objekt und modifiziert dort die Eigenschaften wie man sie braucht. Als Alternative gibt es noch das [[Menue als CSS formatierte Liste]] in dem ein fixer Startpunkt vorgegeben ist:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Accessible ====&lt;br /&gt;
benötigt cronaccessiblemenues&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
  IProcFunc = user_cronaccessiblemenus-&amp;gt;makeAccessible&lt;br /&gt;
&lt;br /&gt;
//NO.after = xyz&lt;br /&gt;
# Access Keys einschalten&lt;br /&gt;
  IProcFunc.accessKeys = 1&lt;br /&gt;
&lt;br /&gt;
# Hierarchische Nummerierung der Menüpunkte einschalten&lt;br /&gt;
  IProcFunc.dfn = 1&lt;br /&gt;
  IProcFunc.accessKeyWrap = &amp;lt;span class=&amp;quot;accessKey&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  IProcFunc.appendWrap = &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;amp;nbsp;(ALT-|)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Die folgenden Accesskeys nicht verwenden (bereits belegt)&lt;br /&gt;
&lt;br /&gt;
  IProcFunc.forbiddenKeys = 0,D,B,A,F,X,m,p&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
#    stdWrap.wrap = |abc&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Classic (not accessible) ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multilanguage Menu ===&lt;br /&gt;
[[Typo3 - Multilanguage Menu]]&lt;br /&gt;
=== Bilder Menü ===&lt;br /&gt;
siehe: [[Typo3 - Bildermenü]]&lt;br /&gt;
=== Einfaches Menü mit 1 Ebene (CSS) ===&lt;br /&gt;
siehe: [[Menue als CSS formatierte Liste]]&lt;br /&gt;
&lt;br /&gt;
=== Menü mit 2 Ebenen als verschachtelte Liste ===&lt;br /&gt;
Dieses Menü ist besonders für vertikale Navigationen geeignet&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Einstieg Level 1&lt;br /&gt;
navi-L12-startID = 1&lt;br /&gt;
navi-L12-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
navi-L12-delimiter =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.navi-L12 = HMENU&lt;br /&gt;
temp.navi-L12 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi-L12-startID}&lt;br /&gt;
  # Ebene für den Einstieg (nicht vergessen wg. 2. Level)&lt;br /&gt;
  entryLevel = 1&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1{&lt;br /&gt;
    noBlur = 1&lt;br /&gt;
    wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
    NO = 1&lt;br /&gt;
    NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACT = 1&lt;br /&gt;
    ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACTIFSUB = 1&lt;br /&gt;
    #Wenn Unterpunkte dann li aufmachen&lt;br /&gt;
    ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
  }&lt;br /&gt;
  2 = TMENU&lt;br /&gt;
  2{&lt;br /&gt;
   noBlur = 1&lt;br /&gt;
   NO = 1&lt;br /&gt;
   #Unterpunkt also neue ul und danach li zu (von L1 geöffnet)&lt;br /&gt;
   wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   ACT = 1&lt;br /&gt;
   ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #ACTIFSUB = 1&lt;br /&gt;
  #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Menü mit 2 Ebenen als separate Listen ===&lt;br /&gt;
Dieses Menü ist besonders für horizontale Navigationen geeignet. &lt;br /&gt;
&lt;br /&gt;
Da die 2. Ebene relativ angegeben wird muß man bei mehreren Navigationsbäumen aufpassen, daß evt. ein Untermenü einer anderen Navigation (anderer Baum) ebenfalls angezeigt wird. Das läßt sich z.B. umgehen in dem man das Navitemplate erst im Unterbaum setzt oder indem man im Hauptbaum eine Bedingung setzt ([PIDinRootline = 123])&lt;br /&gt;
&lt;br /&gt;
Ebene 1 ist im Prinzip eine einfache Liste:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navi nur Level1&lt;br /&gt;
#Startpunkt&lt;br /&gt;
navi_startID = 1&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviL1-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.naviL1 = HMENU&lt;br /&gt;
temp.naviL1 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi_startID}&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1.noBlur = 1&lt;br /&gt;
  1.wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  1.NO = 1&lt;br /&gt;
  1.NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  1.ACT = 1&lt;br /&gt;
  1.ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  #1.ACTIFSUB = 1&lt;br /&gt;
  #1.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Ebene 2 wird eine weitere Liste generiert wenn man sich in einem bestimmten Level befindet:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navigation nur ab Level x  als ul (Standard entry Level1=2.Level)&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviLx-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
naviLx-entryLevel = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.naviLx = HMENU&lt;br /&gt;
temp.naviLx {&lt;br /&gt;
  # Seitenbaumebene ab Level 1 darstellen (2. Ebene)&lt;br /&gt;
   entryLevel = {$naviLx-entryLevel}&lt;br /&gt;
# Level 2&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1{&lt;br /&gt;
      noBlur = 1&lt;br /&gt;
      wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
      NO = 1&lt;br /&gt;
   # Für horizontale Navi mit delimiter bei vertikal einfach nichts setzen&lt;br /&gt;
      NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      ACT = 1&lt;br /&gt;
   # Für vertikale Navi ohne delimiter...      &lt;br /&gt;
      #ACT.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   # und horizontal mit delimiter&lt;br /&gt;
      ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
      #ACTIFSUB = 1&lt;br /&gt;
      #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menü als CSS formatierte Liste (allgemein) ===&lt;br /&gt;
[[Menue als CSS formatierte Liste]]&lt;br /&gt;
=== CSS-Flyout Menü ===&lt;br /&gt;
[[Typo3 - CSS-Flyout Menü]]&lt;br /&gt;
&lt;br /&gt;
=== Sauberes grafisches Menü ===&lt;br /&gt;
[[Typo3 - Grafisches Menü]]&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
=== Autoparser (automaketemplate und Templateswitcher (tx_rlmptmplselector) konfigurieren ===&lt;br /&gt;
Der Template - Switcher benötigt automaketemplate (oder man arbeitet direkt mit TS-Templates). &lt;br /&gt;
Am besten gleich beide in einem Basis Template konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### SET UP TEMPLATE SELECTOR ###&lt;br /&gt;
plugin.tx_rlmptmplselector_pi1 {&lt;br /&gt;
&lt;br /&gt;
// Define the paths leading to our HTML template files&lt;br /&gt;
   templatePathMain = fileadmin/dinos/templates/main/&lt;br /&gt;
   templatePathSub = fileadmin/dinos/templates/sub/&lt;br /&gt;
&lt;br /&gt;
      // Define the filenames used as the default HTML templates&lt;br /&gt;
   defaultTemplateFileNameMain = main.html&lt;br /&gt;
   defaultTemplateFileNameSub = sub01.html&lt;br /&gt;
&lt;br /&gt;
      // If there is a page having no template selected, use a template&lt;br /&gt;
      // selected earlier in the rootline. If there is none, use the default&lt;br /&gt;
    inheritMainTemplates = 1&lt;br /&gt;
    inheritSubTemplates = 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Autoparser Konfigurieren (alle IDs als Marker) ###&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1{&lt;br /&gt;
#  content = FILE&lt;br /&gt;
#  content.file = fileadmin/templates/main/main.html&lt;br /&gt;
&lt;br /&gt;
  content &amp;lt; plugin.tx_rlmptmplselector_pi1&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.all.rmTagSections = title&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
    TD.all = 1&lt;br /&gt;
  }&lt;br /&gt;
    relPathPrefix = fileadmin/dinos/templates/main/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== News - Modul ===&lt;br /&gt;
Hier gibt es fertige Konfigurationen:&lt;br /&gt;
[[News (tt_news)]]&lt;br /&gt;
&lt;br /&gt;
=== eCards - sr_sendcard ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The Fast Way:&lt;br /&gt;
# plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE = @import url(&amp;quot;fileadmin/dinos/templates/css/srsendcard.css&amp;quot;);&lt;br /&gt;
# But better is this (more flexible lesser Overhead)&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 14]&lt;br /&gt;
page.includeCSS.file2 = fileadmin/dinos/templates/srsendcard/srsendcard.css&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1{&lt;br /&gt;
&lt;br /&gt;
templateFile = fileadmin/dinos/templates/srsendcard/srsendcard.tmpl&lt;br /&gt;
locale_all = de_DE&lt;br /&gt;
oldYear = 2006&lt;br /&gt;
# Vorschauseite (wenn gewünscht)&lt;br /&gt;
# previewPID = your_page_id&lt;br /&gt;
enableHTMLMail = 1&lt;br /&gt;
siteEmail = info@start-reutlingen.de&lt;br /&gt;
siteName = Erben der Dinos&lt;br /&gt;
# musicDir = EXT:sr_sendcard/music&lt;br /&gt;
#cardMusicFiles = autumnleaves.mid, OverTheRainbow.mid, Pomp_and_Circumstance.mid&lt;br /&gt;
disableMusic = 1&lt;br /&gt;
maxCol = 2&lt;br /&gt;
imageSmallWidth = 150&lt;br /&gt;
imageSmallHeight = 150&lt;br /&gt;
imageBigWidth = 300&lt;br /&gt;
imageBigHeight = 300&lt;br /&gt;
#logo&lt;br /&gt;
#logoAlignHor = right&lt;br /&gt;
#logoAlignVert = bottom&lt;br /&gt;
#useAlternateImageOnPrint&lt;br /&gt;
### For use with other pids use this one too&lt;br /&gt;
#createPID&lt;br /&gt;
#formPID&lt;br /&gt;
#previewPID&lt;br /&gt;
#useCAPTCHA = 0&lt;br /&gt;
#viewPID&lt;br /&gt;
#printPID&lt;br /&gt;
### Erscheinungsbild ###&lt;br /&gt;
cardStamp = fileadmin/dinos/templates/srsendcard/stamp.gif&lt;br /&gt;
#date_stdWrap&lt;br /&gt;
disableSendDate = 1&lt;br /&gt;
cardBgcolors = #FFFFFF,#A00A1C,#FF993F&lt;br /&gt;
cardFontcolors = #000000, #FFFFFF,#A00A1C&lt;br /&gt;
#disableFontcolors&lt;br /&gt;
#disableFontfaces&lt;br /&gt;
#disableCardOptions&lt;br /&gt;
#graphicMess&lt;br /&gt;
#graphicMessWidth&lt;br /&gt;
#graphicMessFontFiles&lt;br /&gt;
#graphicMessFontSizes&lt;br /&gt;
#fontDir&lt;br /&gt;
#doNotShowCardCaptions&lt;br /&gt;
cardPresentationOrder = manual&lt;br /&gt;
salutation = informal&lt;br /&gt;
#disableBgcolors = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zufallsbild tx_ccrandomimage ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript - Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### zufallsbild erzeugen ###&lt;br /&gt;
includeLibs.tx_ccrandomimage = EXT:cc_random_image/pi1/class.tx_ccrandomimage_pi1.php&lt;br /&gt;
&lt;br /&gt;
// USER_INT means &amp;#039;no caching&amp;#039;&lt;br /&gt;
temp.randomImage = USER_INT&lt;br /&gt;
temp.randomImage{&lt;br /&gt;
  userFunc = tx_ccrandomimage_pi1-&amp;gt;main&lt;br /&gt;
  path = fileadmin/randomImage/&lt;br /&gt;
  fileExt = jpg,jpeg,gif,png&lt;br /&gt;
  #Das Render Objekt ist ein content object array (COA) mit einem Bild&lt;br /&gt;
  #Vor dem Rendern werden die ###FILE_x### marker mit den Bildern aus path ersetzt&lt;br /&gt;
  renderObj = COA&lt;br /&gt;
  renderObj {&lt;br /&gt;
    10 = IMAGE&lt;br /&gt;
    10.file = ###FILE_1###&lt;br /&gt;
    // ... weitere Bilder wenn benötigt&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hCard - Microformat ===&lt;br /&gt;
Das Thema Semantic Web wird inzwischen immer interessanter, darum kam ich auf die Idee - fast allein mit TypoScript - das bekannte hCard-Microformat in TYPO3 zu integrieren.&lt;br /&gt;
&lt;br /&gt;
Was wir dafür brauchen ist eine eigene kleine Extension, diese benötigen wir lediglich für eine einzige Zeile Code, welche in die Datei ext_tables.php kommt:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      t3lib_extMgm::addToInsertRecords(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Dazu jetzt noch das TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      temp.hcard = COA&lt;br /&gt;
   2.&lt;br /&gt;
      temp.hcard {&lt;br /&gt;
   3.&lt;br /&gt;
      wrap =&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
       &lt;br /&gt;
   6.&lt;br /&gt;
      10 = IMAGE&lt;br /&gt;
   7.&lt;br /&gt;
      10.file {&lt;br /&gt;
   8.&lt;br /&gt;
      import = uploads/pics/&lt;br /&gt;
   9.&lt;br /&gt;
      import.field = image&lt;br /&gt;
  10.&lt;br /&gt;
      width = 40&lt;br /&gt;
  11.&lt;br /&gt;
      params = class=&amp;quot;photo&amp;quot;&lt;br /&gt;
  12.&lt;br /&gt;
      }&lt;br /&gt;
  13.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  14.&lt;br /&gt;
      20.field = name&lt;br /&gt;
  15.&lt;br /&gt;
      20.typolink.parameter.field = url&lt;br /&gt;
  16.&lt;br /&gt;
      20.typolink.ATagParams = class=&amp;quot;url fn&amp;quot;&lt;br /&gt;
  17.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  18.&lt;br /&gt;
      30.field = company&lt;br /&gt;
  19.&lt;br /&gt;
      30.wrap =&lt;br /&gt;
  20.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  21.&lt;br /&gt;
       &lt;br /&gt;
  22.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  23.&lt;br /&gt;
      40.field = email&lt;br /&gt;
  24.&lt;br /&gt;
      40.typolink.parameter.field = email&lt;br /&gt;
  25.&lt;br /&gt;
      40.typolink.ATagParams = class=&amp;quot;email&amp;quot;&lt;br /&gt;
  26.&lt;br /&gt;
      50 = COA&lt;br /&gt;
  27.&lt;br /&gt;
      50 {&lt;br /&gt;
  28.&lt;br /&gt;
      wrap =&lt;br /&gt;
  29.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  30.&lt;br /&gt;
       &lt;br /&gt;
  31.&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
  32.&lt;br /&gt;
      10.field = address&lt;br /&gt;
  33.&lt;br /&gt;
      10.wrap =&lt;br /&gt;
  34.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  35.&lt;br /&gt;
       &lt;br /&gt;
  36.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  37.&lt;br /&gt;
      20.field = city&lt;br /&gt;
  38.&lt;br /&gt;
      20.wrap = &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  39.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  40.&lt;br /&gt;
      30.field = zip&lt;br /&gt;
  41.&lt;br /&gt;
      30.wrap = &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  42.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  43.&lt;br /&gt;
      40.field = country&lt;br /&gt;
  44.&lt;br /&gt;
      40.wrap = &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  45.&lt;br /&gt;
      }&lt;br /&gt;
  46.&lt;br /&gt;
      60 = TEXT&lt;br /&gt;
  47.&lt;br /&gt;
      60.field = telephone&lt;br /&gt;
  48.&lt;br /&gt;
      60.wrap =&lt;br /&gt;
  49.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  50.&lt;br /&gt;
       &lt;br /&gt;
  51.&lt;br /&gt;
      }&lt;br /&gt;
  52.&lt;br /&gt;
       &lt;br /&gt;
  53.&lt;br /&gt;
      // fe_users dem type shortcut hinzufügen&lt;br /&gt;
  54.&lt;br /&gt;
      tt_content.shortcut.20.0.tables = fe_users&lt;br /&gt;
  55.&lt;br /&gt;
      // für Tabelle fe_users sagen wir jetzt noch wie es gerendert werden soll.&lt;br /&gt;
  56.&lt;br /&gt;
      tt_content.shortcut.20.0.conf.fe_users &amp;lt; temp.hcard&lt;br /&gt;
  57.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Und was hat uns das jetzt gebracht? Ganz einfach:&lt;br /&gt;
&lt;br /&gt;
   1. Wir haben das Content Element &amp;quot;Insert Record&amp;quot; um die Tabelle fe_users erweitert.&lt;br /&gt;
   2. Wir haben mit dem TypoScript aus dem Object &amp;quot;temp.hcard&amp;quot; eine komplette hCard definiert, welche jetzt mit meinem fe_user Datensatz befüllt werden kann.&lt;br /&gt;
   3. Durch die CSS-Klassen kann man die Visitenkarte nun auch noch schön aussehen lassen.&lt;br /&gt;
&lt;br /&gt;
Sind alle Daten vorhanden, könnte der erzeugte HTML-Code dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
       &lt;br /&gt;
   2.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
   3.&lt;br /&gt;
      &amp;lt;img style=&amp;quot;float:left; margin-right:4px&amp;quot; src=&amp;quot;http://typo3weblog.de/frank.png&amp;quot; alt=&amp;quot;photo of &amp;quot; class=&amp;quot;photo&amp;quot;/&amp;gt;&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://typo3weblog.de&amp;quot;&amp;gt;Frank Nägler&amp;lt;/a&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;TYPO3Weblog.de&amp;lt;/div&amp;gt;&lt;br /&gt;
   6.&lt;br /&gt;
       &lt;br /&gt;
   7.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:frank.naegler@e-netconsulting.rl&amp;quot;&amp;gt;frank.naegler@e-netconsulting.rl&amp;lt;/a&amp;gt;&lt;br /&gt;
   8.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   9.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;Sievekingsallee 150b&amp;lt;/div&amp;gt;&lt;br /&gt;
  10.&lt;br /&gt;
       &lt;br /&gt;
  11.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Hamburg&amp;lt;/span&amp;gt;&lt;br /&gt;
  12.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;22111&amp;lt;/span&amp;gt;&lt;br /&gt;
  13.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;Deutschland&amp;lt;/span&amp;gt;&lt;br /&gt;
  14.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  15.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;+49 (0)7000 623 45 37&amp;lt;/div&amp;gt;&lt;br /&gt;
  16.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  17.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Cool oder?&lt;br /&gt;
&lt;br /&gt;
Die komplette Extension fn_hcard als T3X Export habe ich hier für Euch zum Download.&lt;br /&gt;
&lt;br /&gt;
Aus Typo3 Adventskalender2008&lt;br /&gt;
&lt;br /&gt;
===Extension: Direct Shortcuts (sms_directshortcuts)===&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/extensions/repository/view/sms_directshortcuts/current/&lt;br /&gt;
TYPO3 generiert, wie jeder weiss, bei internen Verweisen immer eine extra Seite, die selbst wiederum einen redirect macht. Dieses vorgehen hat einerseits den Vorteil, dass man Skripte dazwischen schieben kann um z.B. Klicks zu tracken, anderseits den Nachteil, dass eine “falsche” URL im Menü zu finden ist. Dieser Nachteil macht sich bemerkbar wenn man sich mit der Suchmaschinenoptimierung von TYPO3 Seiten beschäftigt.&lt;br /&gt;
&lt;br /&gt;
== Nützliche TS-Templates ==&lt;br /&gt;
=== Tabellen im RTE ===&lt;br /&gt;
Details: http://dev.datenwolken.de/index.php?id=195&lt;br /&gt;
==== Standardklasse contenttable unterdrücken eigene Klassen zulassen ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class &amp;gt;&lt;br /&gt;
==== P Tag raus ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default &amp;gt;&lt;br /&gt;
 # gar nichts parsen ist doof deshalb vorerst mal Standards:&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =&amp;lt; lib.parseFunc&lt;br /&gt;
&lt;br /&gt;
=== Externes JavaScript einbinden ===&lt;br /&gt;
==== JavaScript im Header ====&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
temp.addHeaderData=COA&lt;br /&gt;
[browser = msie]&lt;br /&gt;
temp.addHeaderData{&lt;br /&gt;
  90 = TEXT&lt;br /&gt;
  90.value (&lt;br /&gt;
&amp;lt;script src=&amp;quot;fileadmin/templates/scripts/ielt7.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  )&lt;br /&gt;
  90.wrap = &amp;lt;!--[if lte IE 7]&amp;gt; | &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
  #90.stdWrap.char = 10&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
Hier wird für IE kleiner als Version 7 ein JavaScript File eingebunden.&lt;br /&gt;
&lt;br /&gt;
==== JavaScript als Marker ====&lt;br /&gt;
Als Temporäres Objekt, kann natürlich auch Javascript in einen Marker eingebunden werden.&lt;br /&gt;
==== JavaScript über Record ====&lt;br /&gt;
Eine Möglichkeit die das leichte ändern der Skripte zuläßt wäre folgende.&lt;br /&gt;
Man legt irgendwo auf einer Seite ein HTML - Element an hinterlegt das Skript und verweist mit TypoScript auf diesen RECORD. Bzw. bindet ihn im Template ein.&lt;br /&gt;
&lt;br /&gt;
ToDo Beispiel&lt;br /&gt;
&lt;br /&gt;
=== xhtml optimierung ===&lt;br /&gt;
Einiges davon braucht man in Version 4+ nicht mehr...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#######################################################&lt;br /&gt;
############ XHTML optimieren&lt;br /&gt;
#######################################################&lt;br /&gt;
&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;html lang=&amp;quot;de&amp;quot; xml:lang=&amp;quot;de&amp;quot;&amp;gt; auf de setzen&lt;br /&gt;
config.htmlTag_langKey = de&lt;br /&gt;
&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList =  div, p, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
#tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
#tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Cleargif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Auch hinter den Headlines&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass nonTypoTagStdWrap nur im Inhalt außerhalb von&lt;br /&gt;
#&amp;lt;typolist&amp;gt; und &amp;lt;typohead&amp;gt; arbeitet:&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typolist.breakoutTypoTagContent = 1&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.breakoutTypoTagContent = 1&lt;br /&gt;
&lt;br /&gt;
# ... und kein &amp;lt;BR&amp;gt; vor dem typohead.&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.wrap &amp;gt;&lt;br /&gt;
# Einstellen von nonTypoTagStdWrap, dass der Text mit P-Tags umschlossen wird.&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap &amp;gt;&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines {&lt;br /&gt;
encapsTagList = div, p&lt;br /&gt;
remapTag.DIV = P&lt;br /&gt;
wrapNonWrappedLines = |&lt;br /&gt;
innerStdWrap_all.ifEmpty =&lt;br /&gt;
innerStdWrap_all.textStyle &amp;lt; tt_content.text.20.textStyle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Schließlich noch Entfernen der alten textstyle-Formatierung des gesamten Haupttextes.&lt;br /&gt;
tt_content.text.20.textStyle &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# ... und der &amp;lt;BR&amp;gt;-Tag nach dem Inhalt wird auch nicht mehr gebraucht...&lt;br /&gt;
tt_content.text.20.wrap &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# clear.gif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# clear.gif hinter den Überschriften entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Attribute für p- und pre-tags entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {&lt;br /&gt;
P.style=&lt;br /&gt;
PRE.style=&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Unterdrückt den Umbruch &amp;lt; br &amp;gt;&lt;br /&gt;
lib.stdheader.10.stdWrap.wrap = |&lt;br /&gt;
tt_content.textpic.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.textpic.20.noStretchAndMarginCells = 1&lt;br /&gt;
tt_content.image.20.noStretchAndMarginCells = 1&lt;br /&gt;
&lt;br /&gt;
# Setup Anker-Tags entfernen&lt;br /&gt;
tt_content.noANameTagForFirstRecord = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inhalte von Backend-Feldern ausgeben ===&lt;br /&gt;
Hinweise dazu findest du unter:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
=== Ein Breadcrumb Menü (Rootline-Menü) ===&lt;br /&gt;
Constants&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#[begin-level] | [end-level]&lt;br /&gt;
# Variante 1: Seite 1 | Seite 2 | Seite 3&lt;br /&gt;
rootlineDelimiter = &amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&lt;br /&gt;
# Variante 2: Seite 1 &amp;gt; Seite 2 &amp;gt; Seite 3&lt;br /&gt;
# delimiter = &amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Setup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rootline = HMENU&lt;br /&gt;
temp.rootline {&lt;br /&gt;
   special = rootline&lt;br /&gt;
&lt;br /&gt;
# zeige komplette rootline an&lt;br /&gt;
   special.range = 2|-1&lt;br /&gt;
&lt;br /&gt;
# Variation: zeige Link auf die übergeordnete Seite&lt;br /&gt;
   #special.range = -2|-2&lt;br /&gt;
&lt;br /&gt;
# Text vor dem Rootline Menü&lt;br /&gt;
   wrap = Sie sind hier:&amp;amp;nbsp;|&lt;br /&gt;
&lt;br /&gt;
   special.targets.3 = page&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.target = _top&lt;br /&gt;
   1.NO {&lt;br /&gt;
   	ATagBeforeWrap = 0&lt;br /&gt;
   	stdWrap.htmlSpecialChars = 1&lt;br /&gt;
   	linkWrap = |{$rootlineDelimiter}|*||*| |&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 1]&lt;br /&gt;
temp.rootline.wrap = You are here:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 2]&lt;br /&gt;
temp.rootline.wrap = Vous êtes ici:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ein CSS-Template mit Markern nutzen ===&lt;br /&gt;
Ein CSS File wird eingelesen, enthaltene Marker dynamisch ersetzt und die Styles im Headerbereich der Seite als Inline-Styles eingebunden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
color1 = FFE292&lt;br /&gt;
color2 = F68D6F&lt;br /&gt;
color3 = FABD9E&lt;br /&gt;
&lt;br /&gt;
backgroundImage = fileadmin/templates/main/images/navBack-grey.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# das Objekt zunächst als Bibliothek zur späteren Verwendung&lt;br /&gt;
lib.stylesheet.default = TEMPLATE&lt;br /&gt;
lib.stylesheet.default {&lt;br /&gt;
# template einlesen&lt;br /&gt;
  template = FILE&lt;br /&gt;
  template.file=fileadmin/templates/main/colors.css&lt;br /&gt;
# Platzhalter ersetzten&lt;br /&gt;
  marks{&lt;br /&gt;
     COLOR1 = TEXT&lt;br /&gt;
     COLOR1.value = {$color1}&lt;br /&gt;
     COLOR2 = TEXT&lt;br /&gt;
     COLOR2.value = {$color2}&lt;br /&gt;
     COLOR3 = TEXT&lt;br /&gt;
     COLOR3.value = {$color3}&lt;br /&gt;
     &lt;br /&gt;
     NAVBACK = TEXT&lt;br /&gt;
     NAVBACK.value = {$backgroundImage}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Stylesheet in Header eintragen&lt;br /&gt;
page.headerData{&lt;br /&gt;
   90 = COA&lt;br /&gt;
   90{&lt;br /&gt;
      wrap = &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- | --&amp;gt;&amp;lt;/style&amp;gt;&lt;br /&gt;
      50 &amp;lt; lib.stylesheet.default&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;
&lt;br /&gt;
=== Bild aus Media-Feld auslesen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mediaFieldImage=IMAGE&lt;br /&gt;
temp.mediaFieldImage.file {  &lt;br /&gt;
  import.data = levelmedia: 2,slide  &lt;br /&gt;
  import = uploads/media/  &lt;br /&gt;
  import.listNum = 0  &lt;br /&gt;
  #width = 270  &lt;br /&gt;
  #height= 300&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bild aus Ressourcen Feld auslesen ===&lt;br /&gt;
Hinweis Seiteneigenschaften &amp;gt; Resourcen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 temp.mein Bild = IMG_RESSOURCE&lt;br /&gt;
 temp.mein Bild{&lt;br /&gt;
  file = hintergrund*.jpg&lt;br /&gt;
  stdWrap.wrap = &amp;lt;div style=&amp;quot;background-image: | ; padding: 5px;&amp;quot;&amp;gt; ein Kasten &amp;lt;/div&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Typo3 vergibt beim vervielfältigen automatisch eine Endung. Damit das Bild trotzdem immer gefunden wird, ein Sternchen setzen (Joker)&lt;br /&gt;
&lt;br /&gt;
=== Bild automatisch mit Alt-Tag versehen ===&lt;br /&gt;
Dieses TypoScript füllt das Alt-Tag Feld mit Daten aus dem Bildnamen z.B. wird Unser_Urlaubsort.jpg zu Unser Urlaubsort&lt;br /&gt;
&lt;br /&gt;
[[Bild automatisch mit Alt-Tag versehen]]&lt;br /&gt;
&lt;br /&gt;
=== Logo mit Verlinkung auf die Homepage (1.2)===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Link für das Logo&lt;br /&gt;
# Zahl (Seiten-ID), URL (www.zielseite.de) oder Email-Adresse&lt;br /&gt;
logoLink = 1&lt;br /&gt;
logoFile = fileadmin/templates/images/logo.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Fügt ein Logo mit Link ein&lt;br /&gt;
&lt;br /&gt;
temp.logo = IMAGE&lt;br /&gt;
temp.logo {&lt;br /&gt;
   #file = /fileadmin/dinos/templates/main/images/logo-rt.gif&lt;br /&gt;
   file = {$logoFile}&lt;br /&gt;
   stdWrap.typolink.parameter = {$logoLink}&lt;br /&gt;
}   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copyright mit immer aktuellem Jahr ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.copyright = COA&lt;br /&gt;
temp.copyright{&lt;br /&gt;
   5= TEXT&lt;br /&gt;
   5.value = &amp;amp;copy;&amp;amp;nbsp;&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   #HeUte Timestamp einlesen&lt;br /&gt;
   10.data = date:U&lt;br /&gt;
   10.data.strftime = %Y &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein anderes Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subparts.footer{&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   10.data = date:Y&lt;br /&gt;
   10.wrap = &amp;lt;p class=&amp;quot;footer&amp;quot;&amp;gt;&amp;amp;copy;&amp;amp;nbsp;|&amp;amp;nbsp;Ich&amp;lt;/p&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datum der letzten Änderung anzeigen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 lastChangePrefix = Letzte Änderung:&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = COA&lt;br /&gt;
temp.lastChange.5 = TEXT&lt;br /&gt;
temp.lastChange.5.value={$lastChangePrefix}&lt;br /&gt;
temp.lastChange.10 = TEXT&lt;br /&gt;
temp.lastChange.10.register:SYS_LASTCHANGED&lt;br /&gt;
temp.lastChange.10.strftime = %d.%m.%Y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Variante ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = TEXT&lt;br /&gt;
temp.lastChange {&lt;br /&gt;
  data = page:lastUpdated&lt;br /&gt;
  if.isTrue.data = page:lastUpdated&lt;br /&gt;
  date = d.m.Y&lt;br /&gt;
  wrap = Letzte Änderung:&amp;amp;nbsp;|&lt;br /&gt;
  wrap2 = |&lt;br /&gt;
  data = register : SYS_LASTCHANGED&lt;br /&gt;
  if &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Seiten IDs im Seitenbaum anzeigen ===&lt;br /&gt;
UserTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
  pageTree.showPageIdWithTitle = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client Daten des Benutzers ausgeben ===&lt;br /&gt;
&lt;br /&gt;
      temp.browserinfo = COA_INT&lt;br /&gt;
      temp.browserinfo {&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
      10.data = TSFE:clientInfo|SYSTEM&lt;br /&gt;
      10.wrap = &amp;amp;lt;p&amp;amp;gt; | &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
      20.data = TSFE:clientInfo|BROWSER&lt;br /&gt;
      20.wrap = | &amp;amp;amp;nbsp;&lt;br /&gt;
       &lt;br /&gt;
      30 = TEXT&lt;br /&gt;
      30.data = TSFE:clientInfo|VERSION&lt;br /&gt;
      30.wrap = | &amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
== Die Ausgabe von Inhalten verändern ==&lt;br /&gt;
&lt;br /&gt;
=== Layout-Rahmen verändern===&lt;br /&gt;
[[Typo3 - Rahmen (Frames)]]&lt;br /&gt;
&lt;br /&gt;
=== Rendering von Inhalten ===&lt;br /&gt;
&lt;br /&gt;
=== Ausgeben von Informationen im head der Seite ===&lt;br /&gt;
Wie kann man Stylesheet angaben, Metatags, Skripte etc. im Header ausgeben&lt;br /&gt;
[[Typo3 - Tipps und Tricks]] (page.head Objekt)&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Ausgaben im Quelltext verhindern ===&lt;br /&gt;
[[TYPO3 - Unnötige Ausgaben im Quelltext verhindern]]&lt;br /&gt;
&lt;br /&gt;
== TypoScript - Basiswissen ==&lt;br /&gt;
[[Links mit TypoSkript anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Suche ==&lt;br /&gt;
&lt;br /&gt;
weitere Infos zu Indexed Search:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - indexed search]]&lt;br /&gt;
&lt;br /&gt;
== Mit HTML und CObj erzeugtes Login ==&lt;br /&gt;
Das Beispiel von Tim Lochmüller aus dem Adventskalender 2008, zeigt wie man mit dem Template Objekte größere HTML - Bausteine verwenden kann.&lt;br /&gt;
&lt;br /&gt;
Login mit TS &amp;amp; cObj TEMPLATE&lt;br /&gt;
Georg Ringer in TYPO3, Templates, Tutorial, TypoScript&lt;br /&gt;
&lt;br /&gt;
Nach der interessanten Vorstellung von cli-Scripten durch Frank in Türchen 15 zeigt das folgende Tutorial einen guten Weg, einen Login/Logout-Bereich mit TS &amp;amp; HTML zu verwirklichen, ohne dabei auf irgendeine Extension zurückgreifen zu müssen.&lt;br /&gt;
&lt;br /&gt;
Folgendes HTML ist notwendig und wird beispielsweise in fileadmin/template/login.html abgelegt: http://pastebin.com/f4e963e25&lt;br /&gt;
Die beiden Subparts sind jeweils für den Login- &amp;amp; Logout-Bereich zuständig und werden mittels Condition umgeschalten.&lt;br /&gt;
&lt;br /&gt;
Das TS ist sehr einfach aufgebaut&lt;br /&gt;
&lt;br /&gt;
    lib.login = TEMPLATE&lt;br /&gt;
    lib.login {&lt;br /&gt;
    template = FILE&lt;br /&gt;
    template.file = fileadmin/template/login.html&lt;br /&gt;
&lt;br /&gt;
    workOnSubpart = TPL_LOGIN&lt;br /&gt;
    marks {&lt;br /&gt;
    URL = TEXT&lt;br /&gt;
    URL.data = getIndpEnv:TYPO3_REQUEST_URL&lt;br /&gt;
&lt;br /&gt;
    PID = TEXT&lt;br /&gt;
    PID.value = 10789&lt;br /&gt;
&lt;br /&gt;
    REGISTER = TEXT&lt;br /&gt;
    REGISTER {&lt;br /&gt;
    value = Mitglied werden&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10786&lt;br /&gt;
    additionalParams = &amp;amp;tx_srfeuserregister_pi1[cmd]=edit&lt;br /&gt;
    useCacheHash = 1&lt;br /&gt;
    ATagParams = class=”link link1″&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PWD = TEXT&lt;br /&gt;
    PWD {&lt;br /&gt;
    value = Password vergessen?&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10788&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PROFILE = TEXT&lt;br /&gt;
    PROFILE {&lt;br /&gt;
    value = Mein Wanderprofil!&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10790&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    [usergroup = *]&lt;br /&gt;
    lib.login.workOnSubpart = TPL_LOGOUT&lt;br /&gt;
&lt;br /&gt;
    [global]&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Variablen sind:&lt;br /&gt;
&lt;br /&gt;
    * URL: Die aktuelle URL, auf die nach dem Login/Logout auch weitergeleitet wird&lt;br /&gt;
    * PID: Id der Seite, die die Benutzer enthält&lt;br /&gt;
&lt;br /&gt;
Nützlich sind weiters:&lt;br /&gt;
&lt;br /&gt;
    * REGISTER: Link zu einer Seite, auf der man sich neu registrieren kann&lt;br /&gt;
    * PWD/PROFILE: Weitere Links zu Seiten nach Bedarf&lt;br /&gt;
&lt;br /&gt;
Die vorgestellte Variante funktioniert out-of-the-box und muss für andere Algorithmen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Das Tutorial soll dazu anregen, das TEMPLATE-Objekt öfters als nur 1x zu verwenden, denn gerade wenn es um das Inkludieren von etwas mehr HTML geht, ist dies der beste, schnellste und sauberste Weg.&lt;br /&gt;
&lt;br /&gt;
== Benutzer ==&lt;br /&gt;
=== Autor-Feld bei neuen Seiten automatisch anlegen ===&lt;br /&gt;
 TCAdefaults.pages.author = &amp;lt;Name des Redakteurs&amp;gt;&lt;br /&gt;
 TCAdefaults.pages.author_email = &amp;lt;EMail-Adresse des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das funktioniert aber nur dann wenn eine Seite neu angelegt wird. Will man viele Seiten einem Redakteur zuordnen kann man das über eien MySQL abfrage machen:&lt;br /&gt;
&lt;br /&gt;
 UPDATE `pages` SET `author` = &amp;#039;&amp;lt;Name des Redakteurs&amp;gt;&amp;#039;, `author_email` =&lt;br /&gt;
 &amp;#039;&amp;lt;EMail-Adresse des Redakteurs&amp;gt;&amp;#039;&lt;br /&gt;
 WHERE 1 AND `perms_userid` = &amp;lt;UserId des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in perms_userid steht die ID des Besitzers der Seite, deshalb kann man diesen mit Hilfe des Whereclause ausfiltern.&lt;br /&gt;
&lt;br /&gt;
=== Author Feld, Email-Feld und News Author automatisch anlegen ===&lt;br /&gt;
Als weitere Möglichkeit gibt es die Extension cron_setdefaultauthor die genau diese Aufgaben übernimmt. Sie arbeitet im Prinzip wie oben angeführt.&lt;br /&gt;
&lt;br /&gt;
== Ändern von Extension Meldungen durch den Redakteur ==&lt;br /&gt;
&lt;br /&gt;
Adventskalender 2008 von Tim Lochmüller&lt;br /&gt;
Immer wieder erlebe ich es, dass der Kunde Texte selber ändern möchte, klar dafür hat er ja auch von uns TYPO3 bekommen. Leider Zum Glück, möchte der Kunde aber manchmal alles pflegen, also auch Texte die aus LocalLang-Dateien oder Templates kommen.&lt;br /&gt;
&lt;br /&gt;
Eine sehr einfache aber durchaus effektive Lösung dafür ist mal wieder ein wenig TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError = RECORDS&lt;br /&gt;
   2.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError {&lt;br /&gt;
   3.&lt;br /&gt;
      tables = tt_content&lt;br /&gt;
   4.&lt;br /&gt;
      source = 123&lt;br /&gt;
   5.&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
Jetzt noch das ContentElement mit der UID 123 im Seitenbaum anlegen und folgenden PHP Code in der Extension verwenden:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      $marker[&amp;#039;###ERR_SEARCH###&amp;#039;] = $this-&amp;gt;cObj-&amp;gt;cObjGetSingle(&lt;br /&gt;
   2.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError&amp;#039;],&lt;br /&gt;
   3.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError.&amp;#039;]&lt;br /&gt;
   4.&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
Das war es schon, jetzt enthält der Marker ###ERR_SEARCH### den Content, den der Kunde selbst eingepflegt hat. Natürlich muss man kein RECORD nehmen, sondern kann auch alle anderen TS-Objekte wie TEXT oder IMAGE.&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1657</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1657"/>
		<updated>2009-04-07T17:13:42Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: /* Tabellen im RTE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Auf Daten zugreifen ==&lt;br /&gt;
Beispiele gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - stdWrap]]&lt;br /&gt;
&lt;br /&gt;
Die stdWrap Eigenschaft steht vielen Objekten zur Verfügung. Wenn Sie vorhanden ist ist Sie der Problemlöser für fast alle Probleme :-).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - TSFE]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Das Media Feld]]&lt;br /&gt;
&lt;br /&gt;
== Standardeinstellungen ==&lt;br /&gt;
[[Typo3 - Standardeinstellungen]]&lt;br /&gt;
&lt;br /&gt;
== Quellcode aufräumen - Sourcecode verbessern - valides XHTML ==&lt;br /&gt;
Der Core produziert seit 4.0 valides XHTML&lt;br /&gt;
&lt;br /&gt;
weitere Hilfen wenn Extensions nicht valide arbeiten bieten:&lt;br /&gt;
&lt;br /&gt;
Installation von Tidy auf dem SErver (aktivieren im Install-Tool)&lt;br /&gt;
&lt;br /&gt;
HTML Cleaner http://typo3.org/extensions/repository/view/qcom_htmlcleaner/2.4.0/&lt;br /&gt;
&lt;br /&gt;
Das Bordeigene HTML-Cleaning: config.xhtml_cleaning = all&lt;br /&gt;
&lt;br /&gt;
Vorsicht bei den Cleanern wenn JavaScript im Spiel ist weil dieser z.T. zerstört werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel aus dem Forum zum Quelltext aufräumen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Einstellen des DocType auf XHTML Transitional&lt;br /&gt;
config.doctype = xhtml_trans&lt;br /&gt;
#XHTML Cleaning aktivieren&lt;br /&gt;
config.xhtml_cleaning = all&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
=== GMenu mit Bildern aus den Seiteneigenschaften (Media-Feld) ===&lt;br /&gt;
Ein Schnipsel vom 12.3.2009 typo3 blogger&lt;br /&gt;
Nicht sehr oft benötigt, aber unter Umständen dennoch hilfreich: ein kleines Copy&amp;amp;Paste Tutorial zur Erstellung eines GMENUs mit Bildern aus dem “media”-Feld der Seiteneigenschaften. Zu beachten gibt es: der GIFBUILDER greift bei diesem Snippet das Bild nicht an, sodass es unverändert im Frontend ausgegeben wird. Dies hatte bei mir den Grund, dass die Website nur aus Bildern besteht und Photoshop nunmal bessere Ergebnisse als ImageMagick bzw. GraphicsMagick liefert - deshalb wollte ich auch nicht, dass er irgendwas an den Bildern verändert oder neu berechnet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.menu = HMENU&lt;br /&gt;
temp.menu {&lt;br /&gt;
	1 = GMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		noBlur = 0&lt;br /&gt;
		NO = 1&lt;br /&gt;
		NO {&lt;br /&gt;
			wrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
			altImgResource.import = uploads/media/&lt;br /&gt;
			altImgResource.import.field = media&lt;br /&gt;
			altImgResource.import.listNum = 0&lt;br /&gt;
 &lt;br /&gt;
			ATagTitle.field = subtitle // title&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		RO = 1&lt;br /&gt;
		RO &amp;lt; .NO&lt;br /&gt;
		RO {&lt;br /&gt;
			altImgResource.import.listNum = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .RO&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.menu &amp;lt; temp.menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Welches Bild (falls mehrere vorhanden sind) TYPO3 nun für das Erzeugen des Menüs nimmt bestimmt folgende Zeile:&lt;br /&gt;
&lt;br /&gt;
 altImgResource.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
Zu beachten gibt es dabei: wie in der Datentechnik üblich fängt man bei 0 zu zählen an, 0 ist dabei das erste Bild, 1 das zweite, 2 das dritte, usw.&lt;br /&gt;
&lt;br /&gt;
=== GMENU und wrapItemAndSub Workaround mit TMENU===&lt;br /&gt;
Ebenfalls von Typo3Blogger&lt;br /&gt;
&lt;br /&gt;
Freunde von semantisch korrektem HTML die auf ein grafisches, mehrstufiges Menü angewiesen sind, werden wissen wovon ich spreche. Man hat ein tolles GMENU gebastelt, welches wunderbare Grafiken liefert und fragt sich “warum ist mein HTML kaputt?”. Nach ein paar Sekunden googlen findet man die Antwort: GMENU fehlt die Eigenschaft “wrapItemAndSub”, mit welchem sich einfach verschachtelte Menüs realisieren lassen. Es gibt viele Ansätze dies zu umgehen, manche arbeiten mit IFSUB, manche verlassen sich auf Tidy. Vor Kurzem stand ich (wieder einmal) vor dem Problem und wollte es einmal anders lösen.&lt;br /&gt;
&lt;br /&gt;
Dabei bin ich auf folgende Lösung gestoßen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mainMenu = HMENU&lt;br /&gt;
temp.mainMenu {&lt;br /&gt;
	1 = TMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
		NO = 1&lt;br /&gt;
        	NO {&lt;br /&gt;
        		wrapItemAndSub = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
        		doNotShowLink = 1&lt;br /&gt;
 &lt;br /&gt;
			RO = 1&lt;br /&gt;
			ATagTitle.field = title&lt;br /&gt;
 &lt;br /&gt;
			beforeImg = GIFBUILDER&lt;br /&gt;
			beforeImg {&lt;br /&gt;
				XY=[20.w]+15,42&lt;br /&gt;
				backColor = #1092AD&lt;br /&gt;
 &lt;br /&gt;
				10 = TEXT&lt;br /&gt;
				10 {&lt;br /&gt;
					text {&lt;br /&gt;
						field = title&lt;br /&gt;
						align = center&lt;br /&gt;
					}			&lt;br /&gt;
 &lt;br /&gt;
					fontFile = fileadmin/font.ttf&lt;br /&gt;
					fontSize = 16&lt;br /&gt;
					fontColor = #FFFFFF&lt;br /&gt;
 &lt;br /&gt;
					offset = 0,34&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
 &lt;br /&gt;
			beforeROImg &amp;lt; .beforeImg&lt;br /&gt;
			beforeROImg.20.fontColor = #FFD20F&lt;br /&gt;
			beforeImgLink = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .NO&lt;br /&gt;
		ACT {&lt;br /&gt;
			RO = 0&lt;br /&gt;
			beforeImg.20.fontColor = #FF0000&lt;br /&gt;
			wrapItemAndSub = &amp;lt;li class=&amp;quot;act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
       2 &amp;lt; .1&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.mainMenu &amp;lt; temp.mainMenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das tolle an dieser Lösung ist nicht nur, dass man wrapItemAndSub verwenden kann, nein auch alle anderen Eigenschaften und Zustände des TMENU stehen einem zur Verfügung!&lt;br /&gt;
&lt;br /&gt;
Ich frage mich, warum wrapItemAndSub bis heute noch nicht in TYPO3 implementiert wurde. Vielleicht wäre es mit der aktuellen Veröffentlichung der TYPO3 4.3 Alpha 2 und der Aufforderung die Feature-Wunschliste zu füllen einmal Zeit diesem Punkt etwas Nachdruck zu verleihen. Falls ihr noch andere Lösungsansätze auf Lager oder bessere Ideen habt, bitte informiert uns in den Comments!&lt;br /&gt;
&lt;br /&gt;
=== Klassisches List Menu ===&lt;br /&gt;
Dieses Menü kann als Grundbaustein für alle möglichen Menüs verwendet werden. Man kopiert sich das Menü in ein neues Objekt und modifiziert dort die Eigenschaften wie man sie braucht. Als Alternative gibt es noch das [[Menue als CSS formatierte Liste]] in dem ein fixer Startpunkt vorgegeben ist:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Accessible ====&lt;br /&gt;
benötigt cronaccessiblemenues&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
  IProcFunc = user_cronaccessiblemenus-&amp;gt;makeAccessible&lt;br /&gt;
&lt;br /&gt;
//NO.after = xyz&lt;br /&gt;
# Access Keys einschalten&lt;br /&gt;
  IProcFunc.accessKeys = 1&lt;br /&gt;
&lt;br /&gt;
# Hierarchische Nummerierung der Menüpunkte einschalten&lt;br /&gt;
  IProcFunc.dfn = 1&lt;br /&gt;
  IProcFunc.accessKeyWrap = &amp;lt;span class=&amp;quot;accessKey&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  IProcFunc.appendWrap = &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;amp;nbsp;(ALT-|)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Die folgenden Accesskeys nicht verwenden (bereits belegt)&lt;br /&gt;
&lt;br /&gt;
  IProcFunc.forbiddenKeys = 0,D,B,A,F,X,m,p&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
#    stdWrap.wrap = |abc&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Classic (not accessible) ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multilanguage Menu ===&lt;br /&gt;
[[Typo3 - Multilanguage Menu]]&lt;br /&gt;
=== Bilder Menü ===&lt;br /&gt;
siehe: [[Typo3 - Bildermenü]]&lt;br /&gt;
=== Einfaches Menü mit 1 Ebene (CSS) ===&lt;br /&gt;
siehe: [[Menue als CSS formatierte Liste]]&lt;br /&gt;
&lt;br /&gt;
=== Menü mit 2 Ebenen als verschachtelte Liste ===&lt;br /&gt;
Dieses Menü ist besonders für vertikale Navigationen geeignet&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Einstieg Level 1&lt;br /&gt;
navi-L12-startID = 1&lt;br /&gt;
navi-L12-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
navi-L12-delimiter =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.navi-L12 = HMENU&lt;br /&gt;
temp.navi-L12 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi-L12-startID}&lt;br /&gt;
  # Ebene für den Einstieg (nicht vergessen wg. 2. Level)&lt;br /&gt;
  entryLevel = 1&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1{&lt;br /&gt;
    noBlur = 1&lt;br /&gt;
    wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
    NO = 1&lt;br /&gt;
    NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACT = 1&lt;br /&gt;
    ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACTIFSUB = 1&lt;br /&gt;
    #Wenn Unterpunkte dann li aufmachen&lt;br /&gt;
    ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
  }&lt;br /&gt;
  2 = TMENU&lt;br /&gt;
  2{&lt;br /&gt;
   noBlur = 1&lt;br /&gt;
   NO = 1&lt;br /&gt;
   #Unterpunkt also neue ul und danach li zu (von L1 geöffnet)&lt;br /&gt;
   wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   ACT = 1&lt;br /&gt;
   ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #ACTIFSUB = 1&lt;br /&gt;
  #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Menü mit 2 Ebenen als separate Listen ===&lt;br /&gt;
Dieses Menü ist besonders für horizontale Navigationen geeignet. &lt;br /&gt;
&lt;br /&gt;
Da die 2. Ebene relativ angegeben wird muß man bei mehreren Navigationsbäumen aufpassen, daß evt. ein Untermenü einer anderen Navigation (anderer Baum) ebenfalls angezeigt wird. Das läßt sich z.B. umgehen in dem man das Navitemplate erst im Unterbaum setzt oder indem man im Hauptbaum eine Bedingung setzt ([PIDinRootline = 123])&lt;br /&gt;
&lt;br /&gt;
Ebene 1 ist im Prinzip eine einfache Liste:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navi nur Level1&lt;br /&gt;
#Startpunkt&lt;br /&gt;
navi_startID = 1&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviL1-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.naviL1 = HMENU&lt;br /&gt;
temp.naviL1 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi_startID}&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1.noBlur = 1&lt;br /&gt;
  1.wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  1.NO = 1&lt;br /&gt;
  1.NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  1.ACT = 1&lt;br /&gt;
  1.ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  #1.ACTIFSUB = 1&lt;br /&gt;
  #1.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Ebene 2 wird eine weitere Liste generiert wenn man sich in einem bestimmten Level befindet:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navigation nur ab Level x  als ul (Standard entry Level1=2.Level)&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviLx-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
naviLx-entryLevel = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.naviLx = HMENU&lt;br /&gt;
temp.naviLx {&lt;br /&gt;
  # Seitenbaumebene ab Level 1 darstellen (2. Ebene)&lt;br /&gt;
   entryLevel = {$naviLx-entryLevel}&lt;br /&gt;
# Level 2&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1{&lt;br /&gt;
      noBlur = 1&lt;br /&gt;
      wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
      NO = 1&lt;br /&gt;
   # Für horizontale Navi mit delimiter bei vertikal einfach nichts setzen&lt;br /&gt;
      NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      ACT = 1&lt;br /&gt;
   # Für vertikale Navi ohne delimiter...      &lt;br /&gt;
      #ACT.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   # und horizontal mit delimiter&lt;br /&gt;
      ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
      #ACTIFSUB = 1&lt;br /&gt;
      #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menü als CSS formatierte Liste (allgemein) ===&lt;br /&gt;
[[Menue als CSS formatierte Liste]]&lt;br /&gt;
=== CSS-Flyout Menü ===&lt;br /&gt;
[[Typo3 - CSS-Flyout Menü]]&lt;br /&gt;
&lt;br /&gt;
=== Sauberes grafisches Menü ===&lt;br /&gt;
[[Typo3 - Grafisches Menü]]&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
=== Autoparser (automaketemplate und Templateswitcher (tx_rlmptmplselector) konfigurieren ===&lt;br /&gt;
Der Template - Switcher benötigt automaketemplate (oder man arbeitet direkt mit TS-Templates). &lt;br /&gt;
Am besten gleich beide in einem Basis Template konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### SET UP TEMPLATE SELECTOR ###&lt;br /&gt;
plugin.tx_rlmptmplselector_pi1 {&lt;br /&gt;
&lt;br /&gt;
// Define the paths leading to our HTML template files&lt;br /&gt;
   templatePathMain = fileadmin/dinos/templates/main/&lt;br /&gt;
   templatePathSub = fileadmin/dinos/templates/sub/&lt;br /&gt;
&lt;br /&gt;
      // Define the filenames used as the default HTML templates&lt;br /&gt;
   defaultTemplateFileNameMain = main.html&lt;br /&gt;
   defaultTemplateFileNameSub = sub01.html&lt;br /&gt;
&lt;br /&gt;
      // If there is a page having no template selected, use a template&lt;br /&gt;
      // selected earlier in the rootline. If there is none, use the default&lt;br /&gt;
    inheritMainTemplates = 1&lt;br /&gt;
    inheritSubTemplates = 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Autoparser Konfigurieren (alle IDs als Marker) ###&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1{&lt;br /&gt;
#  content = FILE&lt;br /&gt;
#  content.file = fileadmin/templates/main/main.html&lt;br /&gt;
&lt;br /&gt;
  content &amp;lt; plugin.tx_rlmptmplselector_pi1&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.all.rmTagSections = title&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
    TD.all = 1&lt;br /&gt;
  }&lt;br /&gt;
    relPathPrefix = fileadmin/dinos/templates/main/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== News - Modul ===&lt;br /&gt;
Hier gibt es fertige Konfigurationen:&lt;br /&gt;
[[News (tt_news)]]&lt;br /&gt;
&lt;br /&gt;
=== eCards - sr_sendcard ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The Fast Way:&lt;br /&gt;
# plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE = @import url(&amp;quot;fileadmin/dinos/templates/css/srsendcard.css&amp;quot;);&lt;br /&gt;
# But better is this (more flexible lesser Overhead)&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 14]&lt;br /&gt;
page.includeCSS.file2 = fileadmin/dinos/templates/srsendcard/srsendcard.css&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1{&lt;br /&gt;
&lt;br /&gt;
templateFile = fileadmin/dinos/templates/srsendcard/srsendcard.tmpl&lt;br /&gt;
locale_all = de_DE&lt;br /&gt;
oldYear = 2006&lt;br /&gt;
# Vorschauseite (wenn gewünscht)&lt;br /&gt;
# previewPID = your_page_id&lt;br /&gt;
enableHTMLMail = 1&lt;br /&gt;
siteEmail = info@start-reutlingen.de&lt;br /&gt;
siteName = Erben der Dinos&lt;br /&gt;
# musicDir = EXT:sr_sendcard/music&lt;br /&gt;
#cardMusicFiles = autumnleaves.mid, OverTheRainbow.mid, Pomp_and_Circumstance.mid&lt;br /&gt;
disableMusic = 1&lt;br /&gt;
maxCol = 2&lt;br /&gt;
imageSmallWidth = 150&lt;br /&gt;
imageSmallHeight = 150&lt;br /&gt;
imageBigWidth = 300&lt;br /&gt;
imageBigHeight = 300&lt;br /&gt;
#logo&lt;br /&gt;
#logoAlignHor = right&lt;br /&gt;
#logoAlignVert = bottom&lt;br /&gt;
#useAlternateImageOnPrint&lt;br /&gt;
### For use with other pids use this one too&lt;br /&gt;
#createPID&lt;br /&gt;
#formPID&lt;br /&gt;
#previewPID&lt;br /&gt;
#useCAPTCHA = 0&lt;br /&gt;
#viewPID&lt;br /&gt;
#printPID&lt;br /&gt;
### Erscheinungsbild ###&lt;br /&gt;
cardStamp = fileadmin/dinos/templates/srsendcard/stamp.gif&lt;br /&gt;
#date_stdWrap&lt;br /&gt;
disableSendDate = 1&lt;br /&gt;
cardBgcolors = #FFFFFF,#A00A1C,#FF993F&lt;br /&gt;
cardFontcolors = #000000, #FFFFFF,#A00A1C&lt;br /&gt;
#disableFontcolors&lt;br /&gt;
#disableFontfaces&lt;br /&gt;
#disableCardOptions&lt;br /&gt;
#graphicMess&lt;br /&gt;
#graphicMessWidth&lt;br /&gt;
#graphicMessFontFiles&lt;br /&gt;
#graphicMessFontSizes&lt;br /&gt;
#fontDir&lt;br /&gt;
#doNotShowCardCaptions&lt;br /&gt;
cardPresentationOrder = manual&lt;br /&gt;
salutation = informal&lt;br /&gt;
#disableBgcolors = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zufallsbild tx_ccrandomimage ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript - Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### zufallsbild erzeugen ###&lt;br /&gt;
includeLibs.tx_ccrandomimage = EXT:cc_random_image/pi1/class.tx_ccrandomimage_pi1.php&lt;br /&gt;
&lt;br /&gt;
// USER_INT means &amp;#039;no caching&amp;#039;&lt;br /&gt;
temp.randomImage = USER_INT&lt;br /&gt;
temp.randomImage{&lt;br /&gt;
  userFunc = tx_ccrandomimage_pi1-&amp;gt;main&lt;br /&gt;
  path = fileadmin/randomImage/&lt;br /&gt;
  fileExt = jpg,jpeg,gif,png&lt;br /&gt;
  #Das Render Objekt ist ein content object array (COA) mit einem Bild&lt;br /&gt;
  #Vor dem Rendern werden die ###FILE_x### marker mit den Bildern aus path ersetzt&lt;br /&gt;
  renderObj = COA&lt;br /&gt;
  renderObj {&lt;br /&gt;
    10 = IMAGE&lt;br /&gt;
    10.file = ###FILE_1###&lt;br /&gt;
    // ... weitere Bilder wenn benötigt&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hCard - Microformat ===&lt;br /&gt;
Das Thema Semantic Web wird inzwischen immer interessanter, darum kam ich auf die Idee - fast allein mit TypoScript - das bekannte hCard-Microformat in TYPO3 zu integrieren.&lt;br /&gt;
&lt;br /&gt;
Was wir dafür brauchen ist eine eigene kleine Extension, diese benötigen wir lediglich für eine einzige Zeile Code, welche in die Datei ext_tables.php kommt:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      t3lib_extMgm::addToInsertRecords(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Dazu jetzt noch das TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      temp.hcard = COA&lt;br /&gt;
   2.&lt;br /&gt;
      temp.hcard {&lt;br /&gt;
   3.&lt;br /&gt;
      wrap =&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
       &lt;br /&gt;
   6.&lt;br /&gt;
      10 = IMAGE&lt;br /&gt;
   7.&lt;br /&gt;
      10.file {&lt;br /&gt;
   8.&lt;br /&gt;
      import = uploads/pics/&lt;br /&gt;
   9.&lt;br /&gt;
      import.field = image&lt;br /&gt;
  10.&lt;br /&gt;
      width = 40&lt;br /&gt;
  11.&lt;br /&gt;
      params = class=&amp;quot;photo&amp;quot;&lt;br /&gt;
  12.&lt;br /&gt;
      }&lt;br /&gt;
  13.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  14.&lt;br /&gt;
      20.field = name&lt;br /&gt;
  15.&lt;br /&gt;
      20.typolink.parameter.field = url&lt;br /&gt;
  16.&lt;br /&gt;
      20.typolink.ATagParams = class=&amp;quot;url fn&amp;quot;&lt;br /&gt;
  17.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  18.&lt;br /&gt;
      30.field = company&lt;br /&gt;
  19.&lt;br /&gt;
      30.wrap =&lt;br /&gt;
  20.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  21.&lt;br /&gt;
       &lt;br /&gt;
  22.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  23.&lt;br /&gt;
      40.field = email&lt;br /&gt;
  24.&lt;br /&gt;
      40.typolink.parameter.field = email&lt;br /&gt;
  25.&lt;br /&gt;
      40.typolink.ATagParams = class=&amp;quot;email&amp;quot;&lt;br /&gt;
  26.&lt;br /&gt;
      50 = COA&lt;br /&gt;
  27.&lt;br /&gt;
      50 {&lt;br /&gt;
  28.&lt;br /&gt;
      wrap =&lt;br /&gt;
  29.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  30.&lt;br /&gt;
       &lt;br /&gt;
  31.&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
  32.&lt;br /&gt;
      10.field = address&lt;br /&gt;
  33.&lt;br /&gt;
      10.wrap =&lt;br /&gt;
  34.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  35.&lt;br /&gt;
       &lt;br /&gt;
  36.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  37.&lt;br /&gt;
      20.field = city&lt;br /&gt;
  38.&lt;br /&gt;
      20.wrap = &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  39.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  40.&lt;br /&gt;
      30.field = zip&lt;br /&gt;
  41.&lt;br /&gt;
      30.wrap = &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  42.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  43.&lt;br /&gt;
      40.field = country&lt;br /&gt;
  44.&lt;br /&gt;
      40.wrap = &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  45.&lt;br /&gt;
      }&lt;br /&gt;
  46.&lt;br /&gt;
      60 = TEXT&lt;br /&gt;
  47.&lt;br /&gt;
      60.field = telephone&lt;br /&gt;
  48.&lt;br /&gt;
      60.wrap =&lt;br /&gt;
  49.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  50.&lt;br /&gt;
       &lt;br /&gt;
  51.&lt;br /&gt;
      }&lt;br /&gt;
  52.&lt;br /&gt;
       &lt;br /&gt;
  53.&lt;br /&gt;
      // fe_users dem type shortcut hinzufügen&lt;br /&gt;
  54.&lt;br /&gt;
      tt_content.shortcut.20.0.tables = fe_users&lt;br /&gt;
  55.&lt;br /&gt;
      // für Tabelle fe_users sagen wir jetzt noch wie es gerendert werden soll.&lt;br /&gt;
  56.&lt;br /&gt;
      tt_content.shortcut.20.0.conf.fe_users &amp;lt; temp.hcard&lt;br /&gt;
  57.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Und was hat uns das jetzt gebracht? Ganz einfach:&lt;br /&gt;
&lt;br /&gt;
   1. Wir haben das Content Element &amp;quot;Insert Record&amp;quot; um die Tabelle fe_users erweitert.&lt;br /&gt;
   2. Wir haben mit dem TypoScript aus dem Object &amp;quot;temp.hcard&amp;quot; eine komplette hCard definiert, welche jetzt mit meinem fe_user Datensatz befüllt werden kann.&lt;br /&gt;
   3. Durch die CSS-Klassen kann man die Visitenkarte nun auch noch schön aussehen lassen.&lt;br /&gt;
&lt;br /&gt;
Sind alle Daten vorhanden, könnte der erzeugte HTML-Code dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
       &lt;br /&gt;
   2.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
   3.&lt;br /&gt;
      &amp;lt;img style=&amp;quot;float:left; margin-right:4px&amp;quot; src=&amp;quot;http://typo3weblog.de/frank.png&amp;quot; alt=&amp;quot;photo of &amp;quot; class=&amp;quot;photo&amp;quot;/&amp;gt;&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://typo3weblog.de&amp;quot;&amp;gt;Frank Nägler&amp;lt;/a&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;TYPO3Weblog.de&amp;lt;/div&amp;gt;&lt;br /&gt;
   6.&lt;br /&gt;
       &lt;br /&gt;
   7.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:frank.naegler@e-netconsulting.rl&amp;quot;&amp;gt;frank.naegler@e-netconsulting.rl&amp;lt;/a&amp;gt;&lt;br /&gt;
   8.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   9.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;Sievekingsallee 150b&amp;lt;/div&amp;gt;&lt;br /&gt;
  10.&lt;br /&gt;
       &lt;br /&gt;
  11.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Hamburg&amp;lt;/span&amp;gt;&lt;br /&gt;
  12.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;22111&amp;lt;/span&amp;gt;&lt;br /&gt;
  13.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;Deutschland&amp;lt;/span&amp;gt;&lt;br /&gt;
  14.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  15.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;+49 (0)7000 623 45 37&amp;lt;/div&amp;gt;&lt;br /&gt;
  16.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  17.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Cool oder?&lt;br /&gt;
&lt;br /&gt;
Die komplette Extension fn_hcard als T3X Export habe ich hier für Euch zum Download.&lt;br /&gt;
&lt;br /&gt;
Aus Typo3 Adventskalender2008&lt;br /&gt;
&lt;br /&gt;
===Extension: Direct Shortcuts (sms_directshortcuts)===&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/extensions/repository/view/sms_directshortcuts/current/&lt;br /&gt;
TYPO3 generiert, wie jeder weiss, bei internen Verweisen immer eine extra Seite, die selbst wiederum einen redirect macht. Dieses vorgehen hat einerseits den Vorteil, dass man Skripte dazwischen schieben kann um z.B. Klicks zu tracken, anderseits den Nachteil, dass eine “falsche” URL im Menü zu finden ist. Dieser Nachteil macht sich bemerkbar wenn man sich mit der Suchmaschinenoptimierung von TYPO3 Seiten beschäftigt.&lt;br /&gt;
&lt;br /&gt;
== Nützliche TS-Templates ==&lt;br /&gt;
=== Tabellen im RTE ===&lt;br /&gt;
Details: http://dev.datenwolken.de/index.php?id=195&lt;br /&gt;
==== Standardklasse contenttable unterdrücken eigene Klassen zulassen ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class &amp;gt;&lt;br /&gt;
==== P Tag raus ====&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default &amp;gt;&lt;br /&gt;
 lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =&amp;lt; lib.parseFunc&lt;br /&gt;
&lt;br /&gt;
=== Externes JavaScript einbinden ===&lt;br /&gt;
==== JavaScript im Header ====&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
temp.addHeaderData=COA&lt;br /&gt;
[browser = msie]&lt;br /&gt;
temp.addHeaderData{&lt;br /&gt;
  90 = TEXT&lt;br /&gt;
  90.value (&lt;br /&gt;
&amp;lt;script src=&amp;quot;fileadmin/templates/scripts/ielt7.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  )&lt;br /&gt;
  90.wrap = &amp;lt;!--[if lte IE 7]&amp;gt; | &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
  #90.stdWrap.char = 10&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
Hier wird für IE kleiner als Version 7 ein JavaScript File eingebunden.&lt;br /&gt;
&lt;br /&gt;
==== JavaScript als Marker ====&lt;br /&gt;
Als Temporäres Objekt, kann natürlich auch Javascript in einen Marker eingebunden werden.&lt;br /&gt;
==== JavaScript über Record ====&lt;br /&gt;
Eine Möglichkeit die das leichte ändern der Skripte zuläßt wäre folgende.&lt;br /&gt;
Man legt irgendwo auf einer Seite ein HTML - Element an hinterlegt das Skript und verweist mit TypoScript auf diesen RECORD. Bzw. bindet ihn im Template ein.&lt;br /&gt;
&lt;br /&gt;
ToDo Beispiel&lt;br /&gt;
&lt;br /&gt;
=== xhtml optimierung ===&lt;br /&gt;
Einiges davon braucht man in Version 4+ nicht mehr...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#######################################################&lt;br /&gt;
############ XHTML optimieren&lt;br /&gt;
#######################################################&lt;br /&gt;
&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;html lang=&amp;quot;de&amp;quot; xml:lang=&amp;quot;de&amp;quot;&amp;gt; auf de setzen&lt;br /&gt;
config.htmlTag_langKey = de&lt;br /&gt;
&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList =  div, p, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
#tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
#tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Cleargif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Auch hinter den Headlines&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass nonTypoTagStdWrap nur im Inhalt außerhalb von&lt;br /&gt;
#&amp;lt;typolist&amp;gt; und &amp;lt;typohead&amp;gt; arbeitet:&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typolist.breakoutTypoTagContent = 1&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.breakoutTypoTagContent = 1&lt;br /&gt;
&lt;br /&gt;
# ... und kein &amp;lt;BR&amp;gt; vor dem typohead.&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.wrap &amp;gt;&lt;br /&gt;
# Einstellen von nonTypoTagStdWrap, dass der Text mit P-Tags umschlossen wird.&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap &amp;gt;&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines {&lt;br /&gt;
encapsTagList = div, p&lt;br /&gt;
remapTag.DIV = P&lt;br /&gt;
wrapNonWrappedLines = |&lt;br /&gt;
innerStdWrap_all.ifEmpty =&lt;br /&gt;
innerStdWrap_all.textStyle &amp;lt; tt_content.text.20.textStyle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Schließlich noch Entfernen der alten textstyle-Formatierung des gesamten Haupttextes.&lt;br /&gt;
tt_content.text.20.textStyle &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# ... und der &amp;lt;BR&amp;gt;-Tag nach dem Inhalt wird auch nicht mehr gebraucht...&lt;br /&gt;
tt_content.text.20.wrap &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# clear.gif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# clear.gif hinter den Überschriften entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Attribute für p- und pre-tags entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {&lt;br /&gt;
P.style=&lt;br /&gt;
PRE.style=&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Unterdrückt den Umbruch &amp;lt; br &amp;gt;&lt;br /&gt;
lib.stdheader.10.stdWrap.wrap = |&lt;br /&gt;
tt_content.textpic.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.textpic.20.noStretchAndMarginCells = 1&lt;br /&gt;
tt_content.image.20.noStretchAndMarginCells = 1&lt;br /&gt;
&lt;br /&gt;
# Setup Anker-Tags entfernen&lt;br /&gt;
tt_content.noANameTagForFirstRecord = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inhalte von Backend-Feldern ausgeben ===&lt;br /&gt;
Hinweise dazu findest du unter:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
=== Ein Breadcrumb Menü (Rootline-Menü) ===&lt;br /&gt;
Constants&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#[begin-level] | [end-level]&lt;br /&gt;
# Variante 1: Seite 1 | Seite 2 | Seite 3&lt;br /&gt;
rootlineDelimiter = &amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&lt;br /&gt;
# Variante 2: Seite 1 &amp;gt; Seite 2 &amp;gt; Seite 3&lt;br /&gt;
# delimiter = &amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Setup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rootline = HMENU&lt;br /&gt;
temp.rootline {&lt;br /&gt;
   special = rootline&lt;br /&gt;
&lt;br /&gt;
# zeige komplette rootline an&lt;br /&gt;
   special.range = 2|-1&lt;br /&gt;
&lt;br /&gt;
# Variation: zeige Link auf die übergeordnete Seite&lt;br /&gt;
   #special.range = -2|-2&lt;br /&gt;
&lt;br /&gt;
# Text vor dem Rootline Menü&lt;br /&gt;
   wrap = Sie sind hier:&amp;amp;nbsp;|&lt;br /&gt;
&lt;br /&gt;
   special.targets.3 = page&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.target = _top&lt;br /&gt;
   1.NO {&lt;br /&gt;
   	ATagBeforeWrap = 0&lt;br /&gt;
   	stdWrap.htmlSpecialChars = 1&lt;br /&gt;
   	linkWrap = |{$rootlineDelimiter}|*||*| |&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 1]&lt;br /&gt;
temp.rootline.wrap = You are here:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 2]&lt;br /&gt;
temp.rootline.wrap = Vous êtes ici:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ein CSS-Template mit Markern nutzen ===&lt;br /&gt;
Ein CSS File wird eingelesen, enthaltene Marker dynamisch ersetzt und die Styles im Headerbereich der Seite als Inline-Styles eingebunden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
color1 = FFE292&lt;br /&gt;
color2 = F68D6F&lt;br /&gt;
color3 = FABD9E&lt;br /&gt;
&lt;br /&gt;
backgroundImage = fileadmin/templates/main/images/navBack-grey.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# das Objekt zunächst als Bibliothek zur späteren Verwendung&lt;br /&gt;
lib.stylesheet.default = TEMPLATE&lt;br /&gt;
lib.stylesheet.default {&lt;br /&gt;
# template einlesen&lt;br /&gt;
  template = FILE&lt;br /&gt;
  template.file=fileadmin/templates/main/colors.css&lt;br /&gt;
# Platzhalter ersetzten&lt;br /&gt;
  marks{&lt;br /&gt;
     COLOR1 = TEXT&lt;br /&gt;
     COLOR1.value = {$color1}&lt;br /&gt;
     COLOR2 = TEXT&lt;br /&gt;
     COLOR2.value = {$color2}&lt;br /&gt;
     COLOR3 = TEXT&lt;br /&gt;
     COLOR3.value = {$color3}&lt;br /&gt;
     &lt;br /&gt;
     NAVBACK = TEXT&lt;br /&gt;
     NAVBACK.value = {$backgroundImage}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Stylesheet in Header eintragen&lt;br /&gt;
page.headerData{&lt;br /&gt;
   90 = COA&lt;br /&gt;
   90{&lt;br /&gt;
      wrap = &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- | --&amp;gt;&amp;lt;/style&amp;gt;&lt;br /&gt;
      50 &amp;lt; lib.stylesheet.default&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;
&lt;br /&gt;
=== Bild aus Media-Feld auslesen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mediaFieldImage=IMAGE&lt;br /&gt;
temp.mediaFieldImage.file {  &lt;br /&gt;
  import.data = levelmedia: 2,slide  &lt;br /&gt;
  import = uploads/media/  &lt;br /&gt;
  import.listNum = 0  &lt;br /&gt;
  #width = 270  &lt;br /&gt;
  #height= 300&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bild aus Ressourcen Feld auslesen ===&lt;br /&gt;
Hinweis Seiteneigenschaften &amp;gt; Resourcen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 temp.mein Bild = IMG_RESSOURCE&lt;br /&gt;
 temp.mein Bild{&lt;br /&gt;
  file = hintergrund*.jpg&lt;br /&gt;
  stdWrap.wrap = &amp;lt;div style=&amp;quot;background-image: | ; padding: 5px;&amp;quot;&amp;gt; ein Kasten &amp;lt;/div&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Typo3 vergibt beim vervielfältigen automatisch eine Endung. Damit das Bild trotzdem immer gefunden wird, ein Sternchen setzen (Joker)&lt;br /&gt;
&lt;br /&gt;
=== Bild automatisch mit Alt-Tag versehen ===&lt;br /&gt;
Dieses TypoScript füllt das Alt-Tag Feld mit Daten aus dem Bildnamen z.B. wird Unser_Urlaubsort.jpg zu Unser Urlaubsort&lt;br /&gt;
&lt;br /&gt;
[[Bild automatisch mit Alt-Tag versehen]]&lt;br /&gt;
&lt;br /&gt;
=== Logo mit Verlinkung auf die Homepage (1.2)===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Link für das Logo&lt;br /&gt;
# Zahl (Seiten-ID), URL (www.zielseite.de) oder Email-Adresse&lt;br /&gt;
logoLink = 1&lt;br /&gt;
logoFile = fileadmin/templates/images/logo.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Fügt ein Logo mit Link ein&lt;br /&gt;
&lt;br /&gt;
temp.logo = IMAGE&lt;br /&gt;
temp.logo {&lt;br /&gt;
   #file = /fileadmin/dinos/templates/main/images/logo-rt.gif&lt;br /&gt;
   file = {$logoFile}&lt;br /&gt;
   stdWrap.typolink.parameter = {$logoLink}&lt;br /&gt;
}   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copyright mit immer aktuellem Jahr ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.copyright = COA&lt;br /&gt;
temp.copyright{&lt;br /&gt;
   5= TEXT&lt;br /&gt;
   5.value = &amp;amp;copy;&amp;amp;nbsp;&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   #HeUte Timestamp einlesen&lt;br /&gt;
   10.data = date:U&lt;br /&gt;
   10.data.strftime = %Y &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein anderes Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subparts.footer{&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   10.data = date:Y&lt;br /&gt;
   10.wrap = &amp;lt;p class=&amp;quot;footer&amp;quot;&amp;gt;&amp;amp;copy;&amp;amp;nbsp;|&amp;amp;nbsp;Ich&amp;lt;/p&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datum der letzten Änderung anzeigen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 lastChangePrefix = Letzte Änderung:&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = COA&lt;br /&gt;
temp.lastChange.5 = TEXT&lt;br /&gt;
temp.lastChange.5.value={$lastChangePrefix}&lt;br /&gt;
temp.lastChange.10 = TEXT&lt;br /&gt;
temp.lastChange.10.register:SYS_LASTCHANGED&lt;br /&gt;
temp.lastChange.10.strftime = %d.%m.%Y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Variante ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = TEXT&lt;br /&gt;
temp.lastChange {&lt;br /&gt;
  data = page:lastUpdated&lt;br /&gt;
  if.isTrue.data = page:lastUpdated&lt;br /&gt;
  date = d.m.Y&lt;br /&gt;
  wrap = Letzte Änderung:&amp;amp;nbsp;|&lt;br /&gt;
  wrap2 = |&lt;br /&gt;
  data = register : SYS_LASTCHANGED&lt;br /&gt;
  if &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Seiten IDs im Seitenbaum anzeigen ===&lt;br /&gt;
UserTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
  pageTree.showPageIdWithTitle = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client Daten des Benutzers ausgeben ===&lt;br /&gt;
&lt;br /&gt;
      temp.browserinfo = COA_INT&lt;br /&gt;
      temp.browserinfo {&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
      10.data = TSFE:clientInfo|SYSTEM&lt;br /&gt;
      10.wrap = &amp;amp;lt;p&amp;amp;gt; | &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
      20.data = TSFE:clientInfo|BROWSER&lt;br /&gt;
      20.wrap = | &amp;amp;amp;nbsp;&lt;br /&gt;
       &lt;br /&gt;
      30 = TEXT&lt;br /&gt;
      30.data = TSFE:clientInfo|VERSION&lt;br /&gt;
      30.wrap = | &amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
== Die Ausgabe von Inhalten verändern ==&lt;br /&gt;
&lt;br /&gt;
=== Layout-Rahmen verändern===&lt;br /&gt;
[[Typo3 - Rahmen (Frames)]]&lt;br /&gt;
&lt;br /&gt;
=== Rendering von Inhalten ===&lt;br /&gt;
&lt;br /&gt;
=== Ausgeben von Informationen im head der Seite ===&lt;br /&gt;
Wie kann man Stylesheet angaben, Metatags, Skripte etc. im Header ausgeben&lt;br /&gt;
[[Typo3 - Tipps und Tricks]] (page.head Objekt)&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Ausgaben im Quelltext verhindern ===&lt;br /&gt;
[[TYPO3 - Unnötige Ausgaben im Quelltext verhindern]]&lt;br /&gt;
&lt;br /&gt;
== TypoScript - Basiswissen ==&lt;br /&gt;
[[Links mit TypoSkript anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Suche ==&lt;br /&gt;
&lt;br /&gt;
weitere Infos zu Indexed Search:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - indexed search]]&lt;br /&gt;
&lt;br /&gt;
== Mit HTML und CObj erzeugtes Login ==&lt;br /&gt;
Das Beispiel von Tim Lochmüller aus dem Adventskalender 2008, zeigt wie man mit dem Template Objekte größere HTML - Bausteine verwenden kann.&lt;br /&gt;
&lt;br /&gt;
Login mit TS &amp;amp; cObj TEMPLATE&lt;br /&gt;
Georg Ringer in TYPO3, Templates, Tutorial, TypoScript&lt;br /&gt;
&lt;br /&gt;
Nach der interessanten Vorstellung von cli-Scripten durch Frank in Türchen 15 zeigt das folgende Tutorial einen guten Weg, einen Login/Logout-Bereich mit TS &amp;amp; HTML zu verwirklichen, ohne dabei auf irgendeine Extension zurückgreifen zu müssen.&lt;br /&gt;
&lt;br /&gt;
Folgendes HTML ist notwendig und wird beispielsweise in fileadmin/template/login.html abgelegt: http://pastebin.com/f4e963e25&lt;br /&gt;
Die beiden Subparts sind jeweils für den Login- &amp;amp; Logout-Bereich zuständig und werden mittels Condition umgeschalten.&lt;br /&gt;
&lt;br /&gt;
Das TS ist sehr einfach aufgebaut&lt;br /&gt;
&lt;br /&gt;
    lib.login = TEMPLATE&lt;br /&gt;
    lib.login {&lt;br /&gt;
    template = FILE&lt;br /&gt;
    template.file = fileadmin/template/login.html&lt;br /&gt;
&lt;br /&gt;
    workOnSubpart = TPL_LOGIN&lt;br /&gt;
    marks {&lt;br /&gt;
    URL = TEXT&lt;br /&gt;
    URL.data = getIndpEnv:TYPO3_REQUEST_URL&lt;br /&gt;
&lt;br /&gt;
    PID = TEXT&lt;br /&gt;
    PID.value = 10789&lt;br /&gt;
&lt;br /&gt;
    REGISTER = TEXT&lt;br /&gt;
    REGISTER {&lt;br /&gt;
    value = Mitglied werden&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10786&lt;br /&gt;
    additionalParams = &amp;amp;tx_srfeuserregister_pi1[cmd]=edit&lt;br /&gt;
    useCacheHash = 1&lt;br /&gt;
    ATagParams = class=”link link1″&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PWD = TEXT&lt;br /&gt;
    PWD {&lt;br /&gt;
    value = Password vergessen?&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10788&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PROFILE = TEXT&lt;br /&gt;
    PROFILE {&lt;br /&gt;
    value = Mein Wanderprofil!&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10790&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    [usergroup = *]&lt;br /&gt;
    lib.login.workOnSubpart = TPL_LOGOUT&lt;br /&gt;
&lt;br /&gt;
    [global]&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Variablen sind:&lt;br /&gt;
&lt;br /&gt;
    * URL: Die aktuelle URL, auf die nach dem Login/Logout auch weitergeleitet wird&lt;br /&gt;
    * PID: Id der Seite, die die Benutzer enthält&lt;br /&gt;
&lt;br /&gt;
Nützlich sind weiters:&lt;br /&gt;
&lt;br /&gt;
    * REGISTER: Link zu einer Seite, auf der man sich neu registrieren kann&lt;br /&gt;
    * PWD/PROFILE: Weitere Links zu Seiten nach Bedarf&lt;br /&gt;
&lt;br /&gt;
Die vorgestellte Variante funktioniert out-of-the-box und muss für andere Algorithmen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Das Tutorial soll dazu anregen, das TEMPLATE-Objekt öfters als nur 1x zu verwenden, denn gerade wenn es um das Inkludieren von etwas mehr HTML geht, ist dies der beste, schnellste und sauberste Weg.&lt;br /&gt;
&lt;br /&gt;
== Benutzer ==&lt;br /&gt;
=== Autor-Feld bei neuen Seiten automatisch anlegen ===&lt;br /&gt;
 TCAdefaults.pages.author = &amp;lt;Name des Redakteurs&amp;gt;&lt;br /&gt;
 TCAdefaults.pages.author_email = &amp;lt;EMail-Adresse des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das funktioniert aber nur dann wenn eine Seite neu angelegt wird. Will man viele Seiten einem Redakteur zuordnen kann man das über eien MySQL abfrage machen:&lt;br /&gt;
&lt;br /&gt;
 UPDATE `pages` SET `author` = &amp;#039;&amp;lt;Name des Redakteurs&amp;gt;&amp;#039;, `author_email` =&lt;br /&gt;
 &amp;#039;&amp;lt;EMail-Adresse des Redakteurs&amp;gt;&amp;#039;&lt;br /&gt;
 WHERE 1 AND `perms_userid` = &amp;lt;UserId des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in perms_userid steht die ID des Besitzers der Seite, deshalb kann man diesen mit Hilfe des Whereclause ausfiltern.&lt;br /&gt;
&lt;br /&gt;
=== Author Feld, Email-Feld und News Author automatisch anlegen ===&lt;br /&gt;
Als weitere Möglichkeit gibt es die Extension cron_setdefaultauthor die genau diese Aufgaben übernimmt. Sie arbeitet im Prinzip wie oben angeführt.&lt;br /&gt;
&lt;br /&gt;
== Ändern von Extension Meldungen durch den Redakteur ==&lt;br /&gt;
&lt;br /&gt;
Adventskalender 2008 von Tim Lochmüller&lt;br /&gt;
Immer wieder erlebe ich es, dass der Kunde Texte selber ändern möchte, klar dafür hat er ja auch von uns TYPO3 bekommen. Leider Zum Glück, möchte der Kunde aber manchmal alles pflegen, also auch Texte die aus LocalLang-Dateien oder Templates kommen.&lt;br /&gt;
&lt;br /&gt;
Eine sehr einfache aber durchaus effektive Lösung dafür ist mal wieder ein wenig TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError = RECORDS&lt;br /&gt;
   2.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError {&lt;br /&gt;
   3.&lt;br /&gt;
      tables = tt_content&lt;br /&gt;
   4.&lt;br /&gt;
      source = 123&lt;br /&gt;
   5.&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
Jetzt noch das ContentElement mit der UID 123 im Seitenbaum anlegen und folgenden PHP Code in der Extension verwenden:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      $marker[&amp;#039;###ERR_SEARCH###&amp;#039;] = $this-&amp;gt;cObj-&amp;gt;cObjGetSingle(&lt;br /&gt;
   2.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError&amp;#039;],&lt;br /&gt;
   3.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError.&amp;#039;]&lt;br /&gt;
   4.&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
Das war es schon, jetzt enthält der Marker ###ERR_SEARCH### den Content, den der Kunde selbst eingepflegt hat. Natürlich muss man kein RECORD nehmen, sondern kann auch alle anderen TS-Objekte wie TEXT oder IMAGE.&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1656</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=1656"/>
		<updated>2009-04-07T17:13:15Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: /* Nützliche TS-Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Auf Daten zugreifen ==&lt;br /&gt;
Beispiele gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - stdWrap]]&lt;br /&gt;
&lt;br /&gt;
Die stdWrap Eigenschaft steht vielen Objekten zur Verfügung. Wenn Sie vorhanden ist ist Sie der Problemlöser für fast alle Probleme :-).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - TSFE]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Das Media Feld]]&lt;br /&gt;
&lt;br /&gt;
== Standardeinstellungen ==&lt;br /&gt;
[[Typo3 - Standardeinstellungen]]&lt;br /&gt;
&lt;br /&gt;
== Quellcode aufräumen - Sourcecode verbessern - valides XHTML ==&lt;br /&gt;
Der Core produziert seit 4.0 valides XHTML&lt;br /&gt;
&lt;br /&gt;
weitere Hilfen wenn Extensions nicht valide arbeiten bieten:&lt;br /&gt;
&lt;br /&gt;
Installation von Tidy auf dem SErver (aktivieren im Install-Tool)&lt;br /&gt;
&lt;br /&gt;
HTML Cleaner http://typo3.org/extensions/repository/view/qcom_htmlcleaner/2.4.0/&lt;br /&gt;
&lt;br /&gt;
Das Bordeigene HTML-Cleaning: config.xhtml_cleaning = all&lt;br /&gt;
&lt;br /&gt;
Vorsicht bei den Cleanern wenn JavaScript im Spiel ist weil dieser z.T. zerstört werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel aus dem Forum zum Quelltext aufräumen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Einstellen des DocType auf XHTML Transitional&lt;br /&gt;
config.doctype = xhtml_trans&lt;br /&gt;
#XHTML Cleaning aktivieren&lt;br /&gt;
config.xhtml_cleaning = all&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
=== GMenu mit Bildern aus den Seiteneigenschaften (Media-Feld) ===&lt;br /&gt;
Ein Schnipsel vom 12.3.2009 typo3 blogger&lt;br /&gt;
Nicht sehr oft benötigt, aber unter Umständen dennoch hilfreich: ein kleines Copy&amp;amp;Paste Tutorial zur Erstellung eines GMENUs mit Bildern aus dem “media”-Feld der Seiteneigenschaften. Zu beachten gibt es: der GIFBUILDER greift bei diesem Snippet das Bild nicht an, sodass es unverändert im Frontend ausgegeben wird. Dies hatte bei mir den Grund, dass die Website nur aus Bildern besteht und Photoshop nunmal bessere Ergebnisse als ImageMagick bzw. GraphicsMagick liefert - deshalb wollte ich auch nicht, dass er irgendwas an den Bildern verändert oder neu berechnet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.menu = HMENU&lt;br /&gt;
temp.menu {&lt;br /&gt;
	1 = GMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		noBlur = 0&lt;br /&gt;
		NO = 1&lt;br /&gt;
		NO {&lt;br /&gt;
			wrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
			altImgResource.import = uploads/media/&lt;br /&gt;
			altImgResource.import.field = media&lt;br /&gt;
			altImgResource.import.listNum = 0&lt;br /&gt;
 &lt;br /&gt;
			ATagTitle.field = subtitle // title&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		RO = 1&lt;br /&gt;
		RO &amp;lt; .NO&lt;br /&gt;
		RO {&lt;br /&gt;
			altImgResource.import.listNum = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .RO&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.menu &amp;lt; temp.menu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Welches Bild (falls mehrere vorhanden sind) TYPO3 nun für das Erzeugen des Menüs nimmt bestimmt folgende Zeile:&lt;br /&gt;
&lt;br /&gt;
 altImgResource.import.listNum = 0&lt;br /&gt;
&lt;br /&gt;
Zu beachten gibt es dabei: wie in der Datentechnik üblich fängt man bei 0 zu zählen an, 0 ist dabei das erste Bild, 1 das zweite, 2 das dritte, usw.&lt;br /&gt;
&lt;br /&gt;
=== GMENU und wrapItemAndSub Workaround mit TMENU===&lt;br /&gt;
Ebenfalls von Typo3Blogger&lt;br /&gt;
&lt;br /&gt;
Freunde von semantisch korrektem HTML die auf ein grafisches, mehrstufiges Menü angewiesen sind, werden wissen wovon ich spreche. Man hat ein tolles GMENU gebastelt, welches wunderbare Grafiken liefert und fragt sich “warum ist mein HTML kaputt?”. Nach ein paar Sekunden googlen findet man die Antwort: GMENU fehlt die Eigenschaft “wrapItemAndSub”, mit welchem sich einfach verschachtelte Menüs realisieren lassen. Es gibt viele Ansätze dies zu umgehen, manche arbeiten mit IFSUB, manche verlassen sich auf Tidy. Vor Kurzem stand ich (wieder einmal) vor dem Problem und wollte es einmal anders lösen.&lt;br /&gt;
&lt;br /&gt;
Dabei bin ich auf folgende Lösung gestoßen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mainMenu = HMENU&lt;br /&gt;
temp.mainMenu {&lt;br /&gt;
	1 = TMENU&lt;br /&gt;
	1 {&lt;br /&gt;
		wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
		NO = 1&lt;br /&gt;
        	NO {&lt;br /&gt;
        		wrapItemAndSub = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
        		doNotShowLink = 1&lt;br /&gt;
 &lt;br /&gt;
			RO = 1&lt;br /&gt;
			ATagTitle.field = title&lt;br /&gt;
 &lt;br /&gt;
			beforeImg = GIFBUILDER&lt;br /&gt;
			beforeImg {&lt;br /&gt;
				XY=[20.w]+15,42&lt;br /&gt;
				backColor = #1092AD&lt;br /&gt;
 &lt;br /&gt;
				10 = TEXT&lt;br /&gt;
				10 {&lt;br /&gt;
					text {&lt;br /&gt;
						field = title&lt;br /&gt;
						align = center&lt;br /&gt;
					}			&lt;br /&gt;
 &lt;br /&gt;
					fontFile = fileadmin/font.ttf&lt;br /&gt;
					fontSize = 16&lt;br /&gt;
					fontColor = #FFFFFF&lt;br /&gt;
 &lt;br /&gt;
					offset = 0,34&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
 &lt;br /&gt;
			beforeROImg &amp;lt; .beforeImg&lt;br /&gt;
			beforeROImg.20.fontColor = #FFD20F&lt;br /&gt;
			beforeImgLink = 1&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		ACT &amp;lt; .NO&lt;br /&gt;
		ACT {&lt;br /&gt;
			RO = 0&lt;br /&gt;
			beforeImg.20.fontColor = #FF0000&lt;br /&gt;
			wrapItemAndSub = &amp;lt;li class=&amp;quot;act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
       2 &amp;lt; .1&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
lib.mainMenu &amp;lt; temp.mainMenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das tolle an dieser Lösung ist nicht nur, dass man wrapItemAndSub verwenden kann, nein auch alle anderen Eigenschaften und Zustände des TMENU stehen einem zur Verfügung!&lt;br /&gt;
&lt;br /&gt;
Ich frage mich, warum wrapItemAndSub bis heute noch nicht in TYPO3 implementiert wurde. Vielleicht wäre es mit der aktuellen Veröffentlichung der TYPO3 4.3 Alpha 2 und der Aufforderung die Feature-Wunschliste zu füllen einmal Zeit diesem Punkt etwas Nachdruck zu verleihen. Falls ihr noch andere Lösungsansätze auf Lager oder bessere Ideen habt, bitte informiert uns in den Comments!&lt;br /&gt;
&lt;br /&gt;
=== Klassisches List Menu ===&lt;br /&gt;
Dieses Menü kann als Grundbaustein für alle möglichen Menüs verwendet werden. Man kopiert sich das Menü in ein neues Objekt und modifiziert dort die Eigenschaften wie man sie braucht. Als Alternative gibt es noch das [[Menue als CSS formatierte Liste]] in dem ein fixer Startpunkt vorgegeben ist:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Accessible ====&lt;br /&gt;
benötigt cronaccessiblemenues&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
  IProcFunc = user_cronaccessiblemenus-&amp;gt;makeAccessible&lt;br /&gt;
&lt;br /&gt;
//NO.after = xyz&lt;br /&gt;
# Access Keys einschalten&lt;br /&gt;
  IProcFunc.accessKeys = 1&lt;br /&gt;
&lt;br /&gt;
# Hierarchische Nummerierung der Menüpunkte einschalten&lt;br /&gt;
  IProcFunc.dfn = 1&lt;br /&gt;
  IProcFunc.accessKeyWrap = &amp;lt;span class=&amp;quot;accessKey&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  IProcFunc.appendWrap = &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;amp;nbsp;(ALT-|)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Die folgenden Accesskeys nicht verwenden (bereits belegt)&lt;br /&gt;
&lt;br /&gt;
  IProcFunc.forbiddenKeys = 0,D,B,A,F,X,m,p&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
#    stdWrap.wrap = |abc&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;span class=&amp;quot;invisible&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Classic (not accessible) ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.listMenu = HMENU&lt;br /&gt;
&lt;br /&gt;
# Falls das Menü nicht bei der obersten Ebene anfangen soll&lt;br /&gt;
 temp.listMenu.entryLevel = 1&lt;br /&gt;
&lt;br /&gt;
# Bei Bedarf einzelne Seiten aus dem Menü ausschließen&lt;br /&gt;
#temp.listMenu.excludeUidList = 1,2,3&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.1 = TMENU&lt;br /&gt;
temp.listMenu.1 {&lt;br /&gt;
  wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  noBlur = 1&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für nicht-aktive Seiten&lt;br /&gt;
&lt;br /&gt;
  NO {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;NO&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;|*|&amp;lt;li class=&amp;quot;NO last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für Seiten, die sich in der Rootline befinden&lt;br /&gt;
&lt;br /&gt;
  ACT = 1&lt;br /&gt;
  ACT {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;ACT&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;ACT last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    ATagTitle.field = abstract // description&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
# Einstellungen für die aktuelle Seite&lt;br /&gt;
&lt;br /&gt;
  CUR = 1&lt;br /&gt;
  CUR {&lt;br /&gt;
    wrapItemAndSub = |*| &amp;lt;li class=&amp;quot;CUR&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;CUR last&amp;quot;&amp;gt; | &amp;lt;/li&amp;gt;&lt;br /&gt;
    stdWrap.htmlSpecialChars = 1&lt;br /&gt;
    doNotLinkIt = 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Gleiche Einstellungen für die nächsten Ebenen&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.2 = TMENU&lt;br /&gt;
temp.listMenu.2 &amp;lt; temp.listMenu.1&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.3 = TMENU&lt;br /&gt;
temp.listMenu.3 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
temp.listMenu.4 = TMENU&lt;br /&gt;
temp.listMenu.4 &amp;lt; temp.listMenu.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multilanguage Menu ===&lt;br /&gt;
[[Typo3 - Multilanguage Menu]]&lt;br /&gt;
=== Bilder Menü ===&lt;br /&gt;
siehe: [[Typo3 - Bildermenü]]&lt;br /&gt;
=== Einfaches Menü mit 1 Ebene (CSS) ===&lt;br /&gt;
siehe: [[Menue als CSS formatierte Liste]]&lt;br /&gt;
&lt;br /&gt;
=== Menü mit 2 Ebenen als verschachtelte Liste ===&lt;br /&gt;
Dieses Menü ist besonders für vertikale Navigationen geeignet&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Einstieg Level 1&lt;br /&gt;
navi-L12-startID = 1&lt;br /&gt;
navi-L12-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
navi-L12-delimiter =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.navi-L12 = HMENU&lt;br /&gt;
temp.navi-L12 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi-L12-startID}&lt;br /&gt;
  # Ebene für den Einstieg (nicht vergessen wg. 2. Level)&lt;br /&gt;
  entryLevel = 1&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1{&lt;br /&gt;
    noBlur = 1&lt;br /&gt;
    wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
    NO = 1&lt;br /&gt;
    NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACT = 1&lt;br /&gt;
    ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
    ACTIFSUB = 1&lt;br /&gt;
    #Wenn Unterpunkte dann li aufmachen&lt;br /&gt;
    ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
  }&lt;br /&gt;
  2 = TMENU&lt;br /&gt;
  2{&lt;br /&gt;
   noBlur = 1&lt;br /&gt;
   NO = 1&lt;br /&gt;
   #Unterpunkt also neue ul und danach li zu (von L1 geöffnet)&lt;br /&gt;
   wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   ACT = 1&lt;br /&gt;
   ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$navi-L12-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #ACTIFSUB = 1&lt;br /&gt;
  #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Menü mit 2 Ebenen als separate Listen ===&lt;br /&gt;
Dieses Menü ist besonders für horizontale Navigationen geeignet. &lt;br /&gt;
&lt;br /&gt;
Da die 2. Ebene relativ angegeben wird muß man bei mehreren Navigationsbäumen aufpassen, daß evt. ein Untermenü einer anderen Navigation (anderer Baum) ebenfalls angezeigt wird. Das läßt sich z.B. umgehen in dem man das Navitemplate erst im Unterbaum setzt oder indem man im Hauptbaum eine Bedingung setzt ([PIDinRootline = 123])&lt;br /&gt;
&lt;br /&gt;
Ebene 1 ist im Prinzip eine einfache Liste:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navi nur Level1&lt;br /&gt;
#Startpunkt&lt;br /&gt;
navi_startID = 1&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviL1-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Top Navigation ###&lt;br /&gt;
temp.naviL1 = HMENU&lt;br /&gt;
temp.naviL1 {&lt;br /&gt;
  #stdWrap.case = lower&lt;br /&gt;
  special = directory&lt;br /&gt;
  # Seitenid für den Einstieg&lt;br /&gt;
  special.value = {$navi_startID}&lt;br /&gt;
  1 = TMENU&lt;br /&gt;
  1.noBlur = 1&lt;br /&gt;
  1.wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
  1.NO = 1&lt;br /&gt;
  1.NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  1.ACT = 1&lt;br /&gt;
  1.ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviL1-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
  #1.ACTIFSUB = 1&lt;br /&gt;
  #1.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Ebene 2 wird eine weitere Liste generiert wenn man sich in einem bestimmten Level befindet:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Navigation nur ab Level x  als ul (Standard entry Level1=2.Level)&lt;br /&gt;
&lt;br /&gt;
#Trennzeichen für horizontale Navi:&lt;br /&gt;
naviLx-delimiter = &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
naviLx-entryLevel = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.naviLx = HMENU&lt;br /&gt;
temp.naviLx {&lt;br /&gt;
  # Seitenbaumebene ab Level 1 darstellen (2. Ebene)&lt;br /&gt;
   entryLevel = {$naviLx-entryLevel}&lt;br /&gt;
# Level 2&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1{&lt;br /&gt;
      noBlur = 1&lt;br /&gt;
      wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
      NO = 1&lt;br /&gt;
   # Für horizontale Navi mit delimiter bei vertikal einfach nichts setzen&lt;br /&gt;
      NO.linkWrap = |*| &amp;lt;li&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      ACT = 1&lt;br /&gt;
   # Für vertikale Navi ohne delimiter...      &lt;br /&gt;
      #ACT.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   # und horizontal mit delimiter&lt;br /&gt;
      ACT.linkWrap =  |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|{$naviLx-delimiter}&amp;lt;/li&amp;gt; |*| &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
      #ACTIFSUB = 1&lt;br /&gt;
      #ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;on&amp;quot;&amp;gt;|&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Menü als CSS formatierte Liste (allgemein) ===&lt;br /&gt;
[[Menue als CSS formatierte Liste]]&lt;br /&gt;
=== CSS-Flyout Menü ===&lt;br /&gt;
[[Typo3 - CSS-Flyout Menü]]&lt;br /&gt;
&lt;br /&gt;
=== Sauberes grafisches Menü ===&lt;br /&gt;
[[Typo3 - Grafisches Menü]]&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
=== Autoparser (automaketemplate und Templateswitcher (tx_rlmptmplselector) konfigurieren ===&lt;br /&gt;
Der Template - Switcher benötigt automaketemplate (oder man arbeitet direkt mit TS-Templates). &lt;br /&gt;
Am besten gleich beide in einem Basis Template konfigurieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### SET UP TEMPLATE SELECTOR ###&lt;br /&gt;
plugin.tx_rlmptmplselector_pi1 {&lt;br /&gt;
&lt;br /&gt;
// Define the paths leading to our HTML template files&lt;br /&gt;
   templatePathMain = fileadmin/dinos/templates/main/&lt;br /&gt;
   templatePathSub = fileadmin/dinos/templates/sub/&lt;br /&gt;
&lt;br /&gt;
      // Define the filenames used as the default HTML templates&lt;br /&gt;
   defaultTemplateFileNameMain = main.html&lt;br /&gt;
   defaultTemplateFileNameSub = sub01.html&lt;br /&gt;
&lt;br /&gt;
      // If there is a page having no template selected, use a template&lt;br /&gt;
      // selected earlier in the rootline. If there is none, use the default&lt;br /&gt;
    inheritMainTemplates = 1&lt;br /&gt;
    inheritSubTemplates = 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Autoparser Konfigurieren (alle IDs als Marker) ###&lt;br /&gt;
&lt;br /&gt;
plugin.tx_automaketemplate_pi1{&lt;br /&gt;
#  content = FILE&lt;br /&gt;
#  content.file = fileadmin/templates/main/main.html&lt;br /&gt;
&lt;br /&gt;
  content &amp;lt; plugin.tx_rlmptmplselector_pi1&lt;br /&gt;
  elements {&lt;br /&gt;
    BODY.all = 1&lt;br /&gt;
    BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
    HEAD.all = 1&lt;br /&gt;
    HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
    HEAD.all.rmTagSections = title&lt;br /&gt;
    DIV.all = 1&lt;br /&gt;
    TD.all = 1&lt;br /&gt;
  }&lt;br /&gt;
    relPathPrefix = fileadmin/dinos/templates/main/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== News - Modul ===&lt;br /&gt;
Hier gibt es fertige Konfigurationen:&lt;br /&gt;
[[News (tt_news)]]&lt;br /&gt;
&lt;br /&gt;
=== eCards - sr_sendcard ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The Fast Way:&lt;br /&gt;
# plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE = @import url(&amp;quot;fileadmin/dinos/templates/css/srsendcard.css&amp;quot;);&lt;br /&gt;
# But better is this (more flexible lesser Overhead)&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 14]&lt;br /&gt;
page.includeCSS.file2 = fileadmin/dinos/templates/srsendcard/srsendcard.css&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srsendcard_pi1{&lt;br /&gt;
&lt;br /&gt;
templateFile = fileadmin/dinos/templates/srsendcard/srsendcard.tmpl&lt;br /&gt;
locale_all = de_DE&lt;br /&gt;
oldYear = 2006&lt;br /&gt;
# Vorschauseite (wenn gewünscht)&lt;br /&gt;
# previewPID = your_page_id&lt;br /&gt;
enableHTMLMail = 1&lt;br /&gt;
siteEmail = info@start-reutlingen.de&lt;br /&gt;
siteName = Erben der Dinos&lt;br /&gt;
# musicDir = EXT:sr_sendcard/music&lt;br /&gt;
#cardMusicFiles = autumnleaves.mid, OverTheRainbow.mid, Pomp_and_Circumstance.mid&lt;br /&gt;
disableMusic = 1&lt;br /&gt;
maxCol = 2&lt;br /&gt;
imageSmallWidth = 150&lt;br /&gt;
imageSmallHeight = 150&lt;br /&gt;
imageBigWidth = 300&lt;br /&gt;
imageBigHeight = 300&lt;br /&gt;
#logo&lt;br /&gt;
#logoAlignHor = right&lt;br /&gt;
#logoAlignVert = bottom&lt;br /&gt;
#useAlternateImageOnPrint&lt;br /&gt;
### For use with other pids use this one too&lt;br /&gt;
#createPID&lt;br /&gt;
#formPID&lt;br /&gt;
#previewPID&lt;br /&gt;
#useCAPTCHA = 0&lt;br /&gt;
#viewPID&lt;br /&gt;
#printPID&lt;br /&gt;
### Erscheinungsbild ###&lt;br /&gt;
cardStamp = fileadmin/dinos/templates/srsendcard/stamp.gif&lt;br /&gt;
#date_stdWrap&lt;br /&gt;
disableSendDate = 1&lt;br /&gt;
cardBgcolors = #FFFFFF,#A00A1C,#FF993F&lt;br /&gt;
cardFontcolors = #000000, #FFFFFF,#A00A1C&lt;br /&gt;
#disableFontcolors&lt;br /&gt;
#disableFontfaces&lt;br /&gt;
#disableCardOptions&lt;br /&gt;
#graphicMess&lt;br /&gt;
#graphicMessWidth&lt;br /&gt;
#graphicMessFontFiles&lt;br /&gt;
#graphicMessFontSizes&lt;br /&gt;
#fontDir&lt;br /&gt;
#doNotShowCardCaptions&lt;br /&gt;
cardPresentationOrder = manual&lt;br /&gt;
salutation = informal&lt;br /&gt;
#disableBgcolors = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zufallsbild tx_ccrandomimage ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript - Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### zufallsbild erzeugen ###&lt;br /&gt;
includeLibs.tx_ccrandomimage = EXT:cc_random_image/pi1/class.tx_ccrandomimage_pi1.php&lt;br /&gt;
&lt;br /&gt;
// USER_INT means &amp;#039;no caching&amp;#039;&lt;br /&gt;
temp.randomImage = USER_INT&lt;br /&gt;
temp.randomImage{&lt;br /&gt;
  userFunc = tx_ccrandomimage_pi1-&amp;gt;main&lt;br /&gt;
  path = fileadmin/randomImage/&lt;br /&gt;
  fileExt = jpg,jpeg,gif,png&lt;br /&gt;
  #Das Render Objekt ist ein content object array (COA) mit einem Bild&lt;br /&gt;
  #Vor dem Rendern werden die ###FILE_x### marker mit den Bildern aus path ersetzt&lt;br /&gt;
  renderObj = COA&lt;br /&gt;
  renderObj {&lt;br /&gt;
    10 = IMAGE&lt;br /&gt;
    10.file = ###FILE_1###&lt;br /&gt;
    // ... weitere Bilder wenn benötigt&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hCard - Microformat ===&lt;br /&gt;
Das Thema Semantic Web wird inzwischen immer interessanter, darum kam ich auf die Idee - fast allein mit TypoScript - das bekannte hCard-Microformat in TYPO3 zu integrieren.&lt;br /&gt;
&lt;br /&gt;
Was wir dafür brauchen ist eine eigene kleine Extension, diese benötigen wir lediglich für eine einzige Zeile Code, welche in die Datei ext_tables.php kommt:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      t3lib_extMgm::addToInsertRecords(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Dazu jetzt noch das TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      temp.hcard = COA&lt;br /&gt;
   2.&lt;br /&gt;
      temp.hcard {&lt;br /&gt;
   3.&lt;br /&gt;
      wrap =&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
       &lt;br /&gt;
   6.&lt;br /&gt;
      10 = IMAGE&lt;br /&gt;
   7.&lt;br /&gt;
      10.file {&lt;br /&gt;
   8.&lt;br /&gt;
      import = uploads/pics/&lt;br /&gt;
   9.&lt;br /&gt;
      import.field = image&lt;br /&gt;
  10.&lt;br /&gt;
      width = 40&lt;br /&gt;
  11.&lt;br /&gt;
      params = class=&amp;quot;photo&amp;quot;&lt;br /&gt;
  12.&lt;br /&gt;
      }&lt;br /&gt;
  13.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  14.&lt;br /&gt;
      20.field = name&lt;br /&gt;
  15.&lt;br /&gt;
      20.typolink.parameter.field = url&lt;br /&gt;
  16.&lt;br /&gt;
      20.typolink.ATagParams = class=&amp;quot;url fn&amp;quot;&lt;br /&gt;
  17.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  18.&lt;br /&gt;
      30.field = company&lt;br /&gt;
  19.&lt;br /&gt;
      30.wrap =&lt;br /&gt;
  20.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  21.&lt;br /&gt;
       &lt;br /&gt;
  22.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  23.&lt;br /&gt;
      40.field = email&lt;br /&gt;
  24.&lt;br /&gt;
      40.typolink.parameter.field = email&lt;br /&gt;
  25.&lt;br /&gt;
      40.typolink.ATagParams = class=&amp;quot;email&amp;quot;&lt;br /&gt;
  26.&lt;br /&gt;
      50 = COA&lt;br /&gt;
  27.&lt;br /&gt;
      50 {&lt;br /&gt;
  28.&lt;br /&gt;
      wrap =&lt;br /&gt;
  29.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  30.&lt;br /&gt;
       &lt;br /&gt;
  31.&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
  32.&lt;br /&gt;
      10.field = address&lt;br /&gt;
  33.&lt;br /&gt;
      10.wrap =&lt;br /&gt;
  34.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  35.&lt;br /&gt;
       &lt;br /&gt;
  36.&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
  37.&lt;br /&gt;
      20.field = city&lt;br /&gt;
  38.&lt;br /&gt;
      20.wrap = &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  39.&lt;br /&gt;
      30 = TEXT&lt;br /&gt;
  40.&lt;br /&gt;
      30.field = zip&lt;br /&gt;
  41.&lt;br /&gt;
      30.wrap = &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  42.&lt;br /&gt;
      40 = TEXT&lt;br /&gt;
  43.&lt;br /&gt;
      40.field = country&lt;br /&gt;
  44.&lt;br /&gt;
      40.wrap = &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt;&lt;br /&gt;
  45.&lt;br /&gt;
      }&lt;br /&gt;
  46.&lt;br /&gt;
      60 = TEXT&lt;br /&gt;
  47.&lt;br /&gt;
      60.field = telephone&lt;br /&gt;
  48.&lt;br /&gt;
      60.wrap =&lt;br /&gt;
  49.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
  50.&lt;br /&gt;
       &lt;br /&gt;
  51.&lt;br /&gt;
      }&lt;br /&gt;
  52.&lt;br /&gt;
       &lt;br /&gt;
  53.&lt;br /&gt;
      // fe_users dem type shortcut hinzufügen&lt;br /&gt;
  54.&lt;br /&gt;
      tt_content.shortcut.20.0.tables = fe_users&lt;br /&gt;
  55.&lt;br /&gt;
      // für Tabelle fe_users sagen wir jetzt noch wie es gerendert werden soll.&lt;br /&gt;
  56.&lt;br /&gt;
      tt_content.shortcut.20.0.conf.fe_users &amp;lt; temp.hcard&lt;br /&gt;
  57.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Und was hat uns das jetzt gebracht? Ganz einfach:&lt;br /&gt;
&lt;br /&gt;
   1. Wir haben das Content Element &amp;quot;Insert Record&amp;quot; um die Tabelle fe_users erweitert.&lt;br /&gt;
   2. Wir haben mit dem TypoScript aus dem Object &amp;quot;temp.hcard&amp;quot; eine komplette hCard definiert, welche jetzt mit meinem fe_user Datensatz befüllt werden kann.&lt;br /&gt;
   3. Durch die CSS-Klassen kann man die Visitenkarte nun auch noch schön aussehen lassen.&lt;br /&gt;
&lt;br /&gt;
Sind alle Daten vorhanden, könnte der erzeugte HTML-Code dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
       &lt;br /&gt;
   2.&lt;br /&gt;
      &amp;lt;div id=&amp;quot;hcard&amp;quot; class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
   3.&lt;br /&gt;
      &amp;lt;img style=&amp;quot;float:left; margin-right:4px&amp;quot; src=&amp;quot;http://typo3weblog.de/frank.png&amp;quot; alt=&amp;quot;photo of &amp;quot; class=&amp;quot;photo&amp;quot;/&amp;gt;&lt;br /&gt;
   4.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://typo3weblog.de&amp;quot;&amp;gt;Frank Nägler&amp;lt;/a&amp;gt;&lt;br /&gt;
   5.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;org&amp;quot;&amp;gt;TYPO3Weblog.de&amp;lt;/div&amp;gt;&lt;br /&gt;
   6.&lt;br /&gt;
       &lt;br /&gt;
   7.&lt;br /&gt;
      &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:frank.naegler@e-netconsulting.rl&amp;quot;&amp;gt;frank.naegler@e-netconsulting.rl&amp;lt;/a&amp;gt;&lt;br /&gt;
   8.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   9.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;Sievekingsallee 150b&amp;lt;/div&amp;gt;&lt;br /&gt;
  10.&lt;br /&gt;
       &lt;br /&gt;
  11.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Hamburg&amp;lt;/span&amp;gt;&lt;br /&gt;
  12.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;22111&amp;lt;/span&amp;gt;&lt;br /&gt;
  13.&lt;br /&gt;
      &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;Deutschland&amp;lt;/span&amp;gt;&lt;br /&gt;
  14.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  15.&lt;br /&gt;
      &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;+49 (0)7000 623 45 37&amp;lt;/div&amp;gt;&lt;br /&gt;
  16.&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
  17.&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Cool oder?&lt;br /&gt;
&lt;br /&gt;
Die komplette Extension fn_hcard als T3X Export habe ich hier für Euch zum Download.&lt;br /&gt;
&lt;br /&gt;
Aus Typo3 Adventskalender2008&lt;br /&gt;
&lt;br /&gt;
===Extension: Direct Shortcuts (sms_directshortcuts)===&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/extensions/repository/view/sms_directshortcuts/current/&lt;br /&gt;
TYPO3 generiert, wie jeder weiss, bei internen Verweisen immer eine extra Seite, die selbst wiederum einen redirect macht. Dieses vorgehen hat einerseits den Vorteil, dass man Skripte dazwischen schieben kann um z.B. Klicks zu tracken, anderseits den Nachteil, dass eine “falsche” URL im Menü zu finden ist. Dieser Nachteil macht sich bemerkbar wenn man sich mit der Suchmaschinenoptimierung von TYPO3 Seiten beschäftigt.&lt;br /&gt;
&lt;br /&gt;
== Nützliche TS-Templates ==&lt;br /&gt;
=== Tabellen im RTE ===&lt;br /&gt;
Details: http://dev.datenwolken.de/index.php?id=195&lt;br /&gt;
==== Standardklasse contenttable unterdrücken eigene Klassen zulassen ====&lt;br /&gt;
lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class &amp;gt;&lt;br /&gt;
==== P Tag raus ====&lt;br /&gt;
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =&amp;lt; lib.parseFunc&lt;br /&gt;
&lt;br /&gt;
=== Externes JavaScript einbinden ===&lt;br /&gt;
==== JavaScript im Header ====&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
temp.addHeaderData=COA&lt;br /&gt;
[browser = msie]&lt;br /&gt;
temp.addHeaderData{&lt;br /&gt;
  90 = TEXT&lt;br /&gt;
  90.value (&lt;br /&gt;
&amp;lt;script src=&amp;quot;fileadmin/templates/scripts/ielt7.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  )&lt;br /&gt;
  90.wrap = &amp;lt;!--[if lte IE 7]&amp;gt; | &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
  #90.stdWrap.char = 10&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
Hier wird für IE kleiner als Version 7 ein JavaScript File eingebunden.&lt;br /&gt;
&lt;br /&gt;
==== JavaScript als Marker ====&lt;br /&gt;
Als Temporäres Objekt, kann natürlich auch Javascript in einen Marker eingebunden werden.&lt;br /&gt;
==== JavaScript über Record ====&lt;br /&gt;
Eine Möglichkeit die das leichte ändern der Skripte zuläßt wäre folgende.&lt;br /&gt;
Man legt irgendwo auf einer Seite ein HTML - Element an hinterlegt das Skript und verweist mit TypoScript auf diesen RECORD. Bzw. bindet ihn im Template ein.&lt;br /&gt;
&lt;br /&gt;
ToDo Beispiel&lt;br /&gt;
&lt;br /&gt;
=== xhtml optimierung ===&lt;br /&gt;
Einiges davon braucht man in Version 4+ nicht mehr...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#######################################################&lt;br /&gt;
############ XHTML optimieren&lt;br /&gt;
#######################################################&lt;br /&gt;
&lt;br /&gt;
#Default Javascripts in externes File auslagern&lt;br /&gt;
config.removeDefaultJS = 1&lt;br /&gt;
config.removeDefaultJS = external&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;?xml... ?&amp;gt; Prolog deaktivieren&lt;br /&gt;
config.xmlprologue = none&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;html lang=&amp;quot;de&amp;quot; xml:lang=&amp;quot;de&amp;quot;&amp;gt; auf de setzen&lt;br /&gt;
config.htmlTag_langKey = de&lt;br /&gt;
&lt;br /&gt;
#CSS Datei in externes File auslagern&lt;br /&gt;
config.inlineStyle2TempFile = 1&lt;br /&gt;
config.disablePrefixComment = 1&lt;br /&gt;
&lt;br /&gt;
#RTE Tuning&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag &amp;gt;&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen&lt;br /&gt;
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList =  div, p, h1, h2, h3, h4, h5, h6&lt;br /&gt;
&lt;br /&gt;
#Entfernt die zusätzlichen CSS-Klassen&lt;br /&gt;
lib.stdheader.3 = LOAD_REGISTER&lt;br /&gt;
lib.stdheader.3.headerClass =&lt;br /&gt;
lib.stdheader.3.headerClass.noTrimWrap = |&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap = |&lt;br /&gt;
&lt;br /&gt;
#Standard-Headings aufräumen&lt;br /&gt;
lib.stdheader.stdWrap.dataWrap =&lt;br /&gt;
lib.stdheader.10.1.fontTag = &amp;lt;h1&amp;gt;|&amp;lt;/h1&amp;gt;&lt;br /&gt;
lib.stdheader.10.2.fontTag = &amp;lt;h2&amp;gt;|&amp;lt;/h2&amp;gt;&lt;br /&gt;
lib.stdheader.10.3.fontTag = &amp;lt;h3&amp;gt;|&amp;lt;/h3&amp;gt;&lt;br /&gt;
lib.stdheader.10.4.fontTag = &amp;lt;h4&amp;gt;|&amp;lt;/h4&amp;gt;&lt;br /&gt;
lib.stdheader.10.5.fontTag = &amp;lt;h5&amp;gt;|&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Content Elemente aufräumen und Kommentare entfernen&lt;br /&gt;
#tt_content.stdWrap.dataWrap &amp;gt;&lt;br /&gt;
tt_content.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
#tt_content.header.20.dataWrap &amp;gt;&lt;br /&gt;
tt_content.header.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.default.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.text.20.prefixComment &amp;gt;&lt;br /&gt;
tt_content.textpic.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.table.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.mailform.20.stdWrap.wrap &amp;gt;&lt;br /&gt;
tt_content.menu.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.image.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
tt_content.list.20.stdWrap.prefixComment &amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Cleargif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Auch hinter den Headlines&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass nonTypoTagStdWrap nur im Inhalt außerhalb von&lt;br /&gt;
#&amp;lt;typolist&amp;gt; und &amp;lt;typohead&amp;gt; arbeitet:&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typolist.breakoutTypoTagContent = 1&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.breakoutTypoTagContent = 1&lt;br /&gt;
&lt;br /&gt;
# ... und kein &amp;lt;BR&amp;gt; vor dem typohead.&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.wrap &amp;gt;&lt;br /&gt;
# Einstellen von nonTypoTagStdWrap, dass der Text mit P-Tags umschlossen wird.&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap &amp;gt;&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines {&lt;br /&gt;
encapsTagList = div, p&lt;br /&gt;
remapTag.DIV = P&lt;br /&gt;
wrapNonWrappedLines = |&lt;br /&gt;
innerStdWrap_all.ifEmpty =&lt;br /&gt;
innerStdWrap_all.textStyle &amp;lt; tt_content.text.20.textStyle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Schließlich noch Entfernen der alten textstyle-Formatierung des gesamten Haupttextes.&lt;br /&gt;
tt_content.text.20.textStyle &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# ... und der &amp;lt;BR&amp;gt;-Tag nach dem Inhalt wird auch nicht mehr gebraucht...&lt;br /&gt;
tt_content.text.20.wrap &amp;gt;&lt;br /&gt;
&lt;br /&gt;
# clear.gif entfernen&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.header.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.space = 0|0&lt;br /&gt;
tt_content.stdWrap.spaceBefore = 0&lt;br /&gt;
tt_content.stdWrap.spaceAfter = 0&lt;br /&gt;
lib.stdheader.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
# clear.gif hinter den Überschriften entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0&lt;br /&gt;
&lt;br /&gt;
#Attribute für p- und pre-tags entfernen&lt;br /&gt;
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {&lt;br /&gt;
P.style=&lt;br /&gt;
PRE.style=&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Unterdrückt den Umbruch &amp;lt; br &amp;gt;&lt;br /&gt;
lib.stdheader.10.stdWrap.wrap = |&lt;br /&gt;
tt_content.textpic.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.image.20.spaceBelowAbove = 0&lt;br /&gt;
tt_content.textpic.20.noStretchAndMarginCells = 1&lt;br /&gt;
tt_content.image.20.noStretchAndMarginCells = 1&lt;br /&gt;
&lt;br /&gt;
# Setup Anker-Tags entfernen&lt;br /&gt;
tt_content.noANameTagForFirstRecord = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inhalte von Backend-Feldern ausgeben ===&lt;br /&gt;
Hinweise dazu findest du unter:&lt;br /&gt;
&lt;br /&gt;
[[TypoScript - Daten auslesen]]&lt;br /&gt;
&lt;br /&gt;
=== Ein Breadcrumb Menü (Rootline-Menü) ===&lt;br /&gt;
Constants&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#[begin-level] | [end-level]&lt;br /&gt;
# Variante 1: Seite 1 | Seite 2 | Seite 3&lt;br /&gt;
rootlineDelimiter = &amp;amp;nbsp;&amp;amp;#124;&amp;amp;nbsp;&lt;br /&gt;
# Variante 2: Seite 1 &amp;gt; Seite 2 &amp;gt; Seite 3&lt;br /&gt;
# delimiter = &amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Setup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.rootline = HMENU&lt;br /&gt;
temp.rootline {&lt;br /&gt;
   special = rootline&lt;br /&gt;
&lt;br /&gt;
# zeige komplette rootline an&lt;br /&gt;
   special.range = 2|-1&lt;br /&gt;
&lt;br /&gt;
# Variation: zeige Link auf die übergeordnete Seite&lt;br /&gt;
   #special.range = -2|-2&lt;br /&gt;
&lt;br /&gt;
# Text vor dem Rootline Menü&lt;br /&gt;
   wrap = Sie sind hier:&amp;amp;nbsp;|&lt;br /&gt;
&lt;br /&gt;
   special.targets.3 = page&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.target = _top&lt;br /&gt;
   1.NO {&lt;br /&gt;
   	ATagBeforeWrap = 0&lt;br /&gt;
   	stdWrap.htmlSpecialChars = 1&lt;br /&gt;
   	linkWrap = |{$rootlineDelimiter}|*||*| |&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 1]&lt;br /&gt;
temp.rootline.wrap = You are here:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&lt;br /&gt;
[globalVar = GP:L = 2]&lt;br /&gt;
temp.rootline.wrap = Vous êtes ici:&amp;amp;nbsp;|&lt;br /&gt;
[GLOBAL]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ein CSS-Template mit Markern nutzen ===&lt;br /&gt;
Ein CSS File wird eingelesen, enthaltene Marker dynamisch ersetzt und die Styles im Headerbereich der Seite als Inline-Styles eingebunden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
color1 = FFE292&lt;br /&gt;
color2 = F68D6F&lt;br /&gt;
color3 = FABD9E&lt;br /&gt;
&lt;br /&gt;
backgroundImage = fileadmin/templates/main/images/navBack-grey.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# das Objekt zunächst als Bibliothek zur späteren Verwendung&lt;br /&gt;
lib.stylesheet.default = TEMPLATE&lt;br /&gt;
lib.stylesheet.default {&lt;br /&gt;
# template einlesen&lt;br /&gt;
  template = FILE&lt;br /&gt;
  template.file=fileadmin/templates/main/colors.css&lt;br /&gt;
# Platzhalter ersetzten&lt;br /&gt;
  marks{&lt;br /&gt;
     COLOR1 = TEXT&lt;br /&gt;
     COLOR1.value = {$color1}&lt;br /&gt;
     COLOR2 = TEXT&lt;br /&gt;
     COLOR2.value = {$color2}&lt;br /&gt;
     COLOR3 = TEXT&lt;br /&gt;
     COLOR3.value = {$color3}&lt;br /&gt;
     &lt;br /&gt;
     NAVBACK = TEXT&lt;br /&gt;
     NAVBACK.value = {$backgroundImage}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Stylesheet in Header eintragen&lt;br /&gt;
page.headerData{&lt;br /&gt;
   90 = COA&lt;br /&gt;
   90{&lt;br /&gt;
      wrap = &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- | --&amp;gt;&amp;lt;/style&amp;gt;&lt;br /&gt;
      50 &amp;lt; lib.stylesheet.default&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;
&lt;br /&gt;
=== Bild aus Media-Feld auslesen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.mediaFieldImage=IMAGE&lt;br /&gt;
temp.mediaFieldImage.file {  &lt;br /&gt;
  import.data = levelmedia: 2,slide  &lt;br /&gt;
  import = uploads/media/  &lt;br /&gt;
  import.listNum = 0  &lt;br /&gt;
  #width = 270  &lt;br /&gt;
  #height= 300&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bild aus Ressourcen Feld auslesen ===&lt;br /&gt;
Hinweis Seiteneigenschaften &amp;gt; Resourcen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 temp.mein Bild = IMG_RESSOURCE&lt;br /&gt;
 temp.mein Bild{&lt;br /&gt;
  file = hintergrund*.jpg&lt;br /&gt;
  stdWrap.wrap = &amp;lt;div style=&amp;quot;background-image: | ; padding: 5px;&amp;quot;&amp;gt; ein Kasten &amp;lt;/div&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Typo3 vergibt beim vervielfältigen automatisch eine Endung. Damit das Bild trotzdem immer gefunden wird, ein Sternchen setzen (Joker)&lt;br /&gt;
&lt;br /&gt;
=== Bild automatisch mit Alt-Tag versehen ===&lt;br /&gt;
Dieses TypoScript füllt das Alt-Tag Feld mit Daten aus dem Bildnamen z.B. wird Unser_Urlaubsort.jpg zu Unser Urlaubsort&lt;br /&gt;
&lt;br /&gt;
[[Bild automatisch mit Alt-Tag versehen]]&lt;br /&gt;
&lt;br /&gt;
=== Logo mit Verlinkung auf die Homepage (1.2)===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Link für das Logo&lt;br /&gt;
# Zahl (Seiten-ID), URL (www.zielseite.de) oder Email-Adresse&lt;br /&gt;
logoLink = 1&lt;br /&gt;
logoFile = fileadmin/templates/images/logo.gif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Setup &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Fügt ein Logo mit Link ein&lt;br /&gt;
&lt;br /&gt;
temp.logo = IMAGE&lt;br /&gt;
temp.logo {&lt;br /&gt;
   #file = /fileadmin/dinos/templates/main/images/logo-rt.gif&lt;br /&gt;
   file = {$logoFile}&lt;br /&gt;
   stdWrap.typolink.parameter = {$logoLink}&lt;br /&gt;
}   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copyright mit immer aktuellem Jahr ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.copyright = COA&lt;br /&gt;
temp.copyright{&lt;br /&gt;
   5= TEXT&lt;br /&gt;
   5.value = &amp;amp;copy;&amp;amp;nbsp;&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   #HeUte Timestamp einlesen&lt;br /&gt;
   10.data = date:U&lt;br /&gt;
   10.data.strftime = %Y &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein anderes Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subparts.footer{&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   10.data = date:Y&lt;br /&gt;
   10.wrap = &amp;lt;p class=&amp;quot;footer&amp;quot;&amp;gt;&amp;amp;copy;&amp;amp;nbsp;|&amp;amp;nbsp;Ich&amp;lt;/p&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datum der letzten Änderung anzeigen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 lastChangePrefix = Letzte Änderung:&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = COA&lt;br /&gt;
temp.lastChange.5 = TEXT&lt;br /&gt;
temp.lastChange.5.value={$lastChangePrefix}&lt;br /&gt;
temp.lastChange.10 = TEXT&lt;br /&gt;
temp.lastChange.10.register:SYS_LASTCHANGED&lt;br /&gt;
temp.lastChange.10.strftime = %d.%m.%Y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Variante ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.lastChange = TEXT&lt;br /&gt;
temp.lastChange {&lt;br /&gt;
  data = page:lastUpdated&lt;br /&gt;
  if.isTrue.data = page:lastUpdated&lt;br /&gt;
  date = d.m.Y&lt;br /&gt;
  wrap = Letzte Änderung:&amp;amp;nbsp;|&lt;br /&gt;
  wrap2 = |&lt;br /&gt;
  data = register : SYS_LASTCHANGED&lt;br /&gt;
  if &amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Seiten IDs im Seitenbaum anzeigen ===&lt;br /&gt;
UserTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
  pageTree.showPageIdWithTitle = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client Daten des Benutzers ausgeben ===&lt;br /&gt;
&lt;br /&gt;
      temp.browserinfo = COA_INT&lt;br /&gt;
      temp.browserinfo {&lt;br /&gt;
      10 = TEXT&lt;br /&gt;
      10.data = TSFE:clientInfo|SYSTEM&lt;br /&gt;
      10.wrap = &amp;amp;lt;p&amp;amp;gt; | &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
      20 = TEXT&lt;br /&gt;
      20.data = TSFE:clientInfo|BROWSER&lt;br /&gt;
      20.wrap = | &amp;amp;amp;nbsp;&lt;br /&gt;
       &lt;br /&gt;
      30 = TEXT&lt;br /&gt;
      30.data = TSFE:clientInfo|VERSION&lt;br /&gt;
      30.wrap = | &amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
== Die Ausgabe von Inhalten verändern ==&lt;br /&gt;
&lt;br /&gt;
=== Layout-Rahmen verändern===&lt;br /&gt;
[[Typo3 - Rahmen (Frames)]]&lt;br /&gt;
&lt;br /&gt;
=== Rendering von Inhalten ===&lt;br /&gt;
&lt;br /&gt;
=== Ausgeben von Informationen im head der Seite ===&lt;br /&gt;
Wie kann man Stylesheet angaben, Metatags, Skripte etc. im Header ausgeben&lt;br /&gt;
[[Typo3 - Tipps und Tricks]] (page.head Objekt)&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Ausgaben im Quelltext verhindern ===&lt;br /&gt;
[[TYPO3 - Unnötige Ausgaben im Quelltext verhindern]]&lt;br /&gt;
&lt;br /&gt;
== TypoScript - Basiswissen ==&lt;br /&gt;
[[Links mit TypoSkript anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Suche ==&lt;br /&gt;
&lt;br /&gt;
weitere Infos zu Indexed Search:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - indexed search]]&lt;br /&gt;
&lt;br /&gt;
== Mit HTML und CObj erzeugtes Login ==&lt;br /&gt;
Das Beispiel von Tim Lochmüller aus dem Adventskalender 2008, zeigt wie man mit dem Template Objekte größere HTML - Bausteine verwenden kann.&lt;br /&gt;
&lt;br /&gt;
Login mit TS &amp;amp; cObj TEMPLATE&lt;br /&gt;
Georg Ringer in TYPO3, Templates, Tutorial, TypoScript&lt;br /&gt;
&lt;br /&gt;
Nach der interessanten Vorstellung von cli-Scripten durch Frank in Türchen 15 zeigt das folgende Tutorial einen guten Weg, einen Login/Logout-Bereich mit TS &amp;amp; HTML zu verwirklichen, ohne dabei auf irgendeine Extension zurückgreifen zu müssen.&lt;br /&gt;
&lt;br /&gt;
Folgendes HTML ist notwendig und wird beispielsweise in fileadmin/template/login.html abgelegt: http://pastebin.com/f4e963e25&lt;br /&gt;
Die beiden Subparts sind jeweils für den Login- &amp;amp; Logout-Bereich zuständig und werden mittels Condition umgeschalten.&lt;br /&gt;
&lt;br /&gt;
Das TS ist sehr einfach aufgebaut&lt;br /&gt;
&lt;br /&gt;
    lib.login = TEMPLATE&lt;br /&gt;
    lib.login {&lt;br /&gt;
    template = FILE&lt;br /&gt;
    template.file = fileadmin/template/login.html&lt;br /&gt;
&lt;br /&gt;
    workOnSubpart = TPL_LOGIN&lt;br /&gt;
    marks {&lt;br /&gt;
    URL = TEXT&lt;br /&gt;
    URL.data = getIndpEnv:TYPO3_REQUEST_URL&lt;br /&gt;
&lt;br /&gt;
    PID = TEXT&lt;br /&gt;
    PID.value = 10789&lt;br /&gt;
&lt;br /&gt;
    REGISTER = TEXT&lt;br /&gt;
    REGISTER {&lt;br /&gt;
    value = Mitglied werden&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10786&lt;br /&gt;
    additionalParams = &amp;amp;tx_srfeuserregister_pi1[cmd]=edit&lt;br /&gt;
    useCacheHash = 1&lt;br /&gt;
    ATagParams = class=”link link1″&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PWD = TEXT&lt;br /&gt;
    PWD {&lt;br /&gt;
    value = Password vergessen?&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10788&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    PROFILE = TEXT&lt;br /&gt;
    PROFILE {&lt;br /&gt;
    value = Mein Wanderprofil!&lt;br /&gt;
    typolink {&lt;br /&gt;
    parameter = 10790&lt;br /&gt;
    ATagParams = class=”link”&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    [usergroup = *]&lt;br /&gt;
    lib.login.workOnSubpart = TPL_LOGOUT&lt;br /&gt;
&lt;br /&gt;
    [global]&lt;br /&gt;
&lt;br /&gt;
Die notwendigen Variablen sind:&lt;br /&gt;
&lt;br /&gt;
    * URL: Die aktuelle URL, auf die nach dem Login/Logout auch weitergeleitet wird&lt;br /&gt;
    * PID: Id der Seite, die die Benutzer enthält&lt;br /&gt;
&lt;br /&gt;
Nützlich sind weiters:&lt;br /&gt;
&lt;br /&gt;
    * REGISTER: Link zu einer Seite, auf der man sich neu registrieren kann&lt;br /&gt;
    * PWD/PROFILE: Weitere Links zu Seiten nach Bedarf&lt;br /&gt;
&lt;br /&gt;
Die vorgestellte Variante funktioniert out-of-the-box und muss für andere Algorithmen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Das Tutorial soll dazu anregen, das TEMPLATE-Objekt öfters als nur 1x zu verwenden, denn gerade wenn es um das Inkludieren von etwas mehr HTML geht, ist dies der beste, schnellste und sauberste Weg.&lt;br /&gt;
&lt;br /&gt;
== Benutzer ==&lt;br /&gt;
=== Autor-Feld bei neuen Seiten automatisch anlegen ===&lt;br /&gt;
 TCAdefaults.pages.author = &amp;lt;Name des Redakteurs&amp;gt;&lt;br /&gt;
 TCAdefaults.pages.author_email = &amp;lt;EMail-Adresse des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das funktioniert aber nur dann wenn eine Seite neu angelegt wird. Will man viele Seiten einem Redakteur zuordnen kann man das über eien MySQL abfrage machen:&lt;br /&gt;
&lt;br /&gt;
 UPDATE `pages` SET `author` = &amp;#039;&amp;lt;Name des Redakteurs&amp;gt;&amp;#039;, `author_email` =&lt;br /&gt;
 &amp;#039;&amp;lt;EMail-Adresse des Redakteurs&amp;gt;&amp;#039;&lt;br /&gt;
 WHERE 1 AND `perms_userid` = &amp;lt;UserId des Redakteurs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in perms_userid steht die ID des Besitzers der Seite, deshalb kann man diesen mit Hilfe des Whereclause ausfiltern.&lt;br /&gt;
&lt;br /&gt;
=== Author Feld, Email-Feld und News Author automatisch anlegen ===&lt;br /&gt;
Als weitere Möglichkeit gibt es die Extension cron_setdefaultauthor die genau diese Aufgaben übernimmt. Sie arbeitet im Prinzip wie oben angeführt.&lt;br /&gt;
&lt;br /&gt;
== Ändern von Extension Meldungen durch den Redakteur ==&lt;br /&gt;
&lt;br /&gt;
Adventskalender 2008 von Tim Lochmüller&lt;br /&gt;
Immer wieder erlebe ich es, dass der Kunde Texte selber ändern möchte, klar dafür hat er ja auch von uns TYPO3 bekommen. Leider Zum Glück, möchte der Kunde aber manchmal alles pflegen, also auch Texte die aus LocalLang-Dateien oder Templates kommen.&lt;br /&gt;
&lt;br /&gt;
Eine sehr einfache aber durchaus effektive Lösung dafür ist mal wieder ein wenig TypoScript:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError = RECORDS&lt;br /&gt;
   2.&lt;br /&gt;
      plugin.tx_myplugin_pi1.searchError {&lt;br /&gt;
   3.&lt;br /&gt;
      tables = tt_content&lt;br /&gt;
   4.&lt;br /&gt;
      source = 123&lt;br /&gt;
   5.&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
Jetzt noch das ContentElement mit der UID 123 im Seitenbaum anlegen und folgenden PHP Code in der Extension verwenden:&lt;br /&gt;
&lt;br /&gt;
   1.&lt;br /&gt;
      $marker[&amp;#039;###ERR_SEARCH###&amp;#039;] = $this-&amp;gt;cObj-&amp;gt;cObjGetSingle(&lt;br /&gt;
   2.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError&amp;#039;],&lt;br /&gt;
   3.&lt;br /&gt;
      $this-&amp;gt;conf[&amp;#039;searchError.&amp;#039;]&lt;br /&gt;
   4.&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
Das war es schon, jetzt enthält der Marker ###ERR_SEARCH### den Content, den der Kunde selbst eingepflegt hat. Natürlich muss man kein RECORD nehmen, sondern kann auch alle anderen TS-Objekte wie TEXT oder IMAGE.&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Content_Slide_mit_TemplaVoila&amp;diff=18644</id>
		<title>Content Slide mit TemplaVoila</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Content_Slide_mit_TemplaVoila&amp;diff=18644"/>
		<updated>2009-04-07T13:49:04Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quelle: http://www.lisardo.biz/wiki/Content-Slide-mit-TemplaVoila/&lt;br /&gt;
7.4.2009&lt;br /&gt;
&lt;br /&gt;
Content Slide mit TemplaVoila&lt;br /&gt;
&lt;br /&gt;
Man kann Content Slide nicht nur mit dem klassischen Ansatz der vier Spalten im Backend erreichen, sondern auch mit TemplaVoila, allerdings ist das etwas kniffeliger. (Getestet mit Version 4.2).&lt;br /&gt;
&lt;br /&gt;
Normalerweise erfolgt die Übernahme der Inhalte in TemplaVoila mit folgendem Code-Abschnitt in der XML-Flexform eines TemplaVoila-Datensatzes:&lt;br /&gt;
    &amp;lt;TypoScript&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
    10= RECORDS&lt;br /&gt;
    10.source.current=1&lt;br /&gt;
    10.table = tt_content&lt;br /&gt;
    10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
    ]]&amp;gt;&amp;lt;/TypoScript&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Leider gibt es in RECORDS die slide-Eigenschaften nicht, nur in CONTENT. In CONTENT ist es widerum nicht möglich wie hier einfach mit »10.source.current = 1« auf die richtige Spalte zu verweisen. TemplaVoila speichert allerdings die alten Spalten nach wie vor:&lt;br /&gt;
&lt;br /&gt;
* wenn nur ein einziges Feld mit Inhalten gefüllt wird, so bekommt dieses automatisch colPos = 0&lt;br /&gt;
* jedes weitere erhält eine höhere Nummer (dabei zählt die Reihenfolge in der XML-Datei)&lt;br /&gt;
&lt;br /&gt;
Vermerkt wird die colPos-Nummer im XML von TemplaVoila so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;oldStyleColumnNumber type=&amp;quot;integer&amp;quot;&amp;gt;1&amp;lt;/oldStyleColumnNumber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann also nach wie vor darauf referenzieren. Der gesamte Code für einen Content-Slide sieht dann so aus:&lt;br /&gt;
  &amp;lt;TypoScript&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
  # CONTENT statt RECORDS&lt;br /&gt;
  10 = CONTENT&lt;br /&gt;
  10.table = tt_content&lt;br /&gt;
  10.select.where = colPos=1&lt;br /&gt;
  # die eigentliche Slide-Anweisung&lt;br /&gt;
  10.slide = -1&lt;br /&gt;
  # optional&lt;br /&gt;
  10.slide {&lt;br /&gt;
    # Sammeln aller Einträge in der Rootline&lt;br /&gt;
    # collect = -1&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
  }&lt;br /&gt;
  10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
  ]]&amp;gt;&amp;lt;/TypoScript&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Vorlage neu gemappt werden muss, kann dieser Code verloren gehen; also eine Sicherheitskopie anlegen.&lt;br /&gt;
Hinweis&lt;br /&gt;
&lt;br /&gt;
Da die Flexible Content Elements ebenfalls diese Nummern verwenden, kommt es beim Einsatz von FCEs zu Verwirrung. Man kann aber Nummern wählen, die zu hoch sind, als dass sie durch FCEs berührt werden könnten. Ich habe es mit 99 versucht, was gut geklappt hat:&lt;br /&gt;
  &amp;lt;TypoScript&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
  # CONTENT statt RECORDS&lt;br /&gt;
  10 = CONTENT&lt;br /&gt;
  10.table = tt_content&lt;br /&gt;
  10.select.where = colPos=99&lt;br /&gt;
  # die eigentliche Slide-Anweisung&lt;br /&gt;
  10.slide = -1&lt;br /&gt;
  # optional&lt;br /&gt;
  10.slide {&lt;br /&gt;
    # Sammeln aller Einträge in der Rootline&lt;br /&gt;
    # collect = -1&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
  }&lt;br /&gt;
  10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
  ]]&amp;gt;&amp;lt;/TypoScript&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;oldStyleColumnNumber type=&amp;quot;integer&amp;quot;&amp;gt;99&amp;lt;/oldStyleColumnNumber&amp;gt;&lt;br /&gt;
     &amp;lt;/tx_templavoila&amp;gt;&lt;br /&gt;
    # usw&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Content_Slide_mit_TemplaVoila&amp;diff=1654</id>
		<title>Content Slide mit TemplaVoila</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Content_Slide_mit_TemplaVoila&amp;diff=1654"/>
		<updated>2009-04-07T13:43:05Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quelle: http://www.lisardo.biz/wiki/Content-Slide-mit-TemplaVoila/&lt;br /&gt;
7.4.2009&lt;br /&gt;
&lt;br /&gt;
Content Slide mit TemplaVoila&lt;br /&gt;
&lt;br /&gt;
Man kann Content Slide nicht nur mit dem klassischen Ansatz der vier Spalten im Backend erreichen, sondern auch mit TemplaVoila, allerdings ist das etwas kniffeliger. (Getestet mit Version 4.2).&lt;br /&gt;
&lt;br /&gt;
Normalerweise erfolgt die Übernahme der Inhalte in TemplaVoila mit folgendem Code-Abschnitt in der XML-Flexform eines TemplaVoila-Datensatzes:&lt;br /&gt;
&lt;br /&gt;
    10= RECORDS&lt;br /&gt;
    10.source.current=1&lt;br /&gt;
    10.table = tt_content&lt;br /&gt;
    10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider gibt es in RECORDS die slide-Eigenschaften nicht, nur in CONTENT. In CONTENT ist es widerum nicht möglich wie hier einfach mit »10.source.current = 1« auf die richtige Spalte zu verweisen. TemplaVoila speichert allerdings die alten Spalten nach wie vor:&lt;br /&gt;
&lt;br /&gt;
* wenn nur ein einziges Feld mit Inhalten gefüllt wird, so bekommt dieses automatisch colPos = 0&lt;br /&gt;
* jedes weitere erhält eine höhere Nummer (dabei zählt die Reihenfolge in der XML-Datei)&lt;br /&gt;
&lt;br /&gt;
Vermerkt wird die colPos-Nummer im XML von TemplaVoila so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;oldStyleColumnNumber type=&amp;quot;integer&amp;quot;&amp;gt;1&amp;lt;/oldStyleColumnNumber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann also nach wie vor darauf referenzieren. Der gesamte Code für einen Content-Slide sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
  # CONTENT statt RECORDS&lt;br /&gt;
  10 = CONTENT&lt;br /&gt;
  10.table = tt_content&lt;br /&gt;
  10.select.where = colPos=1&lt;br /&gt;
  # die eigentliche Slide-Anweisung&lt;br /&gt;
  10.slide = -1&lt;br /&gt;
  # optional&lt;br /&gt;
  10.slide {&lt;br /&gt;
    # Sammeln aller Einträge in der Rootline&lt;br /&gt;
    # collect = -1&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
  }&lt;br /&gt;
  10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Vorlage neu gemappt werden muss, kann dieser Code verloren gehen; also eine Sicherheitskopie anlegen.&lt;br /&gt;
Hinweis&lt;br /&gt;
&lt;br /&gt;
Da die Flexible Content Elements ebenfalls diese Nummern verwenden, kommt es beim Einsatz von FCEs zu Verwirrung. Man kann aber Nummern wählen, die zu hoch sind, als dass sie durch FCEs berührt werden könnten. Ich habe es mit 99 versucht, was gut geklappt hat:&lt;br /&gt;
&lt;br /&gt;
  # CONTENT statt RECORDS&lt;br /&gt;
  10 = CONTENT&lt;br /&gt;
  10.table = tt_content&lt;br /&gt;
  10.select.where = colPos=99&lt;br /&gt;
  # die eigentliche Slide-Anweisung&lt;br /&gt;
  10.slide = -1&lt;br /&gt;
  # optional&lt;br /&gt;
  10.slide {&lt;br /&gt;
    # Sammeln aller Einträge in der Rootline&lt;br /&gt;
    # collect = -1&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
  }&lt;br /&gt;
  10.wrap = &amp;lt;!--TYPO3SEARCH_begin--&amp;gt; | &amp;lt;!--TYPO3SEARCH_end--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;oldStyleColumnNumber type=&amp;quot;integer&amp;quot;&amp;gt;99&amp;lt;/oldStyleColumnNumber&amp;gt;&lt;br /&gt;
     &amp;lt;/tx_templavoila&amp;gt;&lt;br /&gt;
    # usw&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Tipps_und_Tricks&amp;diff=1712</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=1712"/>
		<updated>2009-04-07T13:37:24Z</updated>

		<summary type="html">&lt;p&gt;91.47.50.190: /* Content zusätzlich auf Unterseiten anzeigen (Vererbung von Inhalten) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mehr auf &lt;br /&gt;
[[Typo3 - TS Templates]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Wichtige TypoScript Einstellungen]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Baukasten]]&lt;br /&gt;
&lt;br /&gt;
== Ausgabe aus der locallang_tca.xml Datei mit TypoScript verändern ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 plugin.tt_news._LOCAL_LANG.de.latestHeader = Aktuelles&lt;br /&gt;
&lt;br /&gt;
==Mit TS auf die Datenbank zugreifen==&lt;br /&gt;
 temp.veranstaltungstitel=TEXT&lt;br /&gt;
 temp.veranstaltungstitel.data = DB:tabelle:uid:feldname&lt;br /&gt;
&lt;br /&gt;
die uid kannst Du Dir aus der Url auslesen, z.B.&lt;br /&gt;
&lt;br /&gt;
 temp.veranstaltungstitel=TEXT&lt;br /&gt;
 temp.veranstaltungstitel.data = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title&lt;br /&gt;
&lt;br /&gt;
== Zeichensatz ==&lt;br /&gt;
===Sonderzeichen wie Kaufmannsund wird nicht korrekt umgesetzt===&lt;br /&gt;
 stdWrap.htmlSpecialChars = 1&lt;br /&gt;
=== Pipe Symbol und andere Sonderzeichen verwenden ===&lt;br /&gt;
Das Pipesymbol wird in Wraps ja als Trennzeichen verwendet. Um es als Zeichen auszugeben kann man auch das HTML Entity verwenden (&amp;amp;#124;) das Funktioniert natürlich auch mit anderen Sonderzeichen.&lt;br /&gt;
&lt;br /&gt;
=== Zeilenumbruch im Quelltext ===&lt;br /&gt;
Dies läßt sich mit der stdWrap Eigenschaft char erreichen:&lt;br /&gt;
&lt;br /&gt;
 myObject.stdWrap.char = 10&lt;br /&gt;
&lt;br /&gt;
== Metatags ==&lt;br /&gt;
=== Extended Metatags ===&lt;br /&gt;
bis dato (Version 4.1.3) Unverzichtbar&lt;br /&gt;
&lt;br /&gt;
=== Title Tag ===&lt;br /&gt;
aus: http://www.jochen-froehlich.de/typo3-cms/service/typoscript-snippet/title-tag-im-html-header-dynamisch-erweitern/ Datum des Zugriffs: 30.10.2008&lt;br /&gt;
ypo3 setzt den Titel einer Seite (HTML-Tag &amp;#039;title&amp;#039;) standardmäßig auf den Seitentitel der aktuellen Seite. Es gibt jedoch Fälle, bei denen es von Vorteil sein kann, zusätzliche Informationen im Titel anzugeben: Beispielsweise ist es aussagekräftiger, wenn eine Seite im Ergebnis einer Suchmaschine wie Google erscheint und der Titel dabei nicht nur &amp;#039;Kontakt&amp;#039; sondern z.B. &amp;#039;Winkelmann GmbH - Kontakt&amp;#039; lautet.&lt;br /&gt;
&lt;br /&gt;
Mit folgendem TypoScript-Code lässt sich der Seitentitel dynamisch ändern:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SETUP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 config {&lt;br /&gt;
   # &amp;lt;title&amp;gt;-Tag entfernen&lt;br /&gt;
   noPageTitle = 1&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 page {&lt;br /&gt;
   headerData {&lt;br /&gt;
     10 = TEXT&lt;br /&gt;
     10 {&lt;br /&gt;
       field = title&lt;br /&gt;
       wrap = &amp;lt;title&amp;gt;Titel:&amp;amp;nbsp;|&amp;amp;nbsp;- Text dahinter&amp;lt;/title&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es gibt noch eine andere Möglichkeit, den Seitentitel zu ändern, indem Sie unter &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Web/Template&amp;#039;&amp;#039;&amp;#039; direkt das Feld &amp;#039;&amp;#039;&amp;#039;Sitetitle&amp;#039;&amp;#039;&amp;#039; ausfüllen. &lt;br /&gt;
&lt;br /&gt;
Allerdings wird hierdurch nur ermöglicht, einen Text vor den Seitentitel zu bringen.&lt;br /&gt;
&lt;br /&gt;
Wie man im obenstehenden Beispiel sieht, lässt sich durch den TypoScript-Code sowohl vor als auch nach dem eigentlichen Seitentitel ein Text platzieren. Ausserdem können Sie bei Bedarf auch ein anderes Datenbankfeld (&amp;#039;field&amp;#039;) anzeigen lassen, indem Sie in Zeile 10 einfach die Angabe &amp;#039;title&amp;#039; durch einen anderen Wert ersetzen - z.B. &amp;#039;nav_title&amp;#039;, um den Navigationstitel der aktuellen Seite zu bekommen.&lt;br /&gt;
&lt;br /&gt;
== Rendering von Content Elementen und HTML ==&lt;br /&gt;
weitere Infos unter:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Content Elemente anpassen]]&lt;br /&gt;
&lt;br /&gt;
==== Content auf allen Seiten einbinden ====&lt;br /&gt;
* Als erstes legen wir in einem separaten SysOrdner die benötigten Inhaltselemente an.&lt;br /&gt;
* In einem kleinen Extension Template fügen wir die gewünschten Inhalte in einen Marker ein (hier FOOTER)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
page.10.subparts.FOOTER = RECORDS&lt;br /&gt;
page.10.subparts.FOOTER {&lt;br /&gt;
   tables = tt_content&lt;br /&gt;
   source = 105, 56&lt;br /&gt;
   dontCheckPid = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
Aus der Tabelle tt_content in der alle Inhaltselemente gespeichert sind werden die Elemente mit der id 1105 und 56 ausgelesen und in den Subpart FOOTER geschrieben. Der Subpart ist vom Typ RECORDS und kann somit beliebige Inhaltselemente enthalten.&lt;br /&gt;
Mit der Angabe dontCheckPid = 1 werden die Inhalte auch dann angezeigt, wenn die Seite versteckt ist.&lt;br /&gt;
&lt;br /&gt;
Die ids der Elemente erfährt man, wenn man mit der Maus über den Content Element Symbolen in der List-Ansicht verharrt.&lt;br /&gt;
&lt;br /&gt;
Wenn man auf einer Unterseite das Element nicht anzeigen will leert man einfach in einem Extension Template das Objekt:&lt;br /&gt;
&lt;br /&gt;
 page.10.subparts.FOOTER &amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Content zusätzlich auf Unterseiten anzeigen (Vererbung von Inhalten)====&lt;br /&gt;
In älteren Versionen (&amp;lt; 4.0) konnte man dazu die Extension KB Content Slide nutzen. In neueren Versionen gibt es die Vererbung von Content Elementen.&lt;br /&gt;
Und so Funktioniert es: &lt;br /&gt;
&lt;br /&gt;
Ein Content Element bekommt die Eigenschaft slide. Das führt dazu, daß z.B. die Inhaltselemente einer Spalte auch auf den Nachfolgenden Unterseiten angezeigt wird (z.B. eine Newsbox in der Randspalte) Es kann eingestellt werden ob bei vorhandensein eines Inhalts auf einer Unterseite dieser ersetzt wird, oder alle beide Inhalte angezeigt (gesammelt) werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzliche Eigenschaften für das cObject &amp;quot;CONTENT&amp;quot;&lt;br /&gt;
Eigenschaft	Datentyp 	Beschreibung	                                   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slide           integer         Aktiviert die Content-Vererbung. &lt;br /&gt;
                                Die Anzahl der Ebenen muss angegeben werden, &lt;br /&gt;
                                die nach oben hin gesucht werden soll. &lt;br /&gt;
                                Bei -1 wird  bis zur Root-Seite  nach &lt;br /&gt;
                                Inhalten gesucht. &lt;br /&gt;
                                Bei der ersten Seite auf der etwas gefunden wird, wird gestoppt.&lt;br /&gt;
&lt;br /&gt;
slide.collect   integer         Aktiviert das Sammeln von Inhalten. &lt;br /&gt;
                                Die Anzahl der Ebenen muss angegeben werden, von denen der Inhalt &lt;br /&gt;
                                gesammelt werden soll. Bei -1 wird bis zur Root-Seite gesucht.&lt;br /&gt;
&lt;br /&gt;
                                Wenn sowohl collect als auch slide.collect mit einem anderen Wert als -1 &lt;br /&gt;
                                angegeben wurden, wird der kleinere Wert für das Sammeln genommen.&lt;br /&gt;
	&lt;br /&gt;
slide.collectReverse boolean    Normalerweise werden beim Sammeln der Content-Elemente die Inhalte der &lt;br /&gt;
                                aktuellen Seite oben gezeigt und dann erst die der übergeordneten Seiten. &lt;br /&gt;
                                Mit diesem Flag kann dies umgekehrt dargestellt werden.&lt;br /&gt;
	&lt;br /&gt;
slide.collectFuzzy boolean      Dieses Flag ist nur nützlich, wenn die Inhalte gesammelt werden. &lt;br /&gt;
                                Wenn keine Inhalte bis zur angegebenen Ebene gefunden wurden, versucht TYPO3 &lt;br /&gt;
                                weiter einen Inhalt zu finden.&lt;br /&gt;
	&lt;br /&gt;
[tsref:(cObject).CONTENT]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch mit TemplaVoila funktioniert es:&lt;br /&gt;
[[Content Slide mit TemplaVoila]]&lt;br /&gt;
&lt;br /&gt;
==== Beispiele ====&lt;br /&gt;
Beispiele aus: http://www.oliver-thiele.de/cms-typo3/tutorials/content-slide.html 12.11.2007&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das erste Beispiel aktiviert die Content-Vererbung für die rechte Spalte.&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
 styles.content.getRight.slide = -1&lt;br /&gt;
&lt;br /&gt;
2. Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
styles.content.getRight.slide = -1&lt;br /&gt;
styles.content.getRight.slide {&lt;br /&gt;
    collect = -1&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel 2 ohne Verwendung von styles.content.get&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   page.10.marks.CONTENT_NORMAL = CONTENT&lt;br /&gt;
   page.10.marks.CONTENT_NORMAL {&lt;br /&gt;
      table = tt_content&lt;br /&gt;
      slide = -1&lt;br /&gt;
      slide {&lt;br /&gt;
         collect = -1&lt;br /&gt;
         collectReverse = 1&lt;br /&gt;
      }&lt;br /&gt;
      select {&lt;br /&gt;
         where = colPos=0&lt;br /&gt;
         orderBy = sorting&lt;br /&gt;
         languageField = sys_language_uid&lt;br /&gt;
     }&lt;br /&gt;
  } &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei diesem Beispiel ist die Inhalts-Ausgabe auf dem Marker ###CONTENT_NORMAL### gemacht worden. Das Objekt 10 ist demnach das cObject &amp;quot;Template&amp;quot;. styles.content.get ist demnach nur eine vereinfachte Schreibweise, die auch erst nach dem Hinzufügen der Statischen Templates  css_styled_content oder damals content(default) funktionierte.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; 3. Beispiel Sourcecode für Text-Editor optimiert zeigen.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
styles.content.getRight.slide = -1&lt;br /&gt;
styles.content.getRight.slide {&lt;br /&gt;
    collect = 2&lt;br /&gt;
    # collectReverse = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Daten im Header &amp;lt;head&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
==== Daten einfügen ====&lt;br /&gt;
Allgemein kann man im Header beliebiges einbauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Header-Data ###&lt;br /&gt;
page.headerData{&lt;br /&gt;
   90 = COA&lt;br /&gt;
   90{&lt;br /&gt;
      50 = TEXT&lt;br /&gt;
&lt;br /&gt;
      50.value (&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
 @import &amp;quot;/fileadmin/templates/multiMenu/multimenu.css&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Multimenu js needed for it to work start--&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &amp;gt;&lt;br /&gt;
function init(){&lt;br /&gt;
    activateMenu(&amp;#039;nav&amp;#039;);&lt;br /&gt;
/*    activateMenu(&amp;#039;vertnav&amp;#039;);*/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;script src=&amp;quot;/fileadmin/templates/multiMenu/multimenu.js&amp;quot; &lt;br /&gt;
type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- Multimenu js end --&amp;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;
Es geht oft auch einfacher z.B. mit &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
page.includeJS {&lt;br /&gt;
  file1 = fileadmin/helloworld.js&lt;br /&gt;
  file1.type = application/x-javascript&lt;br /&gt;
  file2 = javascript_uploaded_to_template*.js&lt;br /&gt;
  file3 = EXT:meineextension/res/js/meinJS.js (nicht getestet)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder &amp;#039;&amp;#039;&amp;#039;CSS Dateien&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
includeCSS {&lt;br /&gt;
  file1 = fileadmin/mystylesheet1.css&lt;br /&gt;
  file2 = stylesheet_uploaded_to_template*.css&lt;br /&gt;
  file2.title = High contrast&lt;br /&gt;
  file2.media = print&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datum einfügen ===&lt;br /&gt;
z.B. als Marker im Template und dann im TS-Setup so:&lt;br /&gt;
&lt;br /&gt;
 ### datum ###&lt;br /&gt;
 marks.DATE = COA_INT &lt;br /&gt;
 marks.DATE { &lt;br /&gt;
   10 = TEXT &lt;br /&gt;
   10.data = date:U&lt;br /&gt;
   10.strftime = %A, %d.%m.%Y&lt;br /&gt;
   10.wrap = &amp;lt;span class=&amp;quot;mini&amp;quot;&amp;gt; | &amp;lt;/span&amp;gt;&lt;br /&gt;
 }&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;
=== body tag ===&lt;br /&gt;
&lt;br /&gt;
Im Page Objekt kann man das REndering des body tag beeinflussen:&lt;br /&gt;
&lt;br /&gt;
 page.bodyTag = &amp;lt;body&amp;gt;&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;
=== Link Target und Anzeige bei Downloadlisten (Filelinks) ===&lt;br /&gt;
So kann man z.B. bei der Extension cssfilelinks das aussehen der Links vernünftig einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 tt_content.uploads.20.layout.fileSize.desc = Byte|kB|MB&lt;br /&gt;
 tt_content.uploads.20.layout.fileSize.char = none&lt;br /&gt;
 tt_content.uploads.20.layout.file = &amp;lt;div class=&amp;quot;###CLASS###&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;a href=&amp;quot;###URL###&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;###TITLE###&amp;lt;/a&amp;gt; ###FILESIZE###  ###CRID### ###MYMARK###&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;###DESCRIPTION###&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;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;
eine gute Beispielanwendung:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - CSS-Flyout Menü]]&lt;br /&gt;
&lt;br /&gt;
weitere Anwendungen:&lt;br /&gt;
&lt;br /&gt;
- Ajax Gallery auf baum-und-garten.de&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;
=== Email Empfänger im Inhaltstyp Formular wird nicht angezeigt ===&lt;br /&gt;
Damit die User den Inhaltstyp Formular nutzen können müssen Sie die E-Mail Empfänger Adresse eingeben. Das Funktioniert dann, wenn in den Rechten das Feld &amp;#039;&amp;#039;Seiteninhalt &amp;gt; Untertitel freigegeben&amp;#039;&amp;#039; ist. Nicht leicht zu finden...&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;
&lt;br /&gt;
=== Login Bild im Backend anpassen ===&lt;br /&gt;
&lt;br /&gt;
Quelle: http://www.allanime.org/?id=143&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Introduction&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The TYPO3 backend login displays a nice image left of the actual username/password login box. Currently an image of a pair of gloves is used. If you happen to install the CVS version of TYPO3 the image will differ from what you&amp;#039;re used to see. I remember a yellow flower in older versions (3.6) of TYPO3 an image that is still present in /typo3/gfx/ named loginbox_image_360.jpg. What&amp;#039;s happening there?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TYPO3 has a very cute feature which changes the login box image on certain circumstances. The code is actually in /typo3/index.php. Browsing this code I found another great feature: TYPO3 is also able to „rotate“ images given in a certain directory! All you have to do is, point TYPO3 to this directory. TYPO3 will load all image files in this directory and display a random image.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
The way to show TYPO3 this directory is by setting the variable $TBE_STYLES[&amp;#039;loginBoxImage_rotationFolder&amp;#039;] = path_to_dir/&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Unfortunately there is no way to to so without some programming. The TYPO3 init script explicitly deletes the whole array before initializing the backend. The only way to set variables is by creating an extension.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
This super-short Mini-howto will tell you how to set up this wonderful feature in 5 easy steps. I will assume you have access to your webserver by FTP and can create directories and upload files by FTP.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This is a short overview how it works:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Set up a folder with images&lt;br /&gt;
# Create an extension&lt;br /&gt;
# Add 1 line to this extension and point TYPO3 to your image directory&lt;br /&gt;
# Install extension&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setting Up the Image Folder&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
First you have to prepare the images. One image is fine but of course the more the better. The original images are 200x133 pixel in size, I suggest you create some cute images of the same size but it&amp;#039;s not necessary. Allowed are png, jpg and gif images.&lt;br /&gt;
&lt;br /&gt;
Log on to your website using your favorite FTP tool. You can also set up a TYPO3 filemount to do the same.&lt;br /&gt;
&lt;br /&gt;
Go to the directory typo3conf/&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Create a new empty directory &amp;#039;logonimages&amp;#039;. (Without quotes)&lt;br /&gt;
&lt;br /&gt;
Copy the prepared images to this folder.&lt;br /&gt;
&lt;br /&gt;
Create the Extension&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click images to enlarge. Image count from top to bottom.&lt;br /&gt;
&lt;br /&gt;
„What? I never created an extension! I can never do this!“ - if that&amp;#039;s what you say you&amp;#039;re wrong. You can follow detailed instructions – and all we have to write is one single line of code – which you can as well copy from this document if you used the directory from the last step.&lt;br /&gt;
&lt;br /&gt;
Log on to the TYPO3 backend as administrator. Ignore the ugly log on image &amp;lt;(^.^)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
    In the Tool menu use „Ext Manager.“ Of course you need to have this module installed. Showing you how to install extensions from the TER (TYPO Extension Repository) is not goal of this Mini-HOWTO.&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
Chose the item „Make new extension“ from the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
In the field &amp;quot;Enter Extension key&amp;quot; you type &amp;quot;user_enhancelogin&amp;quot;. Then click on the button &amp;quot;Update.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
Click on the plus symbol next to the line saying „General Info.“ Fill the form like shown in image . Don&amp;#039;t forget to hit the &amp;quot;Update&amp;quot; button!&lt;br /&gt;
[[Bild:ExtensionKickstarter01.jpg]]&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
    In the menu to the left click on the plus symbol next to „Extend existing tables.“ You do not need to type something there. It&amp;#039;s just done to create the empty framework for our single line of code.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
    At the bottom left of the content frame there is a button now saying „View Result.“ Click it. The result will look like that in image [4]. One really, really important note: Before proceeding you need to make sure in the location dropdown &amp;quot;LOCAL&amp;quot; is chosen! If you fail to do so, your extension might show up for all installations and - if installed -might yield in unexpected results.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
    Now click the &amp;quot;WRITE&amp;quot; button and the raw empty extension is created.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
That wasn&amp;#039;t too complicated, was it?&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Programming&lt;br /&gt;
&lt;br /&gt;
As a result of the last step, a basic framework of extension has been written to the directory /typo3conf/ext/user_enhancelogin/&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Now to the programming. Log on to your website using FTP and edit the following file:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
typo3conf/user_enhancelogin/ext_tables.php&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
There are different ways to do this. Most advanced FTP programs have an &amp;quot;edit&amp;quot; button. Please refer to your FTP program&amp;#039;s documentation.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Now this is what ext_tables.php should look like. As you can see there is only one line added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (!defined(&amp;#039;TYPO3_MODE&amp;#039;)) die(&amp;#039;Access denied.&amp;#039;)&lt;br /&gt;
$GLOBALS[&amp;#039;TBE_STYLES&amp;#039;][&amp;#039;loginBoxImage_rotationFolder&amp;#039;] = &lt;br /&gt;
                                         &amp;#039;../typo3conf/logonimages&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing the Extension&lt;br /&gt;
&lt;br /&gt;
After saving the extension there should be a success message and a link to install your new extension. Click it.&lt;br /&gt;
&lt;br /&gt;
In the menu to the left please click the link „Clear temp_CACHED.“ In case you ever wondered what this link is for – this it is.&lt;br /&gt;
&lt;br /&gt;
Log out of the TYPO3 backend and test the setup. If you followed the instructions of this manual you should now see your prepared images instead of the glove.&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;
==== Absender-Adresse der Formular Mails ====&lt;br /&gt;
Wenn ein Email Feld angegegen wird dann kann man die &amp;#039;&amp;#039;&amp;#039;E-Mail Adresse als Absender&amp;#039;&amp;#039;&amp;#039; angeben:&lt;br /&gt;
 Name | *name= input&lt;br /&gt;
 Email-Adresse |*email=input&lt;br /&gt;
Wichtig ist, daß das Feld &amp;#039;&amp;#039;email&amp;#039;&amp;#039; heißt.&lt;br /&gt;
&lt;br /&gt;
Feste Absenderadresse:&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Antwort an:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | from_name=hidden | HfWU Mailer&lt;br /&gt;
 | from_email=hidden | stephan.schlegel@hfwu.de&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;
=== Nach Update auf IE7 wird kein RTE mehr angezeigt ===&lt;br /&gt;
In den älteren Typo3 Versionen wird der Internet Explorer 7 nicht erkannt. Folgende Änderung im Code vornehmen dann wird auch IE7 erkannt.&lt;br /&gt;
&lt;br /&gt;
[typo3/t3lib/class.t3lib_div.php -&amp;gt; function clientInfo()]&lt;br /&gt;
&lt;br /&gt;
 ..&lt;br /&gt;
 } elseif (strstr($useragent,&amp;quot;MSIE 4&amp;quot;) || strstr($useragent,&amp;quot;MSIE 5&amp;quot;) ||&lt;br /&gt;
 strstr($useragent,&amp;quot;MSIE 6&amp;quot;)) {&lt;br /&gt;
 $bInfo[&amp;quot;BROWSER&amp;quot;]= &amp;quot;msie&amp;quot;;&lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
wird erweitert zu:&lt;br /&gt;
&lt;br /&gt;
 ..&lt;br /&gt;
 } elseif (strstr($useragent,&amp;quot;MSIE 4&amp;quot;) || strstr($useragent,&amp;quot;MSIE 5&amp;quot;) ||&lt;br /&gt;
 strstr($useragent,&amp;quot;MSIE 6&amp;quot;) || strstr($useragent,&amp;quot;MSIE 7&amp;quot;)) {&lt;br /&gt;
 $bInfo[&amp;quot;BROWSER&amp;quot;]= &amp;quot;msie&amp;quot;;&lt;br /&gt;
 ..&lt;br /&gt;
&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;br /&gt;
&lt;br /&gt;
== Schnipsel von http://dokuwiki.intersolution.ch/linux/typo3/typoscript ==&lt;br /&gt;
=== Typoscript ===&lt;br /&gt;
&lt;br /&gt;
===== Template erstellen =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Cachetime nur zu Testzwecken auf 10 Sekunden setzen!!!&lt;br /&gt;
config.cache_period = 10&lt;br /&gt;
# page Objekt erstellen und Werte zuweisen...&lt;br /&gt;
page = PAGE&lt;br /&gt;
page {&lt;br /&gt;
    typeNum = 0&lt;br /&gt;
    bodyTag = &amp;lt;body bgcolor=&amp;quot;#FFFFFF&amp;quot; topmargin=&amp;quot;0&amp;quot; leftmargin=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
    meta.AUTHOR = Bruno Staub&lt;br /&gt;
    meta.DESCRIPTION = Beschreibung der Homepage&lt;br /&gt;
    stylesheet = fileadmin/styles.css&lt;br /&gt;
&lt;br /&gt;
    # Designvorlage integrieren&lt;br /&gt;
    10 = TEMPLATE&lt;br /&gt;
    10.template = FILE&lt;br /&gt;
    10.template.file = fileadmin/vorlage.html&lt;br /&gt;
    10.workOnSubpart = DOKUMENT&lt;br /&gt;
    10.marks.DATUM = TEXT&lt;br /&gt;
    # Datumsausgabe 05.12.2005 - 17:59:10&lt;br /&gt;
    10.marks.DATUM.data = date : d.m.Y - H:i:s&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Code Schnipplets =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # SEITENTITEL ist ein Platzhalter vom HTML TEMPLATE&lt;br /&gt;
    # aktueller Seitentitel wird aus pages Tabelle ausgelesen&lt;br /&gt;
    # wrap umwickelt den Seitentitel fett (Pipe-Symbol erforderlich!)&lt;br /&gt;
    10.marks.SEITENTITEL = TEXT&lt;br /&gt;
    10.marks.SEITENTITEL.field = title&lt;br /&gt;
    10.marks.SEITENTITEL.wrap = &amp;lt;b&amp;gt;|&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # x explizite Abrage eines Wertes einer x beliebigen Tabelle (Datensatz ID=1)&lt;br /&gt;
    10.marks.SEITENTITEL = TEXT&lt;br /&gt;
    10.marks.SEITENTITEL.data = DB:pages:1:title&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # GET- und POST-Variablen abragen&lt;br /&gt;
    # http://www.intersolution.ch/index.php?id=0&amp;amp;test=Abfragetext&lt;br /&gt;
    # Falls der Parameter leer ist wird der Seitentitel ausgegeben&lt;br /&gt;
    10.marks.SEITENTITEL = TEXT&lt;br /&gt;
    10.marks.SEITENTITEL.data = GPvar : test // field : title&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # Bereich marks wird ausgeklammert, dies ermöglicht eine bessere Übersicht&lt;br /&gt;
    # das Logo wird eingelesen und in der Grössen angepasst und unter typo3temp/pics/ mit kryptischem Namen abgelegt&lt;br /&gt;
    # typo3temp/pics/ erhält nach jeder grössenänderung ein neues Bild, Abhilfe löschen per ftp und Cache löschen!!!&lt;br /&gt;
    10.marks {&lt;br /&gt;
    LOGO = IMAGE&lt;br /&gt;
    LOGO.file = fileadmin/images/logo.jpg&lt;br /&gt;
    LOGO.file.width = 178&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # LOGO dynamisch generieren für Beispielsweise Dummy Trailer Balken&lt;br /&gt;
    # LOGO Grafik logo.jpg wird über den Dummy Balken gelegt, Ebenenreihenfolge Beachten (10,20,30...)&lt;br /&gt;
    10.marks {&lt;br /&gt;
    LOGO = IMAGE&lt;br /&gt;
    LOGO.file = GIFBUILDER&lt;br /&gt;
    LOGO.file.XY = 759, 99&lt;br /&gt;
    LOGO.file.backColor = #697DEE&lt;br /&gt;
    LOGO.file.10 = fileadmin/images/logo.jpg&lt;br /&gt;
    LOGO.file.10.file = 178&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    # Text dynamisch generieren mit GIFBUILDER (Wichtig: Eigenschaft .text und nicht .value verwenden!)&lt;br /&gt;
    MEINTEXT.20 = TEXT&lt;br /&gt;
    MEINTEXT.20.text = Hallo Welt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== CSS styled content =====&lt;br /&gt;
&lt;br /&gt;
  - über den extension Manager System &amp;quot;CSS Styled Content&amp;quot; installieren und unter &amp;quot;include static&amp;quot; from extension&lt;br /&gt;
auf Templateebene zuweisen!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CSS styled content gehört zu den System-Extensions. Gehen Sie deshalb in das Verzeichnis \dummy-3.8.0\typo3\sysext\css_styled_content\css\. Dort finden Sie zwei Beispieldateien: example.css und example_outline.css. Die Stylesheets enthalten Formatierungen für alle in TYPO3 enthaltenen Content-Objekte wie Überschriften, Absätze, Listen, Formulare, Sitemap.&lt;br /&gt;
&lt;br /&gt;
Öffnen Sie eine der Dateien und editieren Sie sie nach Ihren Layout-Vorstellungen. Speichern Sie Ihr bearbeitetes Stylesheet unter einem beliebigen Namen in Ihrem Template-Ordner im Fileadmin ab (\dummy-3.8.0\fileadmin\template\).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschliessend weisen Sie im Page Template folgenden Code zu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config {&lt;br /&gt;
        doctype = xhtml_trans&lt;br /&gt;
        doctypeSwitch=1&lt;br /&gt;
}&lt;br /&gt;
page = PAGE&lt;br /&gt;
page {&lt;br /&gt;
typeNum = 0&lt;br /&gt;
bodyTag = &amp;lt;body&amp;gt;&lt;br /&gt;
stylesheet = fileadmin/template/mein_stylesheet.css&lt;br /&gt;
}&lt;br /&gt;
page.20 = TEMPLATE&lt;br /&gt;
page.20 {&lt;br /&gt;
           template = FILE&lt;br /&gt;
           template.file = fileadmin/template/mein_template.htm&lt;br /&gt;
           workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchten Sie mehr als eine Stylesheet-Datei einbinden, benötigen Sie folgende TypoScript Anweisung im Setup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
page = PAGE&lt;br /&gt;
page {&lt;br /&gt;
        typeNum = 0&lt;br /&gt;
        bodyTag = &amp;lt;body&amp;gt;&lt;br /&gt;
        includeCSS { &lt;br /&gt;
                file1 =  fileadmin/template/style_1.css&lt;br /&gt;
                file2 =  fileadmin/template/style_2.css&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration automaketemplate =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
plugin.tx_automaketemplate_pi1 {&lt;br /&gt;
   content &amp;lt; plugin.tx_rlmptmplselector_pi1&lt;br /&gt;
   elements {&lt;br /&gt;
      BODY.all = 1&lt;br /&gt;
      BODY.all.subpartMarker = DOCUMENT_BODY&lt;br /&gt;
      HEAD.all = 1&lt;br /&gt;
      HEAD.all.subpartMarker = DOCUMENT_HEADER&lt;br /&gt;
      HEAD.rmTagSections = title&lt;br /&gt;
      TD.all = 1&lt;br /&gt;
      DIV.all = 1&lt;br /&gt;
   }&lt;br /&gt;
   relPathPrefix = fileadmin/templates/main/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
temp.contentAreaTemplate = TEMPLATE&lt;br /&gt;
temp.contentAreaTemplate {&lt;br /&gt;
&lt;br /&gt;
   template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
&lt;br /&gt;
    // Modify the template selector config: This is a sub template!&lt;br /&gt;
   template.content.templateType = sub&lt;br /&gt;
&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
   subparts.CONTENT &amp;lt; styles.content.get&lt;br /&gt;
   subparts.RCONTENT &amp;lt; styles.content.getRight&lt;br /&gt;
   subparts.LCONTENT &amp;lt; styles.content.getLeft&lt;br /&gt;
   subparts.BORDER &amp;lt; styles.content.getBorder&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
temp.mainTemplate = TEMPLATE&lt;br /&gt;
temp.mainTemplate {&lt;br /&gt;
   template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
   template.content.templateType = main&lt;br /&gt;
&lt;br /&gt;
   workOnSubpart = DOCUMENT_BODY&lt;br /&gt;
   subparts.content &amp;lt; temp.contentAreaTemplate&lt;br /&gt;
&lt;br /&gt;
#   subparts.content = CONTENT&lt;br /&gt;
#   subparts.content &amp;lt; styles.content.get&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
temp.headTemplate = TEMPLATE&lt;br /&gt;
temp.headTemplate {&lt;br /&gt;
   template =&amp;lt; plugin.tx_automaketemplate_pi1&lt;br /&gt;
   workOnSubpart = DOCUMENT_HEADER&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
page = PAGE&lt;br /&gt;
#page.config.incT3Lib_htmlmail = 1&lt;br /&gt;
page {&lt;br /&gt;
   typeNum = 0&lt;br /&gt;
   bodyTag = &amp;lt;body&amp;gt;&lt;br /&gt;
   includeCSS {&lt;br /&gt;
#      file1 = fileadmin/templates/main/res/layout.css&lt;br /&gt;
#      file2 = fileadmin/templates/main/res/content.css&lt;br /&gt;
   }&lt;br /&gt;
   10 &amp;lt; temp.mainTemplate&lt;br /&gt;
   headerData.10 &amp;lt; temp.headTemplate&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Container zentrieren =====&lt;br /&gt;
ToDo: gehört in CSS&lt;br /&gt;
&lt;br /&gt;
Negative Margin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
body {margin:0px; padding:0px;}&lt;br /&gt;
#container-zentrieren {&lt;br /&gt;
	position:absolute;&lt;br /&gt;
	left:50%;&lt;br /&gt;
	width:500px;&lt;br /&gt;
	margin-top:266px;&lt;br /&gt;
	margin-left:-300px;&lt;br /&gt;
	padding:20px;&lt;br /&gt;
	border:1px dashed #FF0000;&lt;br /&gt;
	background-color:#e1e1e1e;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auto-width Margins:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
body {&lt;br /&gt;
	margin:20px 0px; padding:0px;&lt;br /&gt;
	text-align:center;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
#container-zentrieren {&lt;br /&gt;
	width:600px;&lt;br /&gt;
	margin:0px auto;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
	padding:20px;&lt;br /&gt;
	border:1px dashed #FF0000;&lt;br /&gt;
	background-color:#e1e1e1e;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
- ggfl. die Maße anpassen&lt;br /&gt;
&lt;br /&gt;
===== Absatz im Menü =====&lt;br /&gt;
&lt;br /&gt;
Den Seitentyp &amp;quot;Abstand&amp;quot; wählen und im Seitentitel &amp;quot;&amp;amp; n b s p ;&amp;quot; eingetragen. &lt;br /&gt;
&lt;br /&gt;
Im TypoScript den SPACE (SPC) definieren und im CSS formatieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
1 = HMENU &lt;br /&gt;
1.1 = TMENU &lt;br /&gt;
1.1 { &lt;br /&gt;
expAll = 0 &lt;br /&gt;
wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt; &lt;br /&gt;
NO { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
ACT = 1 &lt;br /&gt;
ACT { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
SPC = 1 &lt;br /&gt;
SPC { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
1.2 = TMENU &lt;br /&gt;
1.2 { &lt;br /&gt;
expAll = 0 &lt;br /&gt;
wrap = &amp;lt;ul&amp;gt;|&amp;lt;/ul&amp;gt; &lt;br /&gt;
NO { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
ACT = 1 &lt;br /&gt;
ACT { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
SPC = 1 &lt;br /&gt;
SPC { &lt;br /&gt;
linkWrap = &amp;lt;li&amp;gt;|&amp;lt;/li&amp;gt; &lt;br /&gt;
} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ankerpunkt für einen internen Link anlegen =====&lt;br /&gt;
&lt;br /&gt;
Ein Seitenlelement vom Typ &amp;quot;interner Link&amp;quot; (Shortcut) anlegen, im Pagebrowser den kleinen Pfeil hinter der Seite klicken und das entsprechende Contentelement auswählen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration AWStats =====&lt;br /&gt;
&lt;br /&gt;
Logfile Konfiguration bearbeiten:&lt;br /&gt;
awstats_log.txt: www.it-bo.com,it-bo.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
localconf.php:&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;quot;FE&amp;quot;][&amp;quot;logfile_dir&amp;quot;] = &amp;quot;fileadmin/log/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#Konfiguration AWStats&lt;br /&gt;
  config.stat = 1&lt;br /&gt;
  config.stat_apache = 1&lt;br /&gt;
  config.stat_apache_logfile = awstats.txt&lt;br /&gt;
  config.stat_excludeBEuserHits = 1&lt;br /&gt;
  config.stat_mysql = 1&lt;br /&gt;
  config.stat_typeNumList = 0,1,98&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei AWStats&lt;br /&gt;
cc_awstats/awstats/awstats.conf&lt;br /&gt;
&lt;br /&gt;
AWSTATS automatisieren&lt;br /&gt;
&lt;br /&gt;
http://jweiland.net/typo3cms/howto/awstats/&lt;br /&gt;
&lt;br /&gt;
http://www.typo3wizard.com/de/snippets/general-config/zaehlen-von-dateidownloads-mit-hilfe-von-awstats.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Browsers page title einbinden =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Including the class and calling the function&lt;br /&gt;
   includeLibs.tx_browserpagetitle = typo3conf/ext/browser_page_title/class.tx_browserpagetitle.php&lt;br /&gt;
   config.titleTagFunction = tx_browserpagetitle-&amp;gt;getTitle&lt;br /&gt;
&lt;br /&gt;
# Default language parameters&lt;br /&gt;
   plugin.browser_page_title {&lt;br /&gt;
      defaultTitle = IT-Bo - TYPO3 CMS Website DAM Digital Asset Management SEO Reichweitensteigerung Marketing Schulung Hilfe Support - {title}&lt;br /&gt;
      currentTitle = IT-Bo - TYPO3 - {tx_browserpagetitle_browser_title}&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
# Alternative language parameters&lt;br /&gt;
#   [globalVar=GP:L=1]&lt;br /&gt;
#      plugin.browser_page_title.defaultTitle = IT-Bo - TYPO3 CMS Website DAM Digital Asset Management SEO Reichweitensteigerung Marketing Schulung Hilfe Support - {title}&lt;br /&gt;
#      plugin.browser_page_title.currentTitle = IT-Bo - TYPO3 - {tx_browserpagetitle_browser_title}&lt;br /&gt;
#   [global]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Contentelmente (entfernen) =====&lt;br /&gt;
&lt;br /&gt;
header - Überschrift&lt;br /&gt;
&lt;br /&gt;
text - Text&lt;br /&gt;
&lt;br /&gt;
textpic - Text m/Bild&lt;br /&gt;
&lt;br /&gt;
image - Bild&lt;br /&gt;
&lt;br /&gt;
bullets - Punktliste&lt;br /&gt;
&lt;br /&gt;
table - Tabelle&lt;br /&gt;
&lt;br /&gt;
uploads - Dateilinks&lt;br /&gt;
&lt;br /&gt;
multimedia - Multimedia&lt;br /&gt;
&lt;br /&gt;
mailform - Formular&lt;br /&gt;
&lt;br /&gt;
search - Suchen&lt;br /&gt;
&lt;br /&gt;
login - Login&lt;br /&gt;
&lt;br /&gt;
menu - Menü/Sitemap&lt;br /&gt;
&lt;br /&gt;
shortcut - Datensatz einfügen&lt;br /&gt;
&lt;br /&gt;
list - Plugin einfügen&lt;br /&gt;
&lt;br /&gt;
html - HTML&lt;br /&gt;
&lt;br /&gt;
script - Skript&lt;br /&gt;
&lt;br /&gt;
splash - Textbox&lt;br /&gt;
&lt;br /&gt;
div - Trenner &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Contentelemente entfernen TSconfig&lt;br /&gt;
     TCEFORM.tt_content.CType {&lt;br /&gt;
     removeItems = header,bullets&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Seitentypen =====&lt;br /&gt;
&lt;br /&gt;
1 - Standard&lt;br /&gt;
2 - Erweitert&lt;br /&gt;
3 - Externe URL&lt;br /&gt;
4 - Shortcut&lt;br /&gt;
5 - Nicht im Menü&lt;br /&gt;
6 - Backend Benutzer Bereich&lt;br /&gt;
7 - Mount Seite&lt;br /&gt;
--div-- - Spacer&lt;br /&gt;
199 - Abstand&lt;br /&gt;
254 - SysOrdner&lt;br /&gt;
255 - Papierkorb &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Seitentypen entfernen TSconfig&lt;br /&gt;
     TCEFORM.pages.doktype {&lt;br /&gt;
     removeItems = 3,5&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== favicon einbinden =====&lt;br /&gt;
&lt;br /&gt;
setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   shortcutIcon = fileadmin/favicon.ico &lt;br /&gt;
&lt;br /&gt;
   #favicon setup (alternativ):&lt;br /&gt;
   headerData.1 = TEXT&lt;br /&gt;
   headerData.1.value = &amp;lt; link rel=&amp;quot;shortcut icon&amp;quot; type=&amp;quot;image/x-icon&amp;quot; href=&amp;quot;fileadmin/favicon.ico&amp;quot; / &amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== TYPO3 CSS-Datei einbinden =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# TYPO3 CSS-Datei einbinden&lt;br /&gt;
page {&lt;br /&gt;
   includeCSS {&lt;br /&gt;
      file1 = fileadmin/templates/main/res/layout.css&lt;br /&gt;
      file2 = fileadmin/templates/main/res/content.css&lt;br /&gt;
      file3 = fileadmin/templates/news/tt_news.css&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TypoScript aus externer Datei einbinden ===&lt;br /&gt;
&lt;br /&gt;
aus: http://www.rainer-grundel.de/wissensdb/typo3/allgemein/artikel/article/typoscript_ueber_externe_datei_einbinden.html&lt;br /&gt;
&lt;br /&gt;
Datum des Zugriffs: 25.10.2007&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrer Typo3 Projekte betreut kommt man irgendwann an den Punkt an dem man TS Konfigurationen immer wieder verwendet. Durch das Auslagern der Konfiguration und dem Wiederbenutzen lässt sich viel Zeit und Aufwand sparen.&lt;br /&gt;
&lt;br /&gt;
Durch das Auslagern von oft gebrauchten TS-Konfigurationen und dem Wiederverwenden in weiteren Typo3 Projekten lässt sich viel Zeit sparen. Insbesondere beim Updaten kann das Auslagern des TS in eine externe Datei Vorteile mit sich bringen. Das Einbinden von externem TS funktioniert bei Templates, TSconfig von Seiten und dem Tsconfig von Benutzern bzw. Benutzergruppen. Eingebunden werden externe Scriptdateien über folgendes TS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;INCLUDE_TYPOSCRIPT: source=&amp;quot;FILE: fileadmin/scriptdatei.txt&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig&lt;br /&gt;
&lt;br /&gt;
Folgendes ist beim Einbau der externen Datei zu beachten:&lt;br /&gt;
&lt;br /&gt;
    * Im Template muss das Include in einer eigenen Zeile stehen, sonst wird es nicht erkannt.&lt;br /&gt;
    * Das Include wird vor dem Parsen des TS ausgeführt und funktioniert nicht mit Conditions und Verschachtelungen.&lt;br /&gt;
    * Die Dateigröße darf nicht größer als 100KB sein.&lt;br /&gt;
    * Die URL der Datei muss ausgehend von PATH_side sein, darf also kein &amp;quot;..&amp;quot; enthalten.&lt;br /&gt;
&lt;br /&gt;
===== Ausschalten der CSS-Formatierung im Seitenkopf der HTML-Datei =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Ausschalten der CSS-Formatierung im Seitenkopf der HTML-Datei&lt;br /&gt;
   #plugin.tx_cssstyledimgtext._CSS_DEFAULT_STYLE = &lt;br /&gt;
   #plugin.tx_croncssstyledimgtext._CSS_DEFAULT_STYLE =&lt;br /&gt;
   #plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
   plugin.tx_formwidgets_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
   plugin.tx_damdownloads_pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
   plugin.tx-sgglossary-pi1._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
   #plugin.tx_jphcodesnippets_pi._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
   plugin.tt_news._CSS_DEFAULT_STYLE &amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CSS auslagern&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# CSS auslagern&lt;br /&gt;
   inlineStyle2TempFile = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== TCEFORM tt_content content header layout altLabels =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#TSconfig:&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.1 = Überschrift 1&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.2 = Überschrift 2&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.3 = Überschrift 3&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.4 = Überschrift 4&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.5 = Überschrift 5&lt;br /&gt;
   TCEFORM.tt_content.header_layout.altLabels.6 = Überschrift 6&lt;br /&gt;
   #TCEFORM.tt_content.header_layout.removeItems = 3,4,5&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Image Rotation (ric_rotation) Konfiguration =====&lt;br /&gt;
&lt;br /&gt;
# Setup: Image Rotation (ric_rotation)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
plugin.tx_ricrotation_pi1 {&lt;br /&gt;
    # parser (dont change this)&lt;br /&gt;
    parser &amp;lt; tt_content.text.20.parseFunc&lt;br /&gt;
&lt;br /&gt;
    # template for plugin&lt;br /&gt;
    templateFile = EXT:ric_rotation/pi1/template.htm&lt;br /&gt;
&lt;br /&gt;
    # list of page ids where the banners should be taken from ( comma seperated f.E.: 1,5,7)&lt;br /&gt;
    pidList =&lt;br /&gt;
&lt;br /&gt;
    # levels of recoursion to search for banners&lt;br /&gt;
    recursive = 0&lt;br /&gt;
&lt;br /&gt;
    # show banners with this attribute, options are: top, left, bottom, right&lt;br /&gt;
    placement = top&lt;br /&gt;
&lt;br /&gt;
    #mode to show banners, options are: all, random&lt;br /&gt;
    mode = all&lt;br /&gt;
&lt;br /&gt;
    # how many banner maximum&lt;br /&gt;
    results_at_a_time = 100&lt;br /&gt;
&lt;br /&gt;
    # image preconfig&lt;br /&gt;
    image {&lt;br /&gt;
        file.maxW = 492&lt;br /&gt;
        #file.params = -quality 90 // activate to force quality 90&lt;br /&gt;
        #file.ext = jpg            // activate to force jpg&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration Indexed Search =====&lt;br /&gt;
&lt;br /&gt;
Constants:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#Suche Indexed Search&lt;br /&gt;
  plugin.tx_indexedsearch {&lt;br /&gt;
  search.rootPidList = 1&lt;br /&gt;
  show.rules = 0&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#Indexierung&lt;br /&gt;
   config.index_enable = 1&lt;br /&gt;
   config.index_externals = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration Macina Searchbox =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#Konfiguration Macina Searchbox&lt;br /&gt;
plugin.tx_macinasearchbox_pi1 { &lt;br /&gt;
pidSearchpage = 1&lt;br /&gt;
templateFile = fileadmin/it-bo/macina-searchbox.html&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macina Searchbox einbinden&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#Macina Searchbox einbinden&lt;br /&gt;
      SUCHE &amp;gt; &lt;br /&gt;
      SUCHE &amp;lt; plugin.tx_macinasearchbox_pi1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Javascript auslagern =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Javascript auslagern&lt;br /&gt;
   removeDefaultJS = external&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== MOC Fileshare manager, moc_filemanager =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Constants: MOC Fileshare manager, moc_filemanager&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
plugin.tx_mocfilemanager_pi2.documentRoot = fileadmin&lt;br /&gt;
plugin.tx_mocfilemanager_pi2.useOwnIcons = 0&lt;br /&gt;
plugin.tx_mocfilemanager_pi2.limitNewest = 5&lt;br /&gt;
plugin.tx_mocfilemanager_pi2.ShowFilesPID = 123&lt;br /&gt;
&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.mountWrap = |&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.parentDirStyle = 1&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.showParentDir = 1&lt;br /&gt;
plugin.tx_mocfilemanager_pi1.documentRoot = fileadmin&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.disableMkdir = 1&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.ApacheChildKill = 1&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.timeLimit = 0&lt;br /&gt;
plugin.tx_mocfilemanager_pi1.useDescriptions = 1&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.asExplorer = 1&lt;br /&gt;
plugin.tx_mocfilemanager_pi1.allowedExts = txt,xls,doc,pps,gif,jpg,htm,html&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.datetimeFormat = %c&lt;br /&gt;
#plugin.tx_mocfilemanager_pi1.maxDepth = 1&lt;br /&gt;
plugin.tx_mocfilemanager_pi1.useOwnIcons = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration Link2Map24 =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
link2map24:&lt;br /&gt;
&lt;br /&gt;
- bei map24 (link2map24) anmelden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
link2map24.tpl.html:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt; USERID &amp;gt;&amp;gt;&amp;gt;&amp;gt; von link2map24 eintragen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== News tt_news =====&lt;br /&gt;
&lt;br /&gt;
News Template einbinden&lt;br /&gt;
&lt;br /&gt;
Constants:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#News tt_news Template einbinden&lt;br /&gt;
   plugin.tt_news {&lt;br /&gt;
      file.templateFile = fileadmin/templates/news/tt_news.html&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== News Datum- und Zeitformat anpassen ====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#News tt_news Datum- und Zeitformat anpassen&lt;br /&gt;
plugin.tt_news {&lt;br /&gt;
  archiveTitleCObject {&lt;br /&gt;
    10.strftime = %B - %Y&lt;br /&gt;
  }&lt;br /&gt;
  getRelatedCObject {&lt;br /&gt;
      20.strftime = %d.%m.%Y %H:%M&lt;br /&gt;
  }&lt;br /&gt;
  displaySingle {&lt;br /&gt;
#    date_stdWrap.strftime= %d.%m.%y&lt;br /&gt;
    date_stdWrap.strftime= %A, %d. %B %Y&lt;br /&gt;
    time_stdWrap.strftime= %H:%M&lt;br /&gt;
  }&lt;br /&gt;
  displayLatest {&lt;br /&gt;
    date_stdWrap.strftime= %d.%m.%y&lt;br /&gt;
    time_stdWrap.strftime= %H:%M&lt;br /&gt;
  }&lt;br /&gt;
  displayList {&lt;br /&gt;
 #   date_stdWrap.strftime= %A %d. %B %Y&lt;br /&gt;
    date_stdWrap.strftime = %A, %d. %B %Y&lt;br /&gt;
    time_stdWrap.strftime= %d.%m.%y %H:%M&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration rlmptmplselector =====&lt;br /&gt;
&lt;br /&gt;
Setup:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#definiert den Pfad zu den Main-Template Dateien&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.templatePathMain = fileadmin/templates/main/&lt;br /&gt;
&lt;br /&gt;
#definiert legt den Pfad zu den Main-Template Dateien&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.templatePathSub = fileadmin/templates/sub/&lt;br /&gt;
&lt;br /&gt;
#definiert das Standard Main-Template Datei, welches geladen werden soll, wenn kein anderes Template ausgewählt wurde&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.defaultTemplateFileNameMain = main_rlmptmplselector.html&lt;br /&gt;
&lt;br /&gt;
#definiert das Standard Sub-Template Datei, welches geladen werden soll, wenn kein anderes Template ausgewählt wurde&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.defaultTemplateFileNameSub = sub_rlmptmplselector.html&lt;br /&gt;
&lt;br /&gt;
# If there is a page having no template selected, use a template&lt;br /&gt;
# selected earlier in the rootline. If there is none, use the default&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.inheritMainTemplates = 1&lt;br /&gt;
   plugin.tx_rlmptmplselector_pi1.inheritSubTemplates = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== TOP Link =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
# Setup TOP Link&lt;br /&gt;
   TOPLINK = TEXT&lt;br /&gt;
   TOPLINK {&lt;br /&gt;
      value = to top&lt;br /&gt;
      lang.en = To the Top&lt;br /&gt;
      lang.de = Seitenanfang&lt;br /&gt;
      wrap = &amp;lt;A HREF=&amp;quot;#top&amp;quot; class=&amp;quot;top-link&amp;quot;&amp;gt;|&amp;lt;/A&amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Überschrift als Grafik =====&lt;br /&gt;
&lt;br /&gt;
Im Install Tool (Installation) unter &amp;quot;All Configuration&amp;quot; &amp;quot;[gdlib_png]&amp;quot; aktivieren. &lt;br /&gt;
&lt;br /&gt;
# Setup Überschrift als Grafik&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Header1 = IMAGE&lt;br /&gt;
Header1 {&lt;br /&gt;
  wrap = |&lt;br /&gt;
  file = GIFBUILDER&lt;br /&gt;
  file {&lt;br /&gt;
   XY = [10.w]+6,00&lt;br /&gt;
   transparentColor = # Hintergrundfarbe&lt;br /&gt;
   backColor = # Hintergrundfarbe&lt;br /&gt;
   10 = TEXT&lt;br /&gt;
   10.text.field =&lt;br /&gt;
   10.text.current = 1&lt;br /&gt;
   10.fontSize = Schriftgröße&lt;br /&gt;
   10.offset = 0,50&lt;br /&gt;
   10.fontFile = fileadmin/schriftart.ttf&lt;br /&gt;
   10.fontColor = Schriftfarbe&lt;br /&gt;
   10.niceText = 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lib.stdheader.10.1 &amp;lt; Header1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Konfiguration 404 Error Site =====&lt;br /&gt;
&lt;br /&gt;
Eigene Fehlerseite (404 Error Site) mit der Extension error_404_handling erstellen&lt;br /&gt;
&lt;br /&gt;
Der Browser zeigt die normale Fehlerseite an, die einen 404 Fehler zurück gibt: 404 Error Site.&lt;br /&gt;
&lt;br /&gt;
Für eine eigene 404 Error Site, muss die Extension error_404_handling installiert werden.&lt;br /&gt;
&lt;br /&gt;
Im Ordner /typo3conf/ext/error_404_handling/files/ befinden sich die Dateien für die eigene 404 Error Site.&lt;br /&gt;
&lt;br /&gt;
Dateien:&lt;br /&gt;
&lt;br /&gt;
- 404page_not_found.php&lt;br /&gt;
&lt;br /&gt;
- example.htaccess&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;404page_not_found.php&amp;quot; in das Root-Verzeichnis der Domain kopieren. Und aus der example.htaccess Datei folgendes in die .htaccess Datei der Root-Ebene eingefügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ErrorDocument 404 /path_anpassen/404page_not_found.php&lt;br /&gt;
ErrorDocument 500 /path_anpassen/404page_not_found.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Install-Tool [warning_email_addr] kann eine E-Mail-Adresse eingeben. Dann wird eine E-Mail versendet, wenn eine Seite (404 Error Site) nicht gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
Einen Domainrecord anlegen bzw. öffnen und eine URL in dem Feld &amp;quot;Redirect to an URL if a page or file under this domain could not be found&amp;quot; eintragen.&lt;br /&gt;
&lt;br /&gt;
404 Error Site: Umleitung auf eine bestimmte 404 Error Site&lt;br /&gt;
Install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;quot;FE&amp;quot;][&amp;quot;pageNotFound_handling&amp;quot;] = &amp;#039;http://www.404-Error-Site.com/404.php&amp;#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== TYPO3 YAML =====&lt;br /&gt;
&lt;br /&gt;
TYPO3 YAML Beispielseite und Anleitung &lt;br /&gt;
&lt;br /&gt;
YAML, TYPO3 und YAML &lt;br /&gt;
&lt;br /&gt;
Download: yaml.t3net.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Syntax Highlighting Ultraedit =====&lt;br /&gt;
&lt;br /&gt;
Da mir die durchgehend schwarze Schrift des typoscript total auf den Senkel geht, und ich keinerlei adäquate Lösung zum Thema TypoScript Syntax Highlighting bzw. Syntax kontrolle etc. gefunden habe, hab ich mir das wordfile vom Ultraedit www.ultraedit.com mal hergenommen und erweitert!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.typo3.net/forum/list/list_post//21624/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Bedingungen definieren =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
marks.SLOGAN = COA&lt;br /&gt;
marks.SLOGAN {&lt;br /&gt;
10 &amp;lt; temp.import_img&lt;br /&gt;
stdWrap.ifEmpty.cObject &amp;lt; temp.std_img&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://lists.netfielders.de/pipermail/typo3-at/2004-October/003731.html&lt;br /&gt;
&lt;br /&gt;
http://www.jweiland.net/typo3cms/howto/typoscript-bedingung/&lt;br /&gt;
&lt;br /&gt;
http://www.typo3.net/tsref/functions/if/&lt;br /&gt;
&lt;br /&gt;
http://www.typo3.net/tsref/functions/stdwrap/&lt;br /&gt;
&lt;br /&gt;
http://linuxwiki.de/Typo3TypoScript&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Links =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.it-bo.com/typo3-marketing/hilfe/container-zentrieren.html&lt;br /&gt;
&lt;br /&gt;
http://ug.typo3-nrw.de/typo3-dynamic_css.html&lt;br /&gt;
&lt;br /&gt;
http://www.typo3.net/index.php?id=13&amp;amp;action=list_post&amp;amp;tid=39948&amp;amp;page=1&lt;br /&gt;
&lt;br /&gt;
http://blog.dopefreshtight.de/artikel/typo3-aufsetzen-setup/&lt;br /&gt;
&lt;br /&gt;
http://www.sk-typo3.de/RTE-Standardkonfiguration.31.0.html&lt;br /&gt;
&lt;br /&gt;
http://www.linet-services.de/t3_tscode.html&lt;br /&gt;
&lt;br /&gt;
http://www.it-bo.com/typo3-marketing/news/typo3-news/article/typo3-yaml-fuer-version-4.html&lt;br /&gt;
&lt;br /&gt;
http://www.typo3-unleashed.net/index.php?id=sitemap&lt;br /&gt;
&lt;br /&gt;
http://www.sk-typo3.de/Typo3-Extensions.68.0.html&lt;br /&gt;
&lt;br /&gt;
http://www.contentschmiede.de/links-zu-typo3/&lt;br /&gt;
&lt;br /&gt;
http://www.mcuniverse.com/TemplaVoila_-_Cheat_Sheet.1221.0.html&lt;br /&gt;
&lt;br /&gt;
http://www.just2b.com/mein-typo3/css-ts-menues.html&lt;br /&gt;
&lt;br /&gt;
http://ww2.sprain.ch/index.php?id=19&lt;br /&gt;
&lt;br /&gt;
http://www.typo3wizard.com/de/snippets/menus/text-menu-tmenu.html&lt;br /&gt;
&lt;br /&gt;
http://www.kraftfelt.dk/&lt;br /&gt;
&lt;br /&gt;
http://lists.netfielders.de/pipermail/typo3-german/2006-January/008630.html&lt;br /&gt;
&lt;br /&gt;
http://82.165.8.199/typo3cms/exotec-design.de/index.php?id=89&lt;/div&gt;</summary>
		<author><name>91.47.50.190</name></author>
	</entry>
</feed>