Zum Inhalt springen

Tabellenhintergrundbild dynamisch austauschen

Erstellt am 2. November 2004 · 12 Antworten · letzte Antwort am 3. November 2004

Tags: Frage

matbehns ·

Hallo,

habe jetzt etliches versucht und auch gesucht, aber bisher erfolglos.

Ich bastel grad an meiner Seite, in der es 3 Hauptseiten gibt.

Start Privat Studium

Jede diese Seiten soll ein eigenes Headerbild bekommen, welches in einer Tabelle (<td>###BILD###</td>) niedergelegt werden soll. Das Headerbild soll dann auch für die Unterseiten der enstprechenden Hauptseite gelten.

Ich weiß, dass kann nicht so schwer sein, aber ich kapiere es einfach nicht. Bitte helft mir mit ein paar Codeschnipseln.

Bisher habe ich das im Template so geschrieben.

#### Bild für jeweilige Rubrik
marks.BILD = IMAGE
marks.BILD {
file = fileadmin/images/bild_start.png
}

Funktioniert auch, aber dann natürlich nur für alle Seiten. Soweit ich weiß muss man das auch irgendwie über extension.templates machen?!

Nur wie?

Danke und Gruß, Mat

barthel ·

Versuche es mit Conditions:
Du definierst wie oben dargestelle ein Default Bild, welches du abhängig von der 'Hauptseite' mit einer Condition überschreibst.
Pseudocode:

page.marks.BILD = IMAGE
page.marks.BILD.file = fileadmin/images/bild_start.png

# 34 -> PID von Studium
[PIDinRootline = 34]
page.marks.BILD.file >
page.marks.BILD.file = fileadmin/images/bild_studium.png
# 36 -> PID von Wasauchimmer
[PIDinRootline = 34]
page.marks.BILD.file >
page.marks.BILD.file = fileadmin/images/bild_wasauchimmer.png

[global]

https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html#condition-tree-rootlineids

matbehns ·

Hallo, also ich danke dir erst einmal. Habe das mal gemacht wie von dir beschrieben, aber irgendwie löst es das Problem noch nicht ganz.

Letztendlich wird der Marker auf den Wert gesetzt, der als letztes im Template erscheint und zwar für alle Seiten. D.h. er geht auch nicht zurück, wenn ich wieder auf Start gehe.

Nun habe ich sicherlich irgendwo einen Fehler gemacht. Zur Veranschaulichung schicke ich mal mein ganzen Setup.
Ich habe insgesamt nur ein Template, keine weiteren und keine extension_templates.

Mein Template ist auf der Startseite und zeigt folgendes. Ich hoffe das hilft!

MfG

Mat

#### Default
seite = PAGE
seite.typeNum = 0
seite.bodyTag = <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" marginleft="0">
seite.stylesheet = fileadmin/style.css


seite.10 = TEMPLATE
seite.10 {
   template = FILE
   template.file = fileadmin/template_de.html
   workOnSubpart = DOKUMENT

#### den Inhalt einfügen
marks.INHALT < styles.content.get

marks.INHALT = CONTENT
marks.INHALT {
   table = tt_content
   select.orderBy = sorting
   select.where = colPos=0 
}


#### Bild für jeweilige Rubrik - Start
marks.BILD = IMAGE
marks.BILD.file = fileadmin/images/bild_start.png
#### anderes Bild für Rubrik Privat
# 25 -> PID von Privat 
[PIDinRootline = 25]
marks.BILD.file >
marks.BILD.file = fileadmin/images/bild_privat.png
#### anderes Bild für Rubrik Studium
# 28 -> PID von Studium
[PIDinRootline = 28]
marks.BILD.file >
marks.BILD.file = fileadmin/images/bild_studium.png

#[global]



#### Menues
marks.MENU_1 = HMENU
marks.MENU_1.1 = TMENU
marks.MENU_1.1.NO {
   allWRAP =  | 
}
#### Rootline
marks.ROOTLINE = HMENU
marks.ROOTLINE.special = rootline
marks.ROOTLINE.special.range = 1|-2
marks.ROOTLINE.special.targets.3 = page
marks.ROOTLINE.1 = TMENU
marks.ROOTLINE.1.target = _top
marks.ROOTLINE.1.wrap =  | 
marks.ROOTLINE.1.NO {
linkWrap = | >
} 


#### Seitentitel als Überschrift einblenden
marks.TITLE = TEXT
marks.TITLE.value = {page:title}
marks.TITLE.insertData = 1

}
barthel ·
matbehns schrieb

Letztendlich wird der Marker auf den Wert gesetzt, der als letztes im Template erscheint und zwar für alle Seiten. D.h. er geht auch nicht zurück, wenn ich wieder auf Start gehe.

Das heißt, es wird immer bild_studium.png angezeigt ?
Nimm mal bitte das Kommentzeichen vor dem '[global]' raus und probiere nochmal.
Außerdem könnte es helfen, wenn du für das Start Bild noch folgendes mit einfügst:

marks.BILD >
marks.BILD = IMAGE
marks.BILD.file = ...

Damit werden alle vorhandenen 'marks.BILD' 'Ojekte' gelöscht und ein neues angelegt.
Ich habe gerade keine Beschreibung der Conditions zur Hand... deshalb Vermutung:
Schließe mal bitte jede Condition mit einem [global] ab.
Also wie folgt:

[PIDinRootline = 25]
marks.BILD.file >
marks.BILD.file = fileadmin/images/bild_privat.png
[global]

[PIDinRootline = 28]
marks.BILD.file >
marks.BILD.file = fileadmin/images/bild_studium.png
[global]
jenses ·

Die Conditions funktionieren nicht innerhalb geschweifter Klammern.
Ansonsten so machen, wie von barthel beschrieben.

viele Grüße
jenses

matbehns ·

Hmm, also wenn ich die # vor dem Global wegnehme, dann erscheinen wieder alle ###MARKER### und die dynamischen Inhalte verschwinden.

Habe das Problem jetzt anders gelöst. Für die jeweiligen Rubriken habe ich jeweils ein extension.template angelegt und die Setup Vererbung deaktiviert.

Nun habe ich es so, wie geplant.

Keine "saubere" Lösung, aber sie funktioniert! 😃

Ich danke dir jedenfalls noch einmal für deine Mühen!

Mat

mstuebner ·
matbehns schrieb

Hmm, also wenn ich die # vor dem Global wegnehme, dann erscheinen wieder alle ###MARKER### und die dynamischen Inhalte verschwinden.

Dann eben einfach tun, was jenses schreibt. Deine Conditions befinden sich innerhalb der geöffneten Klammer von

seite.10 {

und das geht nicht. Vor der ersten Condition MÜSSEN alle Klammern geschlossen sein.

Natürlich funtioniert das auch mit Ext.-Templates. Nachteil ist, dass wenn Du das Template auf eine neue Site übertragen willst, Du auch jedes Ext.-Temp. kopieren musst, im anderen Fall lediglich die PIDs anpassen musst, was man auch per Constant machen kann.

Geht aber beides.

barthel ·
jenses schrieb

Die Conditions funktionieren nicht innerhalb geschweifter Klammern.

Das ist mir doch glatt durch die Lappen gegangen :o
Ist schon ein 'Kreuz' mit der Einrückung 😉

matbehns ·

@ jenses

hatte dein erstes Posting nicht gesehen, da ich recht lange im Schreibemodus war und keinen Refresh gemacht habe.

@ alle

Habe jetzt etliche Kombinationen durchgeprüft, aber nun bleibt es immer bei dem ersten Bild (Start). Habe euer geschriebenes auch ein paar Mal gelesen, aber glaube nichts übersehen zu haben.

Tut mir echt leid, aber ich habe es noch nicht hinbekommen. Ich schicke euch noch mal mein gesamtes Setup, vielleicht seht ihr es ja gleich.

#### Statische URL
config.simulateStaticDocuments = PATH_INFO


#### Default
seite = PAGE
seite.typeNum = 0
seite.bodyTag = <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" marginleft="0">
seite.stylesheet = fileadmin/style.css


#### Hauptanweisung
seite.10 = TEMPLATE
seite.10 {
   template = FILE
   template.file = fileadmin/template_de.html
   workOnSubpart = DOKUMENT


#### den Inhalt einfügen
marks.INHALT < styles.content.get
marks.INHALT = CONTENT
marks.INHALT {
   table = tt_content
   select.orderBy = sorting
   select.where = colPos=0 
}


#### Menues
marks.MENU_1 = HMENU
marks.MENU_1.1 = TMENU
marks.MENU_1.1.NO {
   allWRAP =  | 
}


#### Rootline
marks.ROOTLINE = HMENU
marks.ROOTLINE.special = rootline
marks.ROOTLINE.special.range = 1|-2
marks.ROOTLINE.special.targets.3 = page
marks.ROOTLINE.1 = TMENU
marks.ROOTLINE.1.target = _top
marks.ROOTLINE.1.wrap =  | 
marks.ROOTLINE.1.NO {
linkWrap = | >
} 


#### Seitentitel als Überschrift einblenden
marks.TITLE = TEXT
marks.TITLE.value = {page:title}
marks.TITLE.insertData = 1


#### Bild für jeweilige Rubrik - Start
marks.BILD >
marks.BILD = IMAGE
marks.BILD.file = fileadmin/images/bild_start.png


}


#### anderes Bild für Rubrik Privat - PID 25
[PIDinRootline = 25]
seite.20.marks.BILD.file >
seite.20.marks.BILD.file = fileadmin/images/bild_privat.png
[global]
#### anderes Bild für Rubrik Studium - PID 28
[PIDinRootline = 28]
seite.20.marks.BILD.file >
seite.20.marks.BILD.file = fileadmin/images/bild_studium.png
[global]

Nur zum prüfen. Bei allen Unterseiten habe ich keine Templates/Constants, Static Includes oder so gesetzt, nur content default beim obigen Template!

Danke euch! Gruß Mat

jenses ·

[PIDinRootline = 25]
seite.20.marks.BILD.file >
seite.20.marks.BILD.file = fileadmin/images/bild_privat.png
[global]
#### anderes Bild für Rubrik Studium - PID 28
[PIDinRootline = 28]
seite.20.marks.BILD.file >
seite.20.marks.BILD.file = fileadmin/images/bild_studium.png
[global]

seite.10 statt seite.20
(denn du willst doch den Marker BILD in fileadmin/template_de.html, den du als Vorlage für seite.10 angibst, ersetzen 😉 )

jenses

matbehns ·

Ha 😃 , das wars! Dachte sogar, dass hatte ich mal probiert.

Jedenfalls tausendmal Dank! Das hat mich ein ganzes Stück voran gebracht!

Nur mal so aus Interesse, das vererbt sich doch nach unten, oder? Ich muss keine PIDS von Folgeseiten eintragen oder? Hatte das mal grad probiert, da stimmte es auch für Studium > Stundenplan

Gruß Mat