---
title: "Template ja nach Inhalt verwenden"
url: "https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden"
source: "typo3.net"
tags: ["Allgemein","Frage","Templates & Layouts"]
created: "2011-02-01"
last_reply: "2011-02-16"
replies: 30
solved: false
page: 1
pages: 1
lang: "de"
---

# Template ja nach Inhalt verwenden

Allgemein · 30 Antworten · gestartet 2011-02-01

## Eröffnungsbeitrag

**heikehk** · 2011-02-01 · [Beitrag #1](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/1)

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:

```typoscript
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

## Antworten

### [#2](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/2) · heikehk · 2011-02-01

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.

```typoscript
	// 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

### [#3](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/3) · sobi555 · 2011-02-02

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

LG - Simon

### [#4](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/4) · heikehk · 2011-02-02

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?

```typoscript
// 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

### [#5](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/5) · sobi555 · 2011-02-02

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
<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

### [#6](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/6) · heikehk · 2011-02-02

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

### [#7](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/7) · etux · 2011-02-02

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

.
.

### [#8](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/8) · heikehk · 2011-02-02

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

### [#9](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/9) · etux · 2011-02-02

> **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

.

### [#10](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/10) · sobi555 · 2011-02-02

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

"Dare2share"

LG - Simon

### [#11](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/11) · heikehk · 2011-02-02

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#

### [#12](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/12) · etux · 2011-02-02

> **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.

### [#13](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/13) · heikehk · 2011-02-02

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

### [#14](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/14) · etux · 2011-02-02

> **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. :D

> **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!

### [#15](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/15) · heikehk · 2011-02-02

ich danke Dir.
Hoffen wir, dass es klappt.:)

### [#16](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/16) · heikehk · 2011-02-02

Ä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

### [#17](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/17) · etux · 2011-02-02

> **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" :D

.

### [#18](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/18) · heikehk · 2011-02-02

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

### [#19](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/19) · etux · 2011-02-03

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.

```typoscript
# 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

.

### [#20](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/20) · heikehk · 2011-02-03

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

### [#21](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/21) · etux · 2011-02-03

> **heikehk schrieb:**
>
> 4 Typo3 Bücher bei mir liegen, die ich ... oft verzweifelt durchforstet habe.

Du solltest sie besser systematisch lesen, bzw. studieren. :D

> **heikehk schrieb:**
>
> den sinnvollen Aufbau eines Templates offensichtlich noch nicht begriffen habe

Sind denn in den Büchern keine Beispiele oder Case-Studys?

> **heikehk schrieb:**
>
> welches Buch aus Deiner Sicht das Beste ist, welches ich zu Hand nehmen sollte?

Das kann ich Dir nicht sagen. Ich habe nur die 2004-Ausgabe des TYPO3 ECM von Altmann, Fritz und Hinderink.
Ich kann mir aber nicht vorstellen, dass eins Deiner Bücher nicht lesenswert wäre. Also nicht wie ran. :D
Die TYPO3 Reference gibt es auch online, sollten Deine Bücher sie nicht hergeben. Und auch sonstige Dokus findet man im Netz, so wie diese hier:
<http://www.mittwald.de/typo3-dokumentation/>

Auch viele Forum-User hier haben auf ihren Sites Tipps und Anleitungen zu vielen Themen.

Trotzdem solltest Du mit den Bücher anfangen. Da ist sicher alles schön strukturiert und übersichtlich.

> **heikehk schrieb:**
>
> 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?**

Nenne es meinetwegen in **lib.alle-inhaltsspalten** um (statt **page.999**) und

**…........DEIN_MARKER <  lib.alle-inhaltsspalten**

Warum? Steht sicher in Deinen Büchern. :D

### [#22](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/22) · heikehk · 2011-02-03

:D

Du hast Recht,

natürlich steht in den Büchern viel Information und auch Strukturiert. Mein Ansatz war vielleicht falsch, dass ich gedacht hatte, mit vorheriger Programmiererfahrung einfach die Bücher screenen zu können und dann nur dort wirklich zu lesen, wo ich eine Lösung zu einer Fragestellung gefunden habe.

Da fehlen dann natürlich die eine oder andere Grundinformation, die mir zum Verständnis hätte helfen können, weil die woanders versteckt ist :o

Aber ich bin froh, dass ich zumindest Deinen Code dann richtig verstanden habe. Das gibt einem doch gleich das Gefühl nicht ganz so dumm zu sein und wenigstens in den Kämpfen mit Typoscript nicht völlig verloren zu haben #paralyzed#

Das Problem bei Schnipseln ist, dass sie zwar einen Teilbereich zeigen, dass aber, wenn man die Grundstruktur nicht zu 100% verstanden hat, in alle Fehlertöpfe tritt, die auf dem Weg zu finden sind. Wobei ich der Meinung bin, dass man ja aus Fehlern am besten lernt. Nur ist hier Typoscript ja relativ schweigsam. :'(:(:x

Wie auch immer, ich nehme mir alles zu Herzen und bin mir sicher, dass mir Deine Hilfe hier wirklich weitergeholfen hat. :D

Altmann Fritz und Hinderlink sind mir leider noch nicht über den Weg gelaufen... Aber vielleicht wäre das noch eine Idee ;)

