Zum Inhalt springen

Zwei Klassen in mein bodyTagCObject

Erstellt am 28. Oktober 2011 · 5 Antworten · letzte Antwort am 28. Oktober 2011

Tags: Templates & Layouts, Frage

pinerski ·

Hallo Leute,

vielleicht kann mir jemand helfen bei meinem kleinen Problem?

Ich benutze in typo3 das backen_layout und setze die Auswahl in eine Klasse in den body tag.
Das mache ich mit folgendem typoscript:

temp.selectbodytag = CASE
temp.selectbodytag {
	# The value of the CASE object will depend on the value of the layout field in the page records
	key.field = backend_layout
	key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
	
	default = TEXT
	default.value = layout1
	
	1 = TEXT
	1.value = layout1
	
	2 = TEXT
	2.value = layout2
	
	
	stdWrap.wrap = <body class ="|">
}

page = PAGE
page {
	bodyTagCObject < temp.selectbodytag
}

Das erzeugt dann folgende Ausgabe

<body class ="layout2">

Nun möchte ich aber zusätzlich noch den Wert vom frontend layout in die Klasse setzen

temp.selectbodytag2 = CASE
temp.selectbodytag2 {
	# The value of the CASE object will depend on the value of the layout field in the page records
	key.field = layout
	
	default = TEXT
	default.value = nosubmenu
	
	1 = TEXT
	1.value = nosubmenu
	
	2 = TEXT
	2.value = submenu
	
	
	stdWrap.wrap = <body class ="|">
}

Am Ende sollte es z.B. so aussehen:

<body class ="layout2 nosubmenu">

Hat vielleicht einer einen Tipp oder Vorschlag, wie man die zwei Objekte miteinander verbinden kann?

Julian.​Hofmann ·

Hallo.

bodyTagCObject ist ein cObject, d.h. Du kannst hier auch ein COA wählen. Dann als je ein Objekt des Arrays die beiden CASE-Objekte einbinden (Leerzeichen für dan Abstand zwischen den Klassen nicht vergessen), und dann via wrap des COA-Objektes das Tag außenrum basteln.

Viele Grüße
Julian

pinerski ·
Julian.Hofmann schrieb

Hallo.

bodyTagCObject ist ein cObject, d.h. Du kannst hier auch ein COA wählen. Dann als je ein Objekt des Arrays die beiden CASE-Objekte einbinden (Leerzeichen für dan Abstand zwischen den Klassen nicht vergessen), und dann via wrap des COA-Objektes das Tag außenrum basteln.

Viele Grüße
Julian

Danke schon mal für den Tipp,

habe nun folgendes gemacht:

bodyTagCObject = COA
bodyTagCObject.wrap = <body class="|">
bodyTagCObject.10 = TEXT
bodyTagCObject.10 < temp.selectbodytag
bodyTagCObject.20 = TEXT
bodyTagCObject.20.value = &nbsp;
bodyTagCObject.30 = TEXT
bodyTagCObject.30 < temp.selectbodytag2

Leider bekomme ich es nicht hin ein Leerzeichen zwischen die beiden Klassen zubekommen.

pinerski ·

Hab es gerade doch noch geschafft ein Leerzeich einzusetzen.

Hier nun die Lösung:

temp.selectbodytag = CASE
temp.selectbodytag {
	key.field = backend_layout
	key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
	
	default = TEXT
	default.value = layout1
	
	1 = TEXT
	1.value = layout1
	
	2 = TEXT
	2.value = layout2
	
	
	stdWrap.noTrimWrap = || |
}


temp.selectbodytag2 = CASE
temp.selectbodytag2 {
	key.field = layout
	
	default = TEXT
	default.value = nosubmenu
	
	1 = TEXT
	1.value = nosubmenu
	
	2 = TEXT
	2.value = submenu
	
	
	stdWrap.wrap = |
}


page = PAGE
page {
...	

	bodyTagCObject = COA
	bodyTagCObject.wrap = <body class="|">
	bodyTagCObject.10 = TEXT
	bodyTagCObject.10 < temp.selectbodytag
	bodyTagCObject.30 = TEXT
	bodyTagCObject.30 < temp.selectbodytag2
...

}
Julian.​Hofmann ·

Prima.

Zwei Kleinigkeiten noch:

1. bodyTagCObject.10 = TEXT kannst Du Dir sparen, da Du durch das Kopieren von temp.selectbodytag auf bodyTagCObject.10 da eh überschreibst. Nach dem Kopieren sähe Dein TS wie folgt aus:

bodyTagCObject.10 = TEXT
bodyTagCObject.10 = CASE
bodyTagCObject.10 {
	key.field = backend_layout
	key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
 
	default = TEXT
	default.value = layout1
 
	1 = TEXT
	1.value = layout1
 
	2 = TEXT
	2.value = layout2 
 
	stdWrap.noTrimWrap = || |
}

2. Thema bitte noch auf "gelöst" stellen :-)