<?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=79.240.85.1</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=79.240.85.1"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/79.240.85.1"/>
	<updated>2026-05-06T14:46:07Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=19088</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=19088"/>
		<updated>2012-04-11T08:37:45Z</updated>

		<summary type="html">&lt;p&gt;79.240.85.1: /* JavaScript im Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Formulare ==&lt;br /&gt;
[[Typo3 - Formulare mit https sicher versenden]]&lt;br /&gt;
&lt;br /&gt;
[[TYPO3 - Checkbox in Standard Mailformular als Pflichtfeld]]&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;
=== Standard Navigation Beispiele ===&lt;br /&gt;
==== ak-freizeiten ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.navi_vBulletList = HMENU&lt;br /&gt;
temp.navi_vBulletList {&lt;br /&gt;
    special = directory&lt;br /&gt;
    special.value = 44&lt;br /&gt;
    #entryLevel = 0&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.noBlur = 1&lt;br /&gt;
   1.wrap = &amp;lt;ul class=&amp;quot;navi1&amp;quot;&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
   1.NO = 1&lt;br /&gt;
   1.NO.linkWrap = &amp;lt;li class=&amp;quot;naviL1&amp;quot;&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;naviL1_act&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;naviL1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    2 = TMENU&lt;br /&gt;
   2.noBlur = 1&lt;br /&gt;
   2.wrap = &amp;lt;ul class=&amp;quot;navi1_1&amp;quot;&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
   2.NO = 1&lt;br /&gt;
   2.NO.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   2.ACT = 1&lt;br /&gt;
   2.ACT.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   2.ACTIFSUB = 1&lt;br /&gt;
   2.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&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;
&lt;br /&gt;
Ein etwas ausführlicheres:&lt;br /&gt;
&lt;br /&gt;
[[TYPO3 Navigation aus Bildern im Media Feld]]&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.addHeaderData=COA&lt;br /&gt;
&lt;br /&gt;
[browser = msie]&lt;br /&gt;
&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;
&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;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;
siehe auch &amp;quot;Das Media Feld&amp;quot;&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;
=== Ein Inhaltselement an einen Marker schicken ===&lt;br /&gt;
Man kann im HTML-Template einen Marker oder Subpart definieren und diesen mit einem beliebigen Inhaltselement befüllen, daß dann auf allen Seiten angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.teaser = RECORDS&lt;br /&gt;
&lt;br /&gt;
temp.teaser{&lt;br /&gt;
  // ID des Datensatzes&lt;br /&gt;
  source = 17477&lt;br /&gt;
  tables = tt_content&lt;br /&gt;
  #conf.tt_content &amp;lt; tt_content // Standard muß nicht angegeben werden&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;gifbanner&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.TEASER &amp;lt; temp.teaser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[TYPO3 - Automatischer Rollover Effekt für Bilder mit Image Magick Effekten | Rollovereffekt auf Bilder mit Hilfe der ImageMagick Effekte]]&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;br /&gt;
&lt;br /&gt;
== TYPO3 - CSS ==&lt;br /&gt;
CSS Beispiele und Schnipsel für Extensions und Standardelemente gibt es unter:&lt;br /&gt;
[[TYPO3 - CSS]]&lt;br /&gt;
&lt;br /&gt;
== Geschützter Login Bereich ==&lt;br /&gt;
&lt;br /&gt;
Früher schön mit der New Login Box. Diese ist ab 4.3 integriert.&lt;br /&gt;
&lt;br /&gt;
=== Weiterleitung nach Login ===&lt;/div&gt;</summary>
		<author><name>79.240.85.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=19087</id>
		<title>Typo3 - Baukasten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Baukasten&amp;diff=19087"/>
		<updated>2012-04-11T08:36:01Z</updated>

		<summary type="html">&lt;p&gt;79.240.85.1: /* JavaScript im Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;weitere Infos unter [[Typo3 - Tipps und Tricks]]&lt;br /&gt;
&lt;br /&gt;
== Formulare ==&lt;br /&gt;
[[Typo3 - Formulare mit https sicher versenden]]&lt;br /&gt;
&lt;br /&gt;
[[TYPO3 - Checkbox in Standard Mailformular als Pflichtfeld]]&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;
=== Standard Navigation Beispiele ===&lt;br /&gt;
==== ak-freizeiten ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.navi_vBulletList = HMENU&lt;br /&gt;
temp.navi_vBulletList {&lt;br /&gt;
    special = directory&lt;br /&gt;
    special.value = 44&lt;br /&gt;
    #entryLevel = 0&lt;br /&gt;
   1 = TMENU&lt;br /&gt;
   1.noBlur = 1&lt;br /&gt;
   1.wrap = &amp;lt;ul class=&amp;quot;navi1&amp;quot;&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
   1.NO = 1&lt;br /&gt;
   1.NO.linkWrap = &amp;lt;li class=&amp;quot;naviL1&amp;quot;&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;naviL1_act&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;naviL1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    2 = TMENU&lt;br /&gt;
   2.noBlur = 1&lt;br /&gt;
   2.wrap = &amp;lt;ul class=&amp;quot;navi1_1&amp;quot;&amp;gt;|&amp;lt;/ul&amp;gt;&lt;br /&gt;
   2.NO = 1&lt;br /&gt;
   2.NO.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   2.ACT = 1&lt;br /&gt;
   2.ACT.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
   2.ACTIFSUB = 1&lt;br /&gt;
   2.ACTIFSUB.linkWrap = &amp;lt;li class=&amp;quot;naviL1_1_act&amp;quot;&amp;gt;|&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&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;
&lt;br /&gt;
Ein etwas ausführlicheres:&lt;br /&gt;
&lt;br /&gt;
[[TYPO3 Navigation aus Bildern im Media Feld]]&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;
&amp;lt;pre&amp;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;
&amp;lt;/pre&amp;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;
siehe auch &amp;quot;Das Media Feld&amp;quot;&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;
=== Ein Inhaltselement an einen Marker schicken ===&lt;br /&gt;
Man kann im HTML-Template einen Marker oder Subpart definieren und diesen mit einem beliebigen Inhaltselement befüllen, daß dann auf allen Seiten angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
temp.teaser = RECORDS&lt;br /&gt;
&lt;br /&gt;
temp.teaser{&lt;br /&gt;
  // ID des Datensatzes&lt;br /&gt;
  source = 17477&lt;br /&gt;
  tables = tt_content&lt;br /&gt;
  #conf.tt_content &amp;lt; tt_content // Standard muß nicht angegeben werden&lt;br /&gt;
  wrap = &amp;lt;div id=&amp;quot;gifbanner&amp;quot;&amp;gt;|&amp;lt;/div&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.TEASER &amp;lt; temp.teaser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[TYPO3 - Automatischer Rollover Effekt für Bilder mit Image Magick Effekten | Rollovereffekt auf Bilder mit Hilfe der ImageMagick Effekte]]&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;br /&gt;
&lt;br /&gt;
== TYPO3 - CSS ==&lt;br /&gt;
CSS Beispiele und Schnipsel für Extensions und Standardelemente gibt es unter:&lt;br /&gt;
[[TYPO3 - CSS]]&lt;br /&gt;
&lt;br /&gt;
== Geschützter Login Bereich ==&lt;br /&gt;
&lt;br /&gt;
Früher schön mit der New Login Box. Diese ist ab 4.3 integriert.&lt;br /&gt;
&lt;br /&gt;
=== Weiterleitung nach Login ===&lt;/div&gt;</summary>
		<author><name>79.240.85.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=CSS_-_Hacks&amp;diff=19086</id>
		<title>CSS - Hacks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=CSS_-_Hacks&amp;diff=19086"/>
		<updated>2012-04-11T08:13:30Z</updated>

		<summary type="html">&lt;p&gt;79.240.85.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== IE Hacks und IE Switches ==&lt;br /&gt;
&lt;br /&gt;
Wie man dem Internet Explorer Sonderregeln beibringt.&lt;br /&gt;
&lt;br /&gt;
===Internet Explorer Conditions===&lt;br /&gt;
&lt;br /&gt;
Generell ist die offizielle von MS empfohlene Methode eine Condition der Form:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;
 &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;iehacks.css&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--[if IE 5]&amp;gt;&lt;br /&gt;
 &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;iehacks-5.css&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--[if lt IE 8]&amp;gt;&lt;br /&gt;
 &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;iehacks.css&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lt bedeutet less than. Die Regeln betreffen also aller Versionen unter IE 8 (die es im Moment noch nicht gibt;-) Außerdem gibts noch lte (lower than and equal) und gte (greater than and equal)&lt;br /&gt;
important Hack&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann auch die important- Klausel weiterhelfen, die der IE nicht kennt, wohl aber FF/ Opera/ Konqueror; zudem macht man sich dabei keines neuen Bugs zu Hilfe.&lt;br /&gt;
&lt;br /&gt;
Wichtig: Immer erst die important- Klausel!&lt;br /&gt;
&lt;br /&gt;
Die Klausel bewirkt bei entsprechend kompatiblen Browsern, dass diese Eigenschaft nachfolgend nicht mehr überschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. box { &lt;br /&gt;
    min-height: 300px; &lt;br /&gt;
    height: auto !important; &lt;br /&gt;
    height: 300px; &lt;br /&gt;
    ... &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sternchen Hack ===&lt;br /&gt;
&lt;br /&gt;
Anwendung: Anweisungen nur für IE 5 und 6 z.B.&lt;br /&gt;
&lt;br /&gt;
 * html {...} /*das sehen nur IEs*/&lt;br /&gt;