Einen schönen Tag Dir noch,
hoffentlich schaut heute mal die Sonne vorbei ;)

Heike

PS: Ach ja und falls Du jemals ein Problem mit Photoshop, InDesign oder ähnlichem hast, dann meld Dich bei mir. Ich würde mich gerne revanchieren...

### [#23](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/23) · heikehk · 2011-02-08

Also ich habe jetzt viel gelesen und auch noch einiges verändert.
Mittlerweile habe ich die Infos zu den Templates in Konstanten eingepflegt und dachte, ich wäre an der Lösung dran.

Ich denke ich muss nur noch dieses CASE-Konstrukt zum laufen bringen und statt Text dann die jeweiligen Konstanten ansprechen. die dann die Infos zu den Vorlagen-Dateien enthalten, dann wäre ich mit meinen Ideen fertig.

Das Konstrukt von key.cObject {...} funktioniert alleine einwandfrei. Nach meinem Verständnis sollte in dem Objekt, ja nach Inhalt:

LinksMitteRechts
LinksMitte
...

stehen (da waren vorher nur Buchstaben aber LR scheint irgendwie belegt zu sein).

```typoscript
page.temp.40 = COA
page.temp.40 {
  10 = CASE
  10 {
    key.cObject = COA
    key.cObject {
      10 = COA
      10 = TEXT
      10 {
        value = Links
        if.isTrue.numRows < styles.content.getLeft
      }
      20 = COA
      20 = TEXT
      20 {
        value = Mitte
        if.isTrue.numRows < styles.content.get
      }
      30 = COA
      30 = TEXT
      30 {
        value = Rechts
        if.isTrue.numRows < styles.content.getRight
      }
    }  
    default = TEXT
    default = Standardeinstellung

    LinksMitteRechts.10 = TEXT
    LinksMitteRechts.10 = 25_50_25
    LinksMitte.10 = TEXT
    LinksMitte.10 = 33_66
    MitteRechts.10 = TEXT
    MitteRechts.10 = 66_33
    LinksRechts.10 = TEXT
    LinksRechts.10 = 50_50
    Mitte.10 = TEXT
    Mitte.10 = 100

  }
  }
```

Wie auch immer, ich habe zwei Probleme:

**1. Wie spreche ich das Ergebnis des CASE an?**
Ist das page.temp.40.10.value?
nur page.temp.40?

Mir scheint im Object-Browser, dass ich nie auch wirklich das Ergebnis bekomme, das ich haben möchte. Übergebe ich den Inhalt z.b. in page.temp.50 mit <, dann steht im Object-Browaser bei Value TEXT und ohne Value CASE...#angry##angry#

**2. Ich hab das Gefühl, dass der komplette CASE nicht funzt**

Ist da oben ein gravierender Fehler?

Mit if bekomme ich das ums verrecken nicht hin#evil#, aber irgendwie denke ich, dass das doch gehen muss...

Bitte dringend nochmal um Hilfe :o

Danke

Heike

### [#24](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/24) · etux · 2011-02-09

Morgen Heike,

ehrlich gesagt, ich weiß immer noch nicht, wie Du Dein Vorhaben zu umsetzen anstrebst.
Sollten die Redakteure keine weitere Umstellungen machen, um ein Frontend-Layout zu wählen ist die Variante mit den if-Abfragen schon o.k. Je nach dem welche Spalten Inhalt haben (Backend), erscheint das entsprechende Spalten-Layout im Frontend. Voll automatisch also.

Sonst könntest Du die Layouts über „Frontend-Layout“ wählen lassen (z.B. bei der root-Seite auf „Seiteneigenschaften bearbeiten“ gehen und dann den Reiter „Erscheinungsbild“ wählen).

Die Layoutsnamen kannst Du auch ändern. Nochmal auf der root-Seite „Seiteneigenschaften bearbeiten“ und dann Reiter Ressourcen. In den Feld „Seiten-TSconfig“ kommt beispielsweise:

TCEFORM.pages {
  layout.altLabels.3 = Links, Normal und Rechts
  layout.altLabels.2 = Normal und Rechts
  layout.altLabels.1 = Links und Normal
  layout.altLabels.0 = nur Normal
}

und in Deinem root-Seite Template, was ich Dir schon gepostet habe, nur etwas umgebaut:

```typoscript
# 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>


page.999.10 = COA
page.999.10 {	### Nur die Hauptspalte ###
	wrap = <div id="content-wrap" class="links-rechts">|</div>
	10 < temp.left
	20 < temp.right
}

[globalVar=TSFE:page|layout=1]
page.999.10 = COA
page.999.10 {	### Zwei Spalten - Links und Normal ###
	wrap = <div id="content-wrap" class="links-normal">|</div>
	10 < temp.left
	20 < temp.content
}
[global]

[globalVar=TSFE:page|layout=2]
page.999.10 = COA
page.999.10 {	### Zwei Spalten - Normal und Rechts ###
	wrap = <div id="content-wrap" class="normal-rechts">|</div>
	10 < temp.content
	20 < temp.right
}
[global]

[globalVar=TSFE:page|layout=3]
page.999.10 = COA
page.999.10 {	### Alle drei Spalten ###
	wrap = <div id="content-wrap" class="links-normal-rechts">|</div>
	10 < temp.left
	20 < temp.content
	30 < temp.right
}
[global]
```

Vorsicht. Es ist nur ein auf die Schnelle erstelltes Beispiel und entspricht nicht ganz Deine Anforderungen.

Wenn Du bei den if-Abfragen bleiben willst, dürfte das hier grob dem entsprechen, was Du erreichen willst. Auch wenn ich mir ziemlich sicher bin, dass es funktioniert, perfekt ist es nicht. Es geht auch viel kompakter und einfacher.

```html
# 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 {
			isTrue.numRows < styles.content.get
			isTrue = 1
			isTrue.if {
				isFalse.numRows < styles.content.getRight
				isTrue = 1
				isTrue.if {
					isFalse.numRows < styles.content.getLeft
				}
			}
		}
		10 < temp.content
	}
	20 = COA
	20 {	### Zwei Spalten - Links und Rechts ###
		wrap = <div id="content-wrap" class="links-rechts">|</div>
		if {
			isFalse.numRows < styles.content.get
			isTrue = 1
			isTrue.if {
				isTrue.numRows < styles.content.getRight
				isTrue = 1
				isTrue.if {
					isTrue.numRows < styles.content.getLeft
				}
			}
		}
		10 < temp.left
		20 < temp.right
	}
	30 = COA
	30 {	### 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.get
				isTrue = 1
				isTrue.if {
					isTrue.numRows < styles.content.getLeft
				}
			}
		}
		10 < temp.left
		20 < temp.content
	}
	40 = COA
	40 {	### Zwei Spalten - Normal und Rechts ###
		wrap = <div id="content-wrap" class="normal-rechts">|</div>
		if {
			isTrue.numRows < styles.content.getRight
			isTrue = 1
			isTrue.if {
				isTrue.numRows < styles.content.get
				isTrue = 1
				isTrue.if {
					isFalse.numRows < styles.content.getLeft
				}
			}
		}
		10 < temp.content
		20 < temp.right
	}
	50 = COA
	50 {	### 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.get
				isTrue = 1
				isTrue.if {
					isTrue.numRows < styles.content.getLeft
				}
			}
		}
		10 < temp.left
		20 < temp.content
		30 < temp.right
	}
}
```

