Zum Inhalt springen

Template ja nach Inhalt verwenden

Erstellt am 1. Februar 2011 · 30 Antworten · letzte Antwort am 16. Februar 2011 · Seite 1 von 2

Tags: Templates & Layouts, Frage

heikehk ·

Hallo,

ich möchte, um möglichst flexibel zu sein, je nach eingetragenen Inhalten eine andere Template Datei verwenden, um dort dann die Inhalte an die passende Stelle schreiben zu können.

Zusätzlich würde ich gerne den Inhalt meiner Hilfsvariablen verwenden, um eventuell an anderer Stelle noch einmal darauf zurückgreifen zu können und je nachdem, ob Inhalt vorhanden oder nicht etwas anderes zu tun.

Ich dachte, wenn ich abfrage, ob der Inhalt leer ist und das für links, mitte und rechts abfrage und eine COA Variable mit dem Inhalt 0 fülle, falls kein Inhalt vorhanden. Mit Suchen nach Schnipseln hatte ich folgendes Typoscript zusammengebaut:

1944: 	// HTML Layoutvorlage einbinden
1945: // Inhalte klären
1946: temp.inhalt_links >
1947: temp.inhalt_links = COA
1948: temp.inhalt_links {
1949:   # Hole Inhalt aus rechter Spalte
1950:   10 < styles.content.getLeft
1951:   # Wenn leer, dann Inhalt aus anderer Seite holen
1952:   10.stdWrap.ifEmpty.cObject = 0
1953:    }
1954: 
1955: temp.inhalt_mitte >
1956: temp.inhalt_mitte = COA
1957: temp.inhalt_mitte {
1958:   # Hole Inhalt aus rechter Spalte
1959:   10 < styles.content.get
1960:   # Wenn leer, dann Inhalt aus anderer Seite holen
1961:   10.stdWrap.ifEmpty.cObject = 0
1962:    }
1963: 
1964: temp.inhalt_rechts >
1965: temp.inhalt_rechts = COA
1966: temp.inhalt_rechts {
1967:   # Hole Inhalt aus rechter Spalte
1968:   10 < styles.content.getRight
1969:   # Wenn leer, dann Inhalt aus anderer Seite holen
1970:   10.stdWrap.ifEmpty.cObject = 0
1971:    }
1972: 
1973: 
1974: temp.vorlagenDatei = COA
1975: [temp.inhalt_links.10 <> 0 && temp.inhalt_mitte.10 <> 0 && temp.inhalt_rechts.10 <> 0]
1976: 	temp.vorlagenDatei = fileadmin/layout_lmr.html
1977: [temp.inhalt_links.10 = 0 && temp.inhalt_mitte.10 <> 0 && temp.inhalt_rechts.10 <> 0]
1978: 	temp.vorlagenDatei = fileadmin/layout_mr.html 
1979: [temp.inhalt_links.10 = 0 && temp.inhalt_mitte.10 <> 0 && temp.inhalt_rechts.10 = 0]
1980: 	temp.vorlagenDatei = fileadmin/layout_m.html 
1981: [temp.inhalt_links.10 <> 0 && temp.inhalt_mitte.10 <> 0 && temp.inhalt_rechts.10 = 0]
1982: 	temp.vorlagenDatei = fileadmin/layout_lm.html 
1983: [temp.inhalt_links.10 <> 0 && temp.inhalt_mitte.10 = 0 && temp.inhalt_rechts.10 <> 0]
1984: 	temp.vorlagenDatei = fileadmin/layout_lr.html
1985: [global]
1986: 	
1987: page.20 = TEMPLATE
1988: page.20.template = FILE
1989: page.20.template.file < temp.vorlagenDatei
1990: page.20.workOnSubpart = DOKUMENT
1991: 
1992: page.includeCSS {
1993: 	    file1 = fileadmin/templates/yaml/patches/layout_2col_left_13.css
1994: 	    file2 = fileadmin/templates/yaml/core/base.css
1995: 	    file3 = fileadmin/templates/yaml/navigation/nav_shinybuttons.css
1996: 	    file4 = fileadmin/templates/yaml/navigation/nav_vlist.css
1997: 	    file5 = fileadmin/templates/yaml/screen/basemod.css
1998: 	    file6 = fileadmin/templates/yaml/screen/basemod_2col_left_13.css
1999: 	    file7 = fileadmin/templates/yaml/screen/content.css
2000: 	    file8 = fileadmin/templates/yaml/print/print_003_draft.css
2001: 	    file8.media = print
2002: 	    }