&lt;br /&gt;
Zukunftssicher: funktioniert nicht mehr bei IE 7&lt;br /&gt;
&lt;br /&gt;
=== Box Model Hack / Tantek Hack ===&lt;br /&gt;
&lt;br /&gt;
IE 5 und IE 5.5&lt;br /&gt;
&lt;br /&gt;
Anwendung: Box Model Fehler von IE 5/5.5 korrigieren&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#kasten{&lt;br /&gt;
    width: 360px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
* html #kasten{       /*Das beachten nur IEs*/&lt;br /&gt;
    width: 400px;       /* der &amp;#039;Falsche&amp;#039; Wert für alte IEs */&lt;br /&gt;
    w\idth: 360px;      /* das sieht nur der IE 6 */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zukunftssicher: ja&lt;br /&gt;
&lt;br /&gt;
===Kind Selektor Hack===&lt;br /&gt;
&lt;br /&gt;
IE versteht den KindSelektor nicht. Z.B.&lt;br /&gt;
&lt;br /&gt;
 body &amp;gt; p &lt;br /&gt;
&lt;br /&gt;
Anwendung: Höhe nur für IE setzen (IE braucht Höhenangaben z.B. wg. Inline Padding Bug.)&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#inhalt {height: 100px;}  /*für IE*/&lt;br /&gt;
html&amp;gt;body #inhalt {       /*für andere Browser zurücksetzen*/&lt;br /&gt;
   height: auto&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Browser Bugs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IE:mac CSS overflow-Bug&lt;br /&gt;