page.999 wird wohl bei Dir nicht stimmen. Was Du statt „999“ schreibst, hängt davon ab, wo Du in Deinem Template die Spalten rein haben möchtest

.

### [#25](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/25) · heikehk · 2011-02-09

Lieber Emil,

danke für Deine ausführliche Antwort.
Was mich momentan, abgesehen davon, dass Du REcht hast mir den Vorauswahlen des Layouts, interessieren würde ist, warum ich die Abfrage nicht hinbekomme.

Ich habe jetzt dieses Objekt page.temp.30 folgendermaßen angelegt:

```typoscript
page.temp.30 = COA
page.temp.30 {
      10 = COA
      10 = TEXT
      10 {
        value = 1
        if.isTrue.numRows < styles.content.getLeft
      }
      20 = COA
      20 = TEXT
      20 {
        value = 2
        if.isTrue.numRows < styles.content.get
      }
      30 = COA
      30 = TEXT
      30 {
        value = 3
        if.isTrue.numRows < styles.content.getRight
      }

}
```

Wenn ich meinen Marker z.B. INHALT_M so ersetze:

```typoscript
       page.20.marks.INHALT_M = TEXT
       page.20.marks.INHALT_M < page.temp.30
```

Dann wird, je nachdem, in welcher Spalte Text eingegeben wurde 1, oder 12, ... bis 123 oder eben nichts ausgegeben.

Das heißt für mich, dass das prinzipiell so klappt.

Jetzt würde ich gern den Inhalt dieses Objektes auswerten. Und hier gehts mir grad nicht drum, dass ich das unbedingt letztendlich so lösen möchte, sondern darum zu verstehen, warum das nicht funktioniert.

Ich habe die Werte extra in Zahlen umgewandelt, weil ich in einem meiner Bücher jetzt nach meiner Anfrage gelesen habe, das Buchstaben nicht so geschickt sind.

Ich habe jetzt mal nur testweise folgendes Objekt gebaut:

```typoscript
page.temp.40 = COA
page.temp.40 {
      10 = COA
      10 = TEXT
      10 {
        value = 25_50_25 Aufteilung
        if.isTrue.data = page.temp.30 = 123 
      }
      20 = COA
      20 = TEXT
      20 {
        value = sonstiges
        if.isFalse.data = page.temp.30 = 123 
      }

  }
```

Nach meinem Verständnis sollte jetzt doch, wenn der Wert von page.temp.30 (immernoch wie oben aufgebaut) 123 ist, page.temp.40 den Inhalt "25_50_25 Aufteilung" haben und in allen anderen Fällen "sonstiges".

Gebe ich jetzt page.temp.40 so aus:

```typoscript
       page.20.marks.INHALT_M = TEXT
       page.20.marks.INHALT_M < page.temp.40
```

dann steht auf der Seite, die klar 3 Spalten ausgefüllt hat (also bei der vorherigen Ausgabe von page.temp.30 123 gezeigt hat) trotzdem "sonstiges".

Was mache ich denn bei der Abfrage falsch?

Ich dachte eigentlich, dass ich mit diesem if.isTrue.data die möglichen Werte abfrage und dann noch am Schluss einen Standardwert setze, wenn if.isEmpty.data ist (also wenn gar keine Inhalte eingetragen sind).