Ich denke das sollte in TypoScript ja lösbar sein.

Ist die Abfrage wie oben gebaut denn richtig, oder habe ich das was falsch verstanden?
Ich bekomme einfach keinerlei Template-Datei eingebunden.
Die Seite wird erstellt, es werden auch die von mir definierten CSS-Dateien eingebunden, aber den Bereich, den normalerweise die Template-Datei dann übernimmt, davon passiert nichts.

Kann mir jemand helfen?

Gruß
Heike

heikehk ·

Hi,

nachdem ich noch viel mehr gelesen habe, glaube ich ja wirklich, dass ich mit dem Ansatz oben völlig falsch gelegen habe.

Was ich eigentlich will:

1. Prüfen, in welchen Spalten Inhalte vorhanden sind.
2. passende Layout-Datei zuweisen:
Daten LMR -> Aufteilung in drei divs zu 25 % | 50% | 25%
Daten LM -> Aufteilung in zwei divs zu 33 % | 66%
Daten MR -> Aufteilung in zwei divs zu 66 % | 33%
Daten M -> Aufteilung in ein div zu 100 %
Daten LR -> Aufteilung in zwei dis zu 50% | 50%
3. Hierfür habe ich eigentlich gedacht, dass ich vorbereitete HTML-Vorlagen mit den passenden divs, subcolumns und Markern vorbereite und dann entsprechend bestücke.

4. Für das Zuweisen der Inhalte zu den Markern wollte ich dann noch mal auf mein Abfrage-Ergebnis zurückgreifen, da ich ja nicht in jeder Vorlage alle Bereich habe und auch nicht alle einlesen möchte.

Meine momentane Variante für diese Lösung wäre folgendes, aber...
Die Conditions ziehen irgendwie nicht.
Wenn ich die Variable für die Template-Datei anfangs schon einmal bestücke: page.temp.vorlagenDatei.file = fileadmin/templates/layout_m.html, dann wird genau dieser Vorlagen-Datei verwendet, aber keine Marks mehr ersetzt.

Mache ich das nicht, dann wird keine Layout-Datei verwendet.

	// HTML Layoutvorlage einbinden
// Inhalte klären
page.temp.inhalt = TEXT
page.temp.inhalt {
	10 = TEXT
	10.value = 0
	10.if.isFalse.numRows < styles.content.getLeft
	20 = TEXT
	20.value = 0
	20.if.isFalse.numRows < styles.content.get
	30 = TEXT
	30.value = 0
	30.if.isFalse.numRows < styles.content.getRight
	}


page.temp.vorlagenDatei = TEMPLATE
page.temp.vorlagenDatei = FILE
page.temp.vorlagenDatei.file = fileadmin/templates/layout_m.html
[page.temp.inhalt.10 <> 0]  && [page.temp.inhalt.20 <> 0]  && [page.temp.inhalt.30 <> 0]
	page.temp.vorlagenDatei.file = fileadmin/templates/layout_lmr.html
[page.temp.inhalt.10 = 0]  && [page.temp.inhalt.20 <> 0]  && [page.temp.inhalt.30 <> 0]
	page.temp.vorlagenDatei.file = fileadmin/templates/layout_mr.html 
[page.temp.inhalt.10 = 0] && [page.temp.inhalt.20 <> 0] && [page.temp.inhalt.30 = 0]
	page.temp.vorlagenDatei.file = fileadmin/templates/layout_m.html 
[page.temp.inhalt.10 <> 0] && [page.temp.inhalt.20 <> 0]  && [page.temp.inhalt.30 = 0]
	page.temp.vorlagenDatei.file = fileadmin/templates/layout_lm.html 