&lt;br /&gt;
Der Internet Explorer für Mac stürzt ab, wenn man overflow: auto auf ein Input-Element des Typs Submit anwendet und auf die Schaltfläche klickt.&lt;br /&gt;
&lt;br /&gt;
Lösung/Fix: Statt overflow: auto muss overflow: visible zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
Weitere Info: http://www.bernd-lutz.de/css_overflow-bug_ie_mac-51.php&lt;br /&gt;
Box Model Bug&lt;br /&gt;
&lt;br /&gt;
IE 5 / 5.5&lt;br /&gt;
&lt;br /&gt;
Standard: Elementbreite = width + paddings + margins + borders IE: Elementbreite = width + margin&lt;br /&gt;
&lt;br /&gt;
Wenn also eine width und borders bzw. paddings angegeben sind werden die Boxen im IE 5 und 5.5 zu klein weil die paddings und borders nicht dazu gezählt werden. Lösung:&lt;br /&gt;
&lt;br /&gt;
   1. Wenn width angegeben kein padding oder border verwenden. Stattdessen Ränder auf die Kindelemente anwenden.&lt;br /&gt;
   2. Box Model Hack / Kind Hack &lt;br /&gt;
&lt;br /&gt;
=== Kommentar Hack ===&lt;br /&gt;
&lt;br /&gt;
Anwendung: vor IE/Mac verstecken z.B. bei 3px Bug der nur in Win Versionen auftaucht.&lt;br /&gt;
&lt;br /&gt;
Beispiel (in Kombination mit * Hack)&lt;br /&gt;
&lt;br /&gt;
/* Hide from IE5-mac. Only IE-win sees this. \*/&lt;br /&gt;
* html #floatbox {&lt;br /&gt;
margin-right: 10px;&lt;br /&gt;
}&lt;br /&gt;
* html p {&lt;br /&gt;
height: 1%;&lt;br /&gt;
margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
/* End hide from IE5/mac */&lt;br /&gt;
&lt;br /&gt;
=== Inline Padding Bug ===&lt;br /&gt;
&lt;br /&gt;
Horizontales Padding und Margin funktioniert bei Inline-Elementen im IE nur wenn eine Höhe angegeben ist. Dann kann es allerdings zu anderen Seiteneffekten kommen.&lt;br /&gt;
&lt;br /&gt;
Lösung Höhe mit Kind Selektor Hack setzen.&lt;br /&gt;
3px Bug bei Bildern&lt;br /&gt;
&lt;br /&gt;
Oft taucht beim IE im Zusammenhang mit floatenden Elementen eine Lücke unterhalb oder links rechts eines Bildes auf. Selbst eine Höhe für das Div hilft nichts.&lt;br /&gt;
&lt;br /&gt;
Lösungsansätze: negatives padding für (Win IEs) overflow: hidden;&lt;br /&gt;
Double Margin Bug&lt;br /&gt;
&lt;br /&gt;
IE6 und kleiner berechnen den Margin einer floatenden Box manchmal doppelt.&lt;br /&gt;
&lt;br /&gt;
This bug only occurs when the float margin goes in the same direction as the float and is trapped directly between the float and the inside edge of the container box. Any following floats with a similar margin won&amp;#039;t show the doubled margin. Only the first float in any given float row will suffer from the bug. Also, the doubled margin displays symmetry, working the same way to the right as it does to the left. (Position Is Everything)&lt;br /&gt;
&lt;br /&gt;
Lösung: Die floatende box bekommt den Wert:&lt;br /&gt;
&lt;br /&gt;
 display: inline;&lt;br /&gt;
&lt;br /&gt;
Der Bug ist damit behoben und die Box bleibt (nach W3C Definition trotzdem ein Block Element, weil floatende Boxen automatisch immer Block-Elemente werden.&lt;br /&gt;
&lt;br /&gt;
=== IE7 Update ===&lt;br /&gt;
&lt;br /&gt;
Aus: IE-Blog http://blogs.msdn.com/ie/archive/2006/08/22/712830.aspx&lt;br /&gt;
Korrigierte Bugs&lt;br /&gt;
Bugs we fixed&lt;br /&gt;
&lt;br /&gt;
    * All bugs on positioniseverything.net except the “escaping floats” bug (which is planned for the future)&lt;br /&gt;
          o Peekaboo Bug&lt;br /&gt;
          o Internet Explorer and Expanding Box Problem&lt;br /&gt;
          o Quirky Percentages&lt;br /&gt;
          o Line-height bug&lt;br /&gt;
          o Border Chaos&lt;br /&gt;
          o Disappearing List-Background bug&lt;br /&gt;
          o Guillotine Bug&lt;br /&gt;
          o Unscrollable Content bug&lt;br /&gt;
          o Duplicate Characters Bug&lt;br /&gt;
          o IE and Italics&lt;br /&gt;
          o Doubled Float-Margin bug&lt;br /&gt;
          o Duplicate Indent bug&lt;br /&gt;
          o Three pixel text jog&lt;br /&gt;
          o Creeping Text bug&lt;br /&gt;
          o Missing First letter bug&lt;br /&gt;
          o Phantom box bug &lt;br /&gt;
&lt;br /&gt;
Details on some of the other bugs (from sources other than the positioniseverything.net list) that we fixed:&lt;br /&gt;
&lt;br /&gt;
    * Overflow now works correctly! (That means boxes do not automatically grow any more.)&lt;br /&gt;
    * Parser bugs: * html, _property and /**/ comment bug&lt;br /&gt;
    * Select control: CSS style-able and not always on top&lt;br /&gt;
    * Auto-sizing of absolute positioned element with width:auto and right &amp;amp; left (great for 3 column layouts)&lt;br /&gt;
    * Addressed many relative positioning issues&lt;br /&gt;
    * Addressed many absolute positioned issues&lt;br /&gt;
    * % calculations for height/width for abs positioned elements http://channel9.msdn.com/ShowPost.aspx?PostID=191182&lt;br /&gt;
    * &amp;lt;?xml&amp;gt; prolog no longer causes quirks mode&lt;br /&gt;
    * HTML element truly independent of the Body (now gets its own width, height etc.)&lt;br /&gt;
    * 1 px dotted borders no longer render as dashed&lt;br /&gt;
    * Bottom margin bug on hover does not collapse margins&lt;br /&gt;
    * Several negative margin issues fixed&lt;br /&gt;
    * Recalc issues including relative positioning and/or negative margins are fixed now&lt;br /&gt;
    * CLSID attribute of &amp;lt;object&amp;gt; tag no longer limited to 128 characters&lt;br /&gt;
    *  :first-letter whitespace bug described in http://blogs.msdn.com/ie/archive/2005/09/02/460115.aspx fixed&lt;br /&gt;
    * Descendant selector now works properly for grand children when combined with other selectors&lt;br /&gt;
    * First-line and first-letter now applies when there is no space between word :first-line and opening brace {&lt;br /&gt;
    * Pseudo-classes now are working as expected if selector is excluded&lt;br /&gt;
    * The :link selector works now for anchor tag with href set to bookmark&lt;br /&gt;
    * Addressed !important issues&lt;br /&gt;
    * PositionIsEverything piefecta-rigid.htm now works&lt;br /&gt;
    * List-item whitespace bug fixed&lt;br /&gt;
    * Fixed Absolutely Buggy II&lt;br /&gt;
    * Absolute positioned elements now use always correct containing block for positioning and size information&lt;br /&gt;
    * Nested block elements now respect all overflow declarations (hidden, scroll, etc)&lt;br /&gt;
    * Fixed the opposing offset problem (absolute positioned element whit all four top, bottom left and right are present)&lt;br /&gt;
    * &amp;lt;a&amp;gt; tags nested within LI elements will no longer add extra bottom margin when hover occurs&lt;br /&gt;
    * We no longer lose the image aspect ratio on refresh&lt;br /&gt;
    * Cleaned up our ident parsing according to CSS2.1 rules&lt;br /&gt;
    * Fixed parsing bugs for multi- class selectors and class selectors that are combined with id selectors&lt;br /&gt;
    * And many more &lt;br /&gt;
&lt;br /&gt;
We also extended our existing implementations to comply with W3C specifications:&lt;br /&gt;
&lt;br /&gt;
    * Enable :hover on all elements not just on &amp;lt;a&amp;gt;&lt;br /&gt;
    * Background-attachment: fixed works on all elements – so Eric Meyer’s complexspiral demo works&lt;br /&gt;
    * Improved &amp;lt;object&amp;gt; fallback &lt;br /&gt;
&lt;br /&gt;
Finally, we added new features from CSS2.1:&lt;br /&gt;
&lt;br /&gt;
    * Min/max width/height support (also for images, which did not work in IE7b2)&lt;br /&gt;
    * Transparent borders&lt;br /&gt;
    * Fixed positioning support&lt;br /&gt;
    * Selectors: first-child, adjacent, attribute, child&lt;br /&gt;
          o A couple of CSS 3 attribute selectors: prefix, suffix and substring since we were working already in the code base (also the general sibling selector) &lt;br /&gt;
    * Alpha channel PNG support (Not a CSS feature but too important for designers to not call it out J) &lt;br /&gt;
&lt;br /&gt;
Links&lt;br /&gt;
&lt;br /&gt;
http://css.nu/pointers/bugs-ie.html 2006-06-29&lt;br /&gt;
&lt;br /&gt;
http://websemantics.co.uk/tutorials/useful_css_snippets/&lt;br /&gt;
Useful Snippets&lt;br /&gt;
&lt;br /&gt;
aus http://websemantics.co.uk/tutorials/useful_css_snippets/&lt;br /&gt;
Leveller&lt;br /&gt;
&lt;br /&gt;
Versuche alle Browser auf möglichts gleiche Werte &amp;#039;vorzukonfigurieren&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {margin:0; padding:0}&lt;br /&gt;
&lt;br /&gt;
Removes margin and padding from every element.&lt;br /&gt;
&lt;br /&gt;
html {height:100%}&lt;br /&gt;
&lt;br /&gt;
Sets the window height.&lt;br /&gt;
&lt;br /&gt;
min-height:101%;&lt;br /&gt;
&lt;br /&gt;
Sets the minimum page height to greater than the window height to force Netscape &amp;amp; Firefox to display vertical scrollbars, thereby preventing content jumping on fixed width pages. IE doesn&amp;#039;t understand min-height and totally ignores this setting.&lt;br /&gt;
&lt;br /&gt;
font:100.01%/130% Verdana, Helvetica, sans-serif;&lt;br /&gt;
&lt;br /&gt;
Set font-size to a percentage preventing a Windows IE &amp;quot;extreme font re-sizing&amp;quot; bug. Set font-size slightly larger than 100% to repair Opera rounding errors. Set less than 101% to prevent Safari errors. The line-height setting gives nice, clear and easy-read spacing. Verdana is the most readable, and readily available screen font in Windows. Helvetica most readable, and readily available screen font on Macintosh computers. Sans-serif is the most readable to the widest audience for body text.&lt;br /&gt;
&lt;br /&gt;
color:#000; background:#fff;&lt;br /&gt;
&lt;br /&gt;
Set general colour &amp;amp; background.&lt;br /&gt;
&lt;br /&gt;
width:760px;&lt;br /&gt;
&lt;br /&gt;
Fixed width set for 800 pixel wide browser displays.&lt;br /&gt;
&lt;br /&gt;
margin:0 auto&lt;br /&gt;
&lt;br /&gt;
Margins are set for centring the content. This works for IE6, Firefox, Opera, Safari and Netscape but IE5 and IE5.5 require further treatment.&lt;br /&gt;
&lt;br /&gt;
text-align:center&lt;br /&gt;
&lt;br /&gt;
Added to the body element to force IE to centre all content&lt;br /&gt;
&lt;br /&gt;
body * {text-align:left}&lt;br /&gt;
&lt;br /&gt;
Resets all text aligns to the left&lt;br /&gt;
&lt;br /&gt;
#wrapper {width:760px}&lt;br /&gt;
&lt;br /&gt;
States the wrapper width. All centred content goes inside a div with an id=&amp;quot;wrapper.&lt;br /&gt;
&lt;br /&gt;
* {&lt;br /&gt;
  margin:0;&lt;br /&gt;
  padding:0} &lt;br /&gt;
html {&lt;br /&gt;
  height:100%; &lt;br /&gt;
  font-size:100.01%&lt;br /&gt;
} &lt;br /&gt;
body {&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  min-height:101%;&lt;br /&gt;
  font:100.01%/130% Verdana, Helvetica, sans-serif;&lt;br /&gt;
  color:#000; background:#fff;&lt;br /&gt;
  width:760px;&lt;br /&gt;
  margin:0 auto &lt;br /&gt;
} &lt;br /&gt;
body * {text-align:left;} &lt;br /&gt;
#wrapper {width:760px}&lt;/div&gt;</summary>
		<author><name>79.240.85.1</name></author>
	</entry>
</feed>