[TYPO3-german] TS Inhalt der Spalten beeinflusst Template

bernd wilke t3ng at pi-phi.tk
Sat Aug 7 04:21:03 CEST 2010


Am Fri, 06 Aug 2010 23:25:00 +0200 schrieb Marco Brüggemann:

[...]
> # PAGE-OBJEKT
> # ------------------------------------------------------------ page =
> PAGE
> page {
>     10 = TEXT
>     10.value = <div id="page"><div id="box1"><div id="box2"><div
> id="box3"><div id="box4"><div id="box5"><div id="box6"><div
> id="box7"><div id="box8"><div id="box9">
>     20 < tmp.headerarea
>     30 = TEXT
>     30.value = <div id="content">
>     40 < tmp.contentleft
>     50 < tmp.contentnormal
>     60 < tmp.contentright
>     70 < tmp.contentborder
>     80 = TEXT
>     80.value = </div>
>     90 < tmp.FOOTERMENU
>     100 = TEXT
>     100.value = </div></div></div></div></div></div></div></div></div></
div> 
> }
> 
> Es funktioniert so weit, dass ich Inhalte aus der Datenbank aufgelistet
> bekomme, doch leider ohne CSS-Einbindung usw. ich vermute es hat was mit
> "TEMPLATE" zu tun.

das muss an etwas anderem liegen. vermutlich hast du keine Einbindungen 
definiert?

page {
	includeCSS {
		default = {$path}css/default.css
		:
	}
}


 
> Meine ERSTE wichtige Frage:
> Kann ich das Template ohne File aufbauen? Wenn ja .. bitte ein Beispiel
> oder eine Hilfe. Ich habe zwar TS-Bücher und auch schon vieles im Web
> gesucht, aber nocht nichts so richtig gefunden. Also: kann man zum
> Beispiel MARKER und SUBPARTS usw über TypoScript definieren .. alles
> ganz ohne FILE.

dein Ansatz oben (Das was ich zitiert habe) ist schon ganz gut. Natürlich 
gibt es dabei keine Marker/Subparts, sondern nur die Zahlen. Das was 
normalerweise Marker sind ist hier 20 bis 90. Etwas unschön sind deine 
unübersichtlichen DIV-tags. daher würde ich folgende Struktur bevorzugen:

dies ist jetzt nur ein Ansatz und nicht vollständig (es fehlen einige 
Definitionen, die du in [1] finden kannst).

temp.headerarea = COA
temp.headerarea {
	10 = IMAGE
	10 {
		file ....
		wrap = <div class="logo">|</div>
	}
	20 < temp.mainmenu
	
	30 < temp.breadcrumb

	wrap = <div class="headerarea">|</div>
}

temp.middlearea = COA
temp.middlearea {
	10 < temp.leftcolumn
	20 < temp.rightcolumn
	30 < styles.content.get
	30.wrap = <div class="content">|</div>

	wrap = <div class="middle">|</div>
}

page {
	10 < temp.headerarea
	20 < temp.middlearea
	30 < temp.footerarea
}

Das Prinzip: 
möglichst klein mit temp.XXXX definieren und jeweils mit einem wrap das 
ganze in das zugehörige DIV-Tag einpacken.

Wie das Endergebnis dann aussieht kannst du am besten im Objektbrowser 
sehen, wenn die ganzen temp-Objekte aufgelöst wurden. in etwa so:

page {
	10 = COA
	10 {
		10 = IMAGE
		10.wrap = <div class="logo">|</div>
		
		20 = HMENU
		20.wrap

		30 = HMENU
		30.wrap

		wrap  = <div class="headerarea">|</div>
	}
	20 = COA
	20 {
		10 ...
		20 ...
		30 ...
		wrap = <div class="middle">|</div>
	}
	30 = COA
	30 {
		10 ...
		20 ...
		wrap = <div class="footerarea">|</div>
	}
}

(natürlich kannst du es auch direkt in dieser Struktur definieren)


bei Bedarf können die temp.XXX natürlich (HTML-)Templates nutzen. Das ist 
normalerweise aber nicht notwendig.
Durch diesen reinen Typoscript-Ansatz ist die Flexibilität natürlich sehr 
hoch. innerhalb des Typoscripts kann ich einzelne Elemente ausblenden 
oder redifinieren (Zb. in Conditions), ohne unterschiedliche HTML-
Templates nutzen zu müssen.

siehe auch: [1], [2]

und bitte die öffnenden und schließenden div-Tags möglichst jeweils als 
ein wrap in einer Zeile definieren

 
> ZWEITE Frage:
> Kann ich, nachdem ich mit "if.isTrue.numRows < styles.content.get"
> geprüft habe, die Inhalte zwischenspeichern und gleichzeitig mitzählen
> wieviele Spalten belegt sind?
> Danach möchte ich in Abhängigkeit der Anzahl von belegten Spalten
> entscheiden welches Template genutzt wird und dann jeweils die Inhalte
> in den Zwischenspeichern in die Template-Bereiche Speichern.

mitzählen geht vermutlich mit register-Variablen, Ich würde aber eher 
passende wraps (spezielle CSS-Klassen) zuordnen, um einzelne 'Spalten' 
bzw. Bereiche auszublenden. 
Oder das Layout wird nicht automatisch, sondern durch den Redakteur in 
den Seiteneigenschaften festgelegt [2]


TYPO3 ist so vielseitig, dass es für dein Problem sicher ein Dutzend 
verschiedener Lösungen gibt.

Bernd 

[1] http://ug.typo3-nrw.de/mastertemplate.html
[2] http://www.pi-phi.de/191.html

-- 
http://www.pi-phi.de/cheatsheet.html


More information about the TYPO3-german mailing list