[page.temp.inhalt.10 <> 0] && [page.temp.inhalt.20 = 0] && [page.temp.inhalt.30 <> 0]
	page.temp.vorlagenDatei.file = fileadmin/templates/layout_lr.html
[global]
	
	
// page.20 = TEMPLATE
// page.20.template = FILE
page.20 < page.temp.vorlagenDatei
page.20.workOnSubpart = DOKUMENT

Wenn ich im Browser Analyzer dann meine Conditions durchprobiere, dann klappt das mit der Zuweisung der verschiedenen Templates. Offensichtlich kann er aber den Befehl page.20.workOnSubpart = DOKUMENT nicht mehr interpretieren und damit wird nichts mehr ersetzt.
Ich habe ein paar Seiten mit Testinhalten in verschiedenen Spalten bestückt, aber irgendwie scheint er das nicht zu schaffen. irgendwie ist vielleicht mein Konstrukt, um zu klären ob Daten in den Spalten sind falsch... #paralyzed#

Eine andere Idee, die ich in meiner Verzweiflung heute schon hatte ist, dass ich nur eine Vorlage verwende, die dann erstmal drei Mars besitzt für links / mitte / rechts und die ich dann mit den divs über Wraps ausstatte. Nur muss ich da ja dann trotzdem gestaffelt wissen, wo Daten drin sind und wo nicht.

Ich befürchte ich brauche mal eine prinzipielle Antwort, ob das überhaupt möglich ist so eine Condition zu basteln und wie man das vernünftig macht. Ich habe jetzt auf meiner Suche auch gelesen, dass es in Typoscript keine Variablen gibt. #angry##angry#

Ich denke wenn dieser Knoten endgültig geplatzt ist, dann bin ich einen entscheidenden Schritt weiter im Verstehen.

Danke schonmal für das Lesen dieser Massen. :o
Wenn ich das mal irgendwann verstanden habe verspreche ich auch zu helfen..

Einen verzweifelten Gruß

Heike

sobi555 ·

Also ich bin jetzt nicht alles dugegangenund habe gelesen... :o
Aber einfach mal die Frage, warum verwendest du nicht TemplaVoila??

LG - Simon

heikehk ·

Hi Simon,

ja ich weiß, das würde die Sache vereinfachen, aber ich wollte einfach einmal alles von Hand machen, damit ich lerne wie es geht.

Bin gerade am überlegen, wie ich es schaffe einfach die Anzehl der Zeilen im Content pro Spalte in eine Variable zu geben, die ich dann auf > 0 oder eben nicht prüfen kann.

Würde das denn so gehen?

// Anzahl Zeilen links
10 = TEXT
10.value = 0
10.numRows
    {
    table = tt_content
    select {
        where = colPos = 1
    }
}

Dann müsste ich doch die Variablen in meinen Conditions abfragen können, oder?

Irgendwie zeigt er gad den Code seltsam an. Hinter 10.numrows kommt eigentlich nur der Zeilenumbruch und die offene geschweifte Klammer...

Bevor ichs vergesse, ich habe bisher dazu keine weiteren Infos gefunden. Ich würde ein Objekt definieren wollen, in dem 10 die Anzahl der Zeilen links, 20 die Anzahl der Zeilen mitte, 30 die Anzahl der Zeilen rechts aufnehmen soll.

Muss dieses Objekt dann erstmal als COA definiert werden oder nicht?
Muss ich das mit meiner Variable für die Template-Datei dann auch machen?
und...
:o was macht den Untershcied aus ob COA oder nicht?

Gruß
Heike

sobi555 ·

Heike, dann hast du also auch ein CMS geschrieben, bevor du mit TYPO3 angefangen hast?
Wenn du schreibst:
ich möchte, um möglichst flexibel zu sein, je nach eingetragenen Inhalten eine andere Template Datei verwenden, um dort dann die Inhalte an die passende Stelle schreiben zu können.
und dafür kein TV verwenden willst, dann klingt das in meinen Ohren wie ein 100 Metersprinter, der auf Händen laufen will. Klar, es geht auch anders...