Nach meinem Verständnis sollte das doch gehen.
Kannst Du mir sagen, wie ich den Inhalt von page.temp.30 richtig anspreche, so dass die Abfrage auch funktionieren kann?

Der Versuch mit CASE ist aus meiner Sicht aus dem gleichen Grund gescheitert, aber ich finde kein Beispiel, in dem das so beschrieben ist, dass ich meinen Fehler erkennen kann.

Alles Liebe
Heike

### [#26](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/26) · etux · 2011-02-09

Hallo Heike,

ich muss mich leider kurz fassen.
Ich blicke auf die Schnelle nicht durch, was Du da alles veranstaltest.

Warum testest Du mein Script nicht im Original. Du brauchst nur

page.999 = COA
page.999 {
….................
}

mit

page.20.marks.INHALT_M = COA
page.20.marks.INHALT_M {
…................
}
ersetzen.

Vorausgesetzt  INHALT_M ist die Stelle in Deiner html-Vorlage, wo alle Layout-Spalten hin kommen.

Wenn es funktioniert, brauchst Du nur die Wraps anzupassen - Klassen un ID entsprechend Deiner CSS-Formatierung.

Nimm dann Deine Bücher und teste schrittweise, was Deine Änderungen bewirken. Usw....

P.S.: Ein zweiter Wrap um alle Spalten ist in meinem Script auskommentiert. Für die Spalten-CSS-Formatierung brauchst es eh nicht. Gedacht ist es, wenn da weitere Elemente rein kommen sollten – header, footer usw. Dann solltest Du aber Dein COA erweitern.

Übrigens CSS: Dir ist klar, wie Du anhand der unterschiedlichen Klassen bei dem DIV, das alle Spalten umschließt, die Spalten für die verschiedene Fälle formatierst?

.

### [#27](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/27) · heikehk · 2011-02-09

Lieber Emil,

ja, das ist mir klar.
Ich habe nur das Problem, dass ich meine Templates ja nach Inhaltselementen auswählen wollte.
Das heißt, dass die MARKS erst dann gefüllt werden, wenn in Abhängigkeit des Inhalts die richtige Template-Datei verwendet wurde.

Da ja nach Variante die Klassen der DIVs für die Inhaltsspalten völlig anders sind und das im Kontext zu den anderen Spalten, kann ich das nicht so einfach austauschen.

Meine Idee war deshalb, dass ich für jede Variante eine Template-Datei habe, die sich jeweils nur im Bereich des "Inhalts" und dessen Formatierung unterscheidet. Beim Ersetzen der Marker wollte ich dann einfach INHLAT_L INHALT_M und INHALT_R mit den entsprechenden Inhalten bestücken. Ist in der Vorlage kein Inhalt für Rechts vorhanden stört diese zusätzliche Zeile ja nicht.

Da ich ja offensichtlich nicht in der Lage bin, diese Konfigurationen aus meinem temporären Objekte (page.temp.30) auszuwerten, kann ich das Ganze auch nicht mit wraps etc. lösen, denn auch dafür müsste ich ja wissen, welche Kombination ich habe.

Das mit den vorher ausgewählten Layouts finde ich gut, was ich aber nun losgelöst von meinem ursprünglichen Vorhaben wissen möchte ist:

**Wie muss ein if aussehen oder ein CASE, mit dem ich je nach Inhalt von page.temp.30 etwas anderes mache?**

Ich kann mir einfach nicht vorstellen, dass das nicht gehen soll, aber ich weiß nicht, was falsch ist. Immerhin scheint in dem Objekt ja alles drin zu stehen, was ich will. Warum kann ich es dann nicht vernünftig abfragen?

Wenn Du Zeit dafür hättest, oder jemand anderer, sich das if (letzter Eintrag) anzusehen und ihr mir sagen könntet, wie ich das lösen kann, dann nerve ich auch nicht weiter, versprochen. Wirklich völlig abgelöst von dem ursprünglichen Problem.

Ich will nur wissen, wie kann ich abhängig vom Inhalt von page.temp.30 eine andere Variable mit einem Inhalt bestücken?

Alles Liebe
Heike

### [#28](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/28) · etux · 2011-02-10

Morgen Heike,

ich befürchte, ich kann Dir nicht weiter helfen. Du sagst, dass es teilweise was ausgegeben wird, aus meiner Sicht ist keine einzige Code-Zeile richtig.
Du „überschreibst“ Dich auch selbst. So wird aus „10 = COA“ gleich danach ein „10 = TEXT“. Oder aus „page.20.marks.INHALT_M = TEXT“ ein „page.20.marks.INHALT_M = COA“.
Ich habe leider die Zeit nicht, in Deinem Vorhaben richtig einzusteigen. Mit der if-Funktion wird im Grunde entschieden, ob ein Objekt gerendert wird oder ein Wert zurück geliefert wird – in Abhängigkeit davon ob die Bedingung erfühlt wird oder nicht. Und das wiederum hängt von den  (zusätzlichen) Eigenschaften ab.
Zu den Rest kann ich nur sagen, so wirklich verstehen, wie Du das ganze regeln willst, tue ich nicht. Aus meiner Sicht unnötig viel zu kompliziert. Inklusive die Klassen für die Spalten.
Vielleicht verstehe ich Dich aber einfach falsch. Wie ich schon sagte, ich habe leider die Zeit nicht, richtig einzusteigen – habe selbst viel um die Ohren

.

### [#29](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/29) · heikehk · 2011-02-10

Lieber Emil,

danke für den Versuch.
Ich bin gestern noch einmal weiter gekommen.
Du hast REcht, irgendwie dachte ich, dass ich ein Objekt, welches ich später noch mal verwenden will als COA definieren muss und dann als das, was es als Inhalt bekommt.
Die Ganze Lösung wird letztendlich nicht die die ich endgültig haben möchte.

Sollte ich das Ganze trotzdem zum Laufen bringen, dass schreibe ich auf jeden Fall rein wie. Ich hoffe, dass ich dann auch begriffen habe warum. Denn letztendlich gehts mittlerweile für mich nur noch darum.

Alles Liebe
Und Dir einen schönen Tag

Heike

### [#30](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/30) · heikehk · 2011-02-16

Lieber Emil,

ich habe zwar die If Abfrage und auch meine CASE Variante nicht zum Laufen bekommen, aber irgendwann muss man sich von Ideen lösen.

Ich habe mittlerweile viel darüber gelesen, dass viele, die schon Programmieren können durchaus ihre Probleme mit dem If und Abfragen in Typoscript haben.

Auf der Suche, was ich machen soll habe ich folgendes Tutorial gefunden:
<http://blog.undkonsorten.com/typo3-4-5-tutorial-backend-layout-nutzen>

Mit schwitzenden Pfötchen mein Typo3 4.4.6 auf 4.5 gebracht und die Anweisungen befolgt.
Es klappt. Da es sich um ein echtes Feld handelt kann ich meine Abfrage über eine Condition machen, das jeweilige Template zuweisen und alles ist gut.

Danke Dir trotz allem für Deine Unterstützung. Ich habe in der Zeit einiges mehr gelernt als ohne Dich.

Irgendwann kapier ich den Rest auch.

Alles Liebe

Heike

### [#31](https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden/31) · etux · 2011-02-16

> **heikehk schrieb:**
>
> Auf der Suche, was ich machen soll habe ich folgendes Tutorial gefunden:
> <http://blog.undkonsorten.com/typo3-4-5-tutorial-backend-layout-nutzen>

So einen ähnlichen Lösungsweg hatte ich aber schon grob angerissen. Siehe den ersten Teil im **Beitrag vom 09.02.2011 [08:29]**

---

Quelle: „Template ja nach Inhalt verwenden“, typo3.net, https://www.typo3.net/d/103601-template-ja-nach-inhalt-verwenden
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
