Zum Inhalt springen

Wie lassen sich colPos als Conditions einsetzen?

Erstellt am 9. März 2008 · 12 Antworten · letzte Antwort am 5. Oktober 2009

Tags: Frage

chudschi ·

Ich habe: das TSref durchforstet, in Foren gesucht, endlos ausprobiert und meine Typo3-Grenzen längst überschritten. Hier das Problem:

Die drei Spalten links, normal, rechts sollen je nach Belegung ein anderes Layout erzeugen. Ich habe das versucht, über isTrue/isFalse zu lösen (siehe Code):

temp.content= COA
	temp.content {
		10 = COA
		10 {
			if.isFalse.numRows < styles.content.get
			10 = COA
			10 {
				10 < styles.content.getLeft
				10.stdWrap.wrap = <div id="content_halbleft"> | </div>
				10.stdWrap.required = 1
				20 < styles.content.getRight
				20.stdWrap.wrap = <div id="content_halbright"> | </div>
				20.stdWrap.required = 1
				}
			}
		20 = COA
		20 {
			if.isTrue.numRows < styles.content.getLeft
			10 = COA
    			10 {
    				if.isTrue.numRows < styles.content.getRight
    				10 = COA
    				10 {
    					10 < styles.content.getLeft
					10.stdWrap.wrap = <div id="content_left"> | </div>
					10.stdWrap.required = 1
					20 < styles.content.getRight
					20.stdWrap.wrap = <div id="content_right"> | </div>
					20.stdWrap.required = 1
					30 < styles.content.get
					30.stdWrap.wrap = <div id="content_middle"> | </div>
					30.stdWrap.required = 1
					}
				}
			20 = COA
			20 {	
				if.isFalse.numRows < styles.content.getRight
				10 = COA
				10 {
					10 < styles.content.getLeft
					10.stdWrap.wrap = <div id="content_left"> | </div>
					10.stdWrap.required = 1
					30 < styles.content.get
					30.stdWrap.wrap = <div id="content_middleright"> | </div>
					30.stdWrap.required = 1
					}
				}
			}
		
		30 = COA
		30 {
  			if.isFalse.numRows < styles.content.getLeft
			10 = COA
			10 {
				if.isTrue < styles.content.getRight
				10 = COA
				10 {
					20 < styles.content.getRight
					20.stdWrap.wrap = <div id="content_right"> | </div>
					20.stdWrap.required = 1
					30 < styles.content.get
					30.stdWrap.wrap = <div id="content_leftmiddle"> | </div>
					30.stdWrap.required = 1
					}
				}
			20 = COA
			20 {
				if.isFalse.numRows < styles.content.getRight
				10 = COA
				10 {
					30 < styles.content.get
					30.stdWrap.wrap = <div id="content_all"> | </div>
					30.stdWrap.required = 1
					}
				}
			}


		}

Hier bekomme aber bei links/-/rechts sowie -/normal/- eine doppelte Ausgabe der Inhalte. Wahrscheinlich muss da noch irgendwo ein override rein, ich weiß aber nicht wie. Die gefundenen Beispiele beschränken sich immer auf zwei Spalten.

Weil ich nicht so viel von Typo3 verstehe, wünschte ich mir eine einfachere Lösung, zum Beispiel so (bitte nicht lachen):

temp.content = COA
	[globalVar = colPos=0] && [globalVar = colPos=2]
		temp.content = COA
		10 {
			10 < styles.content.getRight
			10.stdWrap.wrap = <div id="content_right"> | </div>
			20 < styles.content.get
			20.stdWrap.wrap = <div id="content_left_middle"> | </div>
			}
	[global]

Auf diese Art liessen sich bei vier Spalten 15 Layoutvarianten selektieren. Gibt es eine Lösung über Conditions? Oder geht es mit globalString? Im TSref steht unter userFunc eine php-Funktion, gibt es sowas auch für colPos?

Für Tipps wäre ich sehr dankbar.

einpraegsam.​net ·

Ich habe mal ein schönes Howto gepostet, wie man ein anderes CSS laden kann, wenn sich Inhalt in der rechten Spalte befindet oder nicht. Ein weiterer Post müsste im Forum herumliegen, der das HTML Template verändert je nach Spalteninhalt.

Am besten du schaust dir den HowTo Bereich mal genauer an...

chudschi ·

Danke für den Hinweis, hatte ich gemacht und auch HowTos gefunden, ebenso in Fachbüchern. Mein Skript funktioniert ja auch weitgehend. Nur bei den erwähnten Varianten verschluckt es sich und rendert Inhalte doppelt. Vielleicht krieg ich das ja noch hin.

Trotzdem: Kann mir jemand sagen, ob sich die Belegung einer Spalte als Condition einsetzen lässt?

chudschi ·

OK, dass es geht, ist ja schon mal eine gute Nachricht. Bleibt nur noch das Wie, was ja meine ursprüngliche Frage war.
Sorry, aber ich habe das TSref kreuz und quer gelesen, blicke aber nicht durch, mit welcher condition und welcher Werten ich die Bedingung zu colPos formulieren muss.

jenses ·
just2b schrieb

mal nicht kreuz & quer sondern gezielt lesen 😉

eben,
und unnötig kompliziert sollte man es auch nicht machen:

[globalVar = TSFE:tt_content|colPos = 1]
...
mache dies und das
...
[global]
chudschi ·

Na ja, geht doch ; ))

Im Ernst, so querbeet habe ich die TSref nun auch wieder nicht gelesen. Ich war schon an der Stelle, nur das Gelesene richtig umzusetzen, wenn das konkrete Beispiel fehlt …

Jedenfalls ein herzliches Danke (ein doppeltes an jenses),
die Osterferien sind gerettet.

alexd0001 ·

hi, also bei mir funktioniert das nicht. Wäre aber wirklich toll, wenn das klappen würde. Ohne die Condition funktioniert es! Und es funktioniert auch mit layout=1 in der Condition.

[globalVar = TSFE:tt_content|colPos = 0]
tt_content.image.20.1.file.width.field >
tt_content.image.20.1.file.width = 110c

tt_content.image.20.1.file.height.field >
tt_content.image.20.1.file.height = 110c
[global]

vielleicht kann mir jemand helfen.

mein system: typo 4.2.8 - kein TemplateVoila, ganz konservatives TS.. 😉

schönen Gruß - alex

vielleicht weiß doch jemand, wie ich das ganze anpacken kann...

mischah ·

Das würde mich auch brennend interessieren. Weil genau dieser Anwendungsfall bei mir Auftritt und auch eigentlich typisch ist.

Ich mchte das Bilder in der Spalte »Content« (Fliesstext) anders skaliert und gecroppt werden als in meiner Spalte »Footer«. Denn im Footer handelst es sich um Sponsorenlogos.

Das muss doch irgendwie gehen, die die Bildgröße in abhängigkeit der Spalte zu definieren.

Vielleicht sollten wir hierzu aber lieber einen neuen Thread aufmachen.