Ich finde es mit TV super easy, einfach für die Redaktion, übersichtlich zum entwickeln... Hier kannst du dann auch einzelne Felder einfach ansprechen und auf Inhalt überprüfen. Zb. so:

<TypoScript><![CDATA[
10 = COA
10 {
  10 = TEXT
  10 {
    current = 1
    typolink.parameter.field = field_faqs
    required = 1
    wrap = <img src="fileadmin/templates/layoutImages/iconPfeil_6.png" alt="" title="Pfeil" border="0" height="12" width="14">&nbsp;|
  }
]]></TypoScript>

(Wenn das Feld FAQ ausgefüllt ist, wird davor ein Pfeil gesetzt)

LG - Simon

heikehk ·

OK ich seh ja ein, dass ich das eventuell besser mit TV machen sollte,
aber was ist meinen letzten Fragen?
Könntest Du mir die beantworten?

Gruß
Heike

etux ·

Ich habe die Beiträge auch nur schnell überflogen. Ich hoffe, ich habe das Thema nicht missverstanden.
Ich habe eine Erweiterung erstellt, die genau das und einiges mehr macht. Leider ist sie gerade nicht online und stehet nicht zum Download bereit, da ich sie zur Zeit gründlich bearbeite.
Was sie so in etwa kann, habe ich kurz angerissen:
http://emil-webdesign.net/typo3-cms/templates/template-01beta/

Als Fazit: Du kannst also alles das umsetzen, was Du Dir für Deine Installation wünschst.

Der einzige Unterschied – in meiner Erweiterung gibt es keine html-Vorlagen. Alles nur TypoScript pur.
Aus meiner Sicht spielt das aber keine Rolle. Mit TemplaVoila oder nur mit html-Vorlagen mit MARKER – alles sollte genau so unproblematisch gehen.

EDIT: Auch bei der anderen Erweiterung (die online ist)
http://emil-webdesign.net/typo3-cms/templates/template-02beta/
habe ich ein ähnliches Template verwendet – nur etwas einfacher

.
.

heikehk ·

Hallo Emil,

danke für Deine Antwort.
Leider passt Deine Lösung mit Deiner Extension für mich nicht so ganz, da ich ja erst einmal verstehen lernen möchte, wie ich in TypoScript die passenden Abfragen mache.

ob ich dann alles lieber mit TemplaVoila zusammen klicken möchte bleibt dann dahingestellt. Was ich momentan wahnsinnig schwierig finde und das trotz 4 Typo3 Büchern, die offen um mich herumliegen, ist die Tatsache, dass ich offenbar ein paar der grundlegenden Dinge nicht begriffen habe.

Punkt 1 der nicht verstandenen Dinge:
Wann muss ich ein Objekt erst einmal als COA definieren und warum?

Punkt 2:
Wo muss ich temporäre Objekte erstellen, wenn ich diese innerhalb des page-Objektes referenzieren möchte? Müssen diese Objekte dann zum page Objekt gehören oder eben nicht.

Punkt 3:
Bekomme ich mit einer if.Abfrage, wie oben beschrieben tatsächlich den Wert numRows in meine Variable oder 0, falls es leer ist, oder habe ich dieses Beispiel falsch verstanden?

Punkt 4:
An welcher Stelle sollte diese Abfrage erfolgen? Innerhalb des page-Objektes oder besser außerhalb?

Punkt 5:
Warum funktioniert das .workOnSubparts für das Template nicht, wenn ich die Datei des Templates über ein Objekt übertragen habe. Muss ich diesen Bereich dann auch in dem zu übergebenden Objekt weiter reichen?

Punkt 6:
Wenn ich im Template-Analyser mein Typoscript ansehe, dann sind manche Bereiche irgendwie grün hinterlegt. Irgendwo habe ich gelesen, dass diese Bereiche ignoriert werden. Wobei es weniger anzeigt, als tatsächlich ignoriert werden 😉.
Ist das in Bezug auf die Seite zu sehen oder allgemein?

Punkt 7:
Falls meine Idee mit einer If-Abfrage zu arbeiten völlig falsch ist, wie würdet Ihr eine solche Abfrage machen?

Mein Grund wissen scheint trotz Programmiererfahrung momentan = 0 zu sein. #angry##angry##angry# Ich habe aus diesem Grund hier in den Anfängerfragen gepostet, weil ich einfach verstehen will und nicht nur irgendwelche Extensions benutzen. Das kann ich dann ja machen, wenn ich weiß, was ich tue....:o

Bitte kann jemand meine Fragen beantworten?
😉😉😉
Gruß
Heike

etux ·
heikehk schrieb

… weil ich einfach verstehen will und nicht nur irgendwelche Extensions benutzen

So habe ich das mit meinen Erweiterungen nicht gemeint. Es sollte Dir nur Mut machen und Dir zeigen, dass alles realisierbar ist.
Ich hätte auch schreiben können, dass ich in den Templates mit if-Abfragen arbeite und Dir ein Beispiel-Code posten. Da ich es aber einerseits eilig hatte (auch jetzt) und andererseits davon ausging, dass wenn Du Code sehen willst, Dir die eine Erweiterung downloaden und importieren kannst und (ohne sie zu installieren) Dir den TypoScript-Code anschaust

.

sobi555 ·

Ist es nicht Sinn und Zweck von TYPO3 (und sonstigen CM-System), dass man von Extensions profitiert.

"Dare2share"

LG - Simon

heikehk ·

Hallo Emil,

das war nicht als Vorwurf gedacht. Ich bin nur grad völlig am hängen.
Wie kann ich mir den den Code einer Extension ansehen? Das wußte ich nicht, dass das geht. Und in der Extension, die grad zum Download verfügbar ist, ist auch mit einer solchen Abfrage?

Gruß
Heike

PS: Sind meine Fragen denn so dämlich, dass sie keine Antworten verdient haben? Die waren ja jetzt hoffentlich allgemein genug, dachte ich. #paralyzed#

etux ·
heikehk schrieb

Wie kann ich mir den den Code einer Extension ansehen?

Bei Erweiterungen im TER – auf die Überschrift klicken, alle Dateien werden aufgelistet (ganz unten). Entsprechende Datei betrachten oder downloaden.

Auf einem lokalen Server – Mit dem T3X-Viewer

In TYPO3 selbst – jede installierte oder zumindest hoch geladene Erweiterung ist in einem Ordner, der deren Name trägt. Für nicht System- und nicht global installierte Erweiterungen sucht man im Ordner „typo3conf/ext/“. TypoScript Dateien stehen meist im Unterordner „static“.

Ich habe Dir die TypoScript-Setups beiden Erweiterungen als ZIP-Datei per PN geschickt.
Ich habe leider keine Zeit die Zeilen, die Dich nicht interessieren, zu löschen. Ich hoffe dass Du Dich trotzdem zu Recht findest.
Denn die Teile mit den if-Abfragen sind etwas kompliziert. Zumindest bei der „Flex-Layout“-Ext, bei der „BrightSideOfLife“ – etwas einfacher.
Das kommt daher, dass ich bei der Aufbau der Layout-Spalten mehrere Elementen verschachteln muss. Benötigt wird das, für die von mir selbst entwickelte Methode (Technik) gleich hohe Spalten darzustellen.
Du wirst es sicher in dieser Form nicht brauchen, eher viel simpler.

heikehk schrieb

PS: Sind meine Fragen denn so dämlich, dass sie keine Antworten verdient haben? Die waren ja jetzt hoffentlich allgemein genug, dachte ich

Für mich vielleicht doch etwas zu allgemein. Da ich sie nicht mit „Ja“ oder „Nein“ beantworten kann (wenn überhaupt), kaum Zeit habe und nicht gut im Erklären bin.

heikehk ·

Lieber EMil,

vielen Dank für Deine Unterstützung.
Ich werde mich durch die Scripte durchfressen und kann ja dann vielleicht schon probieren oder gezieltere Fragen stellen.

Danke auch, dass Du Dir die Zeit genommen hast, mir direkt zu antworten und zu versuchen mir in meine Dilemma zu helfen.
Du bist der Held des heutigen Tages.

Mit ein bischen Daumendrück klappts ja eventuell beim meinem Template jetzt auch.

Ich werde berichten.

Gruß
Heike

etux ·
heikehk schrieb

Mit ein bischen Daumendrück klappts ja eventuell beim meinem Template jetzt auch.

Dir Daumen drücken, kann ich jeder Zeit und sehr gern. 😃

heikehk schrieb

… mir direkt zu antworten und zu versuchen mir in meine Dilemma zu helfen.

Eine gehörige Portion Glück muss ich dabei gehabt haben – wie gesagt, die Beiträge vor meinem Ersten habe ich kaum Wahr genommen. :o #giggle#

Viel Erfolg!

heikehk ·

Ähm,
und gleich ne Frage...

{$searchbox} und die anderen Werte mit $ voran in geschweiften Klammern - sind das Verweise auf eine Konstanten, die man eintragen muss für die Seite?

Gruß
Heike

etux ·
heikehk schrieb

... Werte mit $ voran in geschweiften Klammern ...

Ja, aber das braucht Dich nicht kümmern. Ich habe Dir ja nur die Setup-Dateien geschickt. Es gehören noch eine Menge Dateien zu den Extentions. Da wird alles schon geregelt.
Außer der Code-Teil, wo die Spalten aufgebaut werden (mit den if-Abfragen), solltest Du den Rest erst mal in "Ruhe lassen" 😃

.

heikehk ·

OK,

Ich habe mir das mal durchgesehen, wobei ich die ifs wohl noch mal berbeiten muss und sie einrücke, damit ich noch klarer sehe, wie das zusammengehört.

Du hattest recht, das Flex-Layout hat genau ein solches if, wie ich es brauche.

Kann ich denn auch solche lib.xxx anlegen oder ist das was für eine Extension?
Die Idee finde ich klasse, denn ich könnte dann auch die Definition der Template Datei dort ablegen bzw. wie ich die Sachen ersetze, oder?

Wenn ich das richtig verstanden habe kann ich die CSS Dateien und Header-Daten mit page.meta & page.headerData schon einbinden ohne, dass ich page=PAGE definiert habe?

Dann die Bereiche vorbereiten und dann erst alles zusammenfügen - ja?

Die Details kann ich mir erst später durchlesen, aber wäre lieb, wenn Du nochmal online gehst, wenn Du mirsagen könntest, ob ich ähnlich wie Du diese lib.xx anlegen kann.

Alles Liebe

Heike

etux ·

Morgen Heike,

Du hast viele Fragen und wirst wohl auch weiter welche haben. Nichts für Ungut, aber ich denke, Du solltest Dir ein TYPO3-Buch zulegen.

Zugegeben ist mein Script viel komplizierter (und mittlerweile sehr alt), als das was Du bräuchtest. Denn es geht von vier Inhaltsspalten im Backend, stell aber maximal drei Spalten im Frontend und zwar in verschiedenen Reihenfolge – ja nach dem welche Inhaltsspalten in BE Inhalt haben.

Ich weiß nicht, was Du genau erreichen willst, aber ein einfaches Beispiel:
Layout mit maximal drei Spalten (sowohl im BE als auch im FE), wobei die Hauptinhaltsspalte immer Inhalt hat (wenn nicht zumindest die „Normal“-Spalte Inhalt hat, sollte auch keine Seite erstellt, bzw. publiziert werden).

Aber Vorsicht – da auf die Schnelle erstellt, sind Schreib- und sonstige Fehler nicht aus zu schließen. Und natürlich kann man es viel kompakter schreiben.

# Normal
temp.content = CONTENT
temp.content {
	table = tt_content
	select.orderBy = sorting
	select.where = colPos = 0
	select.languageField = sys_language_uid
	stdWrap.wrap = <div id="hauptspalte"><!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end--></div>
	# stdWrap.required = 1
}
# Links
temp.left = CONTENT
temp.left  {
	table = tt_content
	select.orderBy = sorting
	select.where = colPos = 1
	select.languageField = sys_language_uid
	stdWrap.wrap = <div id="linke-spalte">|</div>
}
# Rechts
temp.right = CONTENT
temp.right  {
	table = tt_content
	select.orderBy = sorting
	select.where = colPos = 2
	select.languageField = sys_language_uid
	stdWrap.wrap = <div id="rechte-spalte">|</div>
}
############################
page.999 = COA
page.999 {
	# wrap = <div id="page">|</div>
	10 = COA
	10 {	### Nur die Hauptspalte ###
		wrap = <div id="content-wrap" class="normal">|</div>
		if {
			isFalse.numRows < styles.content.getLeft
			isTrue = 1
			isTrue.if {
				isFalse.numRows < styles.content.getRight
			}
		}
		10 < temp.content
	}
	20 = COA
	20 {	### Zwei Spalten - Links und Normal ###
		wrap = <div id="content-wrap" class="links-normal">|</div>
		if {
			isFalse.numRows < styles.content.getRight
			isTrue = 1
			isTrue.if {
				isTrue.numRows < styles.content.getLeft
			}
		}
		10 < temp.left
		20 < temp.content
	}
	30 = COA
	30 {	### Zwei Spalten - Normal und Rechts ###
		wrap = <div id="content-wrap" class="normal-rechts">|</div>
		if {
			isTrue.numRows < styles.content.getRight
			isTrue = 1
			isTrue.if {
				isFalse.numRows < styles.content.getLeft
			}
		}
		10 < temp.content
		20 < temp.right
	}
	40 = COA
	40 {	### Alle drei Spalten ###
		wrap = <div id="content-wrap" class="links-normal-rechts">|</div>
		if {
			isTrue.numRows < styles.content.getRight
			isTrue = 1
			isTrue.if {
				isTrue.numRows < styles.content.getLeft
			}
		}
		10 < temp.left
		20 < temp.content
		30 < temp.right
	}
}

Der Rest ist CSS. Du hast für jede Situation eine andere Klasse. Kannst also alle Elementen in Abhängigkeit dieser Klassen Formatieren, wie Du möchtest.

EDIT:
Ich weiß nicht warum Zeilen wie diese hier
isTrue.numRows < styles.content.getLeft
im Editor hier so geändert werden:
isFalse.numRows/">numRows < styles.content.getLeft

.

heikehk ·

Lieber Emil,

vielen lieben Dank für die Mühe, die Du Dir gibst und Deine freundliche Hilfe.
Zu Deiner Beruhigung / vielleicht aber auch Beunruhigung 😉 Ich habe hier sogar 4 Typo3 Bücher bei mir liegen, die ich in den letzten Tagen oft verzweifelt durchforstet habe.
Mit Hilfe dieser Bücher bin ich ja letztendlich auch weiter gekommen, als ich es ursprünglich dachte.

Unter Umständen ist es auch nicht wirklich hilfreich, dass ich schon in anderen Sprache programmiert habe, so dass ich mit der Syntax von Typoscript noch nicht wirklich warm geworden bin.

Ich hoffe, dass ich mit Hilfe Deiner Tipps und Beispiele den Knoten zum platzen bringen kann. Dass ich viele Fragen habe liegt wahrscheinlich daran, dass ich den sinnvollen Aufbau eines Templates offensichtlich noch nicht begriffen habe. Sobald ich mich durch diese Sache durchgebissen habe, werde ich hoffentlich ein etwas besseres Verständnis haben.

Darf ich Dich fragen welches Buch aus Deiner Sicht das Beste ist, welches ich zu Hand nehmen sollte? Vielleicht habe ich ja die falschen Bücher hier liegen...

Aber nur eine Frage sei noch erlaubt, damit ich weiß, dass ich auf dem richtigen Weg bin, nicht, dass ich mich schon wieder verlaufen habe...

Wenn ich Dein Script richtig verstanden habe, dann landet der komplette Inhalt der Seite, mit if-Abfragen ordentlich formatiert in dem Objekt page.999 und ich ersetze den Marker dann mit diesem Objekt?

Alles Liebe
Heike