Zum Inhalt springen

Vererben von Bildern mit bestimmter listNum

Erstellt am 7. Oktober 2009 · 8 Antworten · letzte Antwort am 25. August 2010

Tags: Frage

harry7922 ·

Hallo zusammen,

ich habe ein Problem mit dem vererben von Bildern über das Media-Array.

Generell werden die Bilder vererbt - daran liegt es nicht, daher nun die ausführliche Beschreibung:

Ich habe auf jeder Seite zwei Bereiche, in denen sich seitenspezifische Bilder befinden.
Zum einen ganz groß im Header und zum anderen ein kleines Bild über dem Content.
Da sich nun das Header-Bild fast nicht ändert, greife ich dieses als listNum=1 ab und das Content-Bild als listNum=0.

Nun stellen wir uns folgenden Seitenbaum vor:

- root
- - Ebene1-Seite1
- - Ebene1-Seite2
- - - Ebene2-Seite2.1
- - - Ebene2-Seite2.2
- - - Ebene2-Seite2.3
- - Ebene1-Seite3
- - Ebene1-Seite4
- - Ebene1-Seite5

Ich definiere nun auf Ebene1 für jede Seite ein Bild mit listNum 0 und 1 -> sprich im Media-Feld sind zwei Bilder hinterlegt.

Auf Ebene2 definiere hinterlege ich in jeder Seite nur noch ein Bild -> also nur listNum 0 gibt es auf diesen Seiten. (Es ist aber möglich, dass hier auch der Header mit listNum=1 neu definiert wird!)

Wenn ich mir nun Ebene2-Seite2.1 beispielsweise ansehe, zeigt er mir das Bild über dem Content an. Allerdings vererbt er den Header (listNum=1) nicht von der Ebene1-Seite2 nach unten!

Wie kann ich so eine Vererbung bewerkstelligen?

Hier der entsprechende TS:

## Header [Begin]
## Dynamisches Header mit Vererbung
lib.headerImage  = IMG_RESOURCE
lib.headerImage.file.import = uploads/media/
lib.headerImage.file.import.data = levelmedia: -1, slide
lib.headerImage.file.import.listNum = 1
lib.headerImage.stdWrap.wrap = <div id="headerbild" style=" background-image:url( | );"></div>
## Header [End]

## Content-Grafik [Begin]
## Dynamisches ContentBild mit Vererbung
lib.contentImage  = IMG_RESOURCE
lib.contentImage.file.import = uploads/media/
lib.contentImage.file.import.data = levelmedia: -1, slide
lib.contentImage.file.import.listNum = 0
lib.contentImage.stdWrap.wrap = <img src=" | " />
## Content-Grafik [End]

Kann mir jemand von euch einen Tipp geben?

Vielen Dank!

Liebe Grüße
Hardy

kunovwd ·

Hallo Zusammen,

schade das offensichtlich Niemand was dazu sagen kann....
Ich habe das selbe Problem.... ;-)

Viele Grüße,
Ralf

harry7922 schrieb

Hallo zusammen,

ich habe ein Problem mit dem vererben von Bildern über das Media-Array.

Generell werden die Bilder vererbt - daran liegt es nicht, daher nun die ausführliche Beschreibung:

Ich habe auf jeder Seite zwei Bereiche, in denen sich seitenspezifische Bilder befinden.
Zum einen ganz groß im Header und zum anderen ein kleines Bild über dem Content.
Da sich nun das Header-Bild fast nicht ändert, greife ich dieses als listNum=1 ab und das Content-Bild als listNum=0.

Nun stellen wir uns folgenden Seitenbaum vor:

- root
- - Ebene1-Seite1
- - Ebene1-Seite2
- - - Ebene2-Seite2.1
- - - Ebene2-Seite2.2
- - - Ebene2-Seite2.3
- - Ebene1-Seite3
- - Ebene1-Seite4
- - Ebene1-Seite5

Ich definiere nun auf Ebene1 für jede Seite ein Bild mit listNum 0 und 1 -> sprich im Media-Feld sind zwei Bilder hinterlegt.

Auf Ebene2 definiere hinterlege ich in jeder Seite nur noch ein Bild -> also nur listNum 0 gibt es auf diesen Seiten. (Es ist aber möglich, dass hier auch der Header mit listNum=1 neu definiert wird!)

Wenn ich mir nun Ebene2-Seite2.1 beispielsweise ansehe, zeigt er mir das Bild über dem Content an. Allerdings vererbt er den Header (listNum=1) nicht von der Ebene1-Seite2 nach unten!

Wie kann ich so eine Vererbung bewerkstelligen?

Hier der entsprechende TS:

## Header [Begin]
## Dynamisches Header mit Vererbung
lib.headerImage  = IMG_RESOURCE
lib.headerImage.file.import = uploads/media/
lib.headerImage.file.import.data = levelmedia: -1, slide
lib.headerImage.file.import.listNum = 1
lib.headerImage.stdWrap.wrap = <div id="headerbild" style=" background-image:url( | );"></div>
## Header [End]

## Content-Grafik [Begin]
## Dynamisches ContentBild mit Vererbung
lib.contentImage  = IMG_RESOURCE
lib.contentImage.file.import = uploads/media/
lib.contentImage.file.import.data = levelmedia: -1, slide
lib.contentImage.file.import.listNum = 0
lib.contentImage.stdWrap.wrap = <img src=" | " />
## Content-Grafik [End]

Kann mir jemand von euch einen Tipp geben?

Vielen Dank!

Liebe Grüße
Hardy

Michaelh74 ·

In Deinem Content Image Part, nimm lieber IMAGE anstatt IMG_RESOURCE dann kannst Du Dir den img tag wrap sparen, da T3 das für Dich erledigt.

Wenn ich 2 Bilder aus den Seiteneigenschaften benötige, ist die Extension second media field ganz gut. Funktioniert analog zum media field. Aber damit wirst Du unabhängig von der listnum da es hier immer 0 ist.

Viele Grüße
Michael

kunovwd ·
Michaelh74 schrieb

In Deinem Content Image Part, nimm lieber IMAGE anstatt IMG_RESOURCE dann kannst Du Dir den img tag wrap sparen, da T3 das für Dich erledigt.

Wenn ich 2 Bilder aus den Seiteneigenschaften benötige, ist die Extension second media field ganz gut. Funktioniert analog zum media field. Aber damit wirst Du unabhängig von der listnum da es hier immer 0 ist.

Viele Grüße
Michael

Hallo Michael,

danke für den Tipp!
Allerdings verstehe ich jetzt nicht wirklich, wie dass das oben gezeigte Problem beseitigt?
Habe die Extension mal installiert... verstehe aber nicht, wie ich jetzt z. B. gezielt nur das zweite Bild anspechen kann (wenn listNum da ja jetzt IMMER 0 ist)...
Hhhmm... der Sinn erschließt sich mir ehrlich gesagt nicht ganz...

Wie gesagt, ich möchte WAHLWEISE ein, zwei oder kein Bild in Media (Resourcenfeld) eintragen, respektive abfragen können...
Das geht damit (mit "second media field") wohl auch nicht, oder übersehe ich wieder was...?

Viele Grüße,
von Ralf

harry7922 ·

Hi Ralf,

ich habe das Prblem so gelöst dass ich listNum 1 schaue ob es auf der aktuellen Seite befüllt ist. Wenn nicht, dann greife ich das Bild aus einer definierten Ebene ab. Der TS für listNum 0 ist wie im ursprünglichen Post.

lib.headerImage  = COA
lib.headerImage.10  = IMG_RESOURCE
lib.headerImage.10.file.import = uploads/media/
lib.headerImage.10.file.import.data = page:media
lib.headerImage.10.file.import.listNum = 1
lib.headerImage.10.stdWrap.if.isTrue{
				data = page:media
				listNum = 1
}
lib.headerImage.10.stdWrap.wrap = <div id="headerbild" style=" background-image:url( | );"></div>
lib.headerImage.20  = IMG_RESOURCE
lib.headerImage.20.file.import = uploads/media/
lib.headerImage.20.file.import.data = levelmedia: 2, slide
lib.headerImage.20.file.import.listNum = 1
lib.headerImage.20.stdWrap.if.isFalse{
				data = page:media
				listNum = 1
}
lib.headerImage.20.stdWrap.wrap = <div id="headerbild" style=" background-image:url( | );"></div>

Grüße
Hardy

kunovwd ·

Hallo Hardy,

vielen Dank für den Tipp!
Ich habe mal versucht es auf meine Aufgabenstellung hin anzuwenden...
Leider funktioniert es bei mir immer noch nicht :-(
Wenn ich nur eine Grafikdatei in "media" eintrage (das erste ist für das Headerbild reserviert, das zweite soll als Hintergrundbild herhalten), dann ist im 60er Objekt ein leeres wrap die folge (also wie im wrap angegebenen, nur ohne filename)...
Auszug Qelltext: body{ background-image: url(uploads/media/);

Also der Dateiname wird nicht geholt und natürlich ist in der Eltern-Seite eine HG-Grafik hinterlegt (also zwei Bilder im Resourcenfeld)!

Mein Code:

page {
  headerData {
    90 = COA
    90 {
      wrap = <style type="text/css"><!--| --></style>
     
      50 = TEXT
      50 {
        data = page:media
        listNum = 1

        stdWrap.if.isTrue{
          data = page:media
          listNum = 1
        }
        
        stdWrap.wrap = body{ background-image: url(uploads/media/|); background-repeat: repeat-y; background-position: center 1 }
      }

      60 = TEXT
      60 {
        data = levelmedia: 2, slide
        listNum = 1
        stdWrap.if.isFalse{
        data = page:media
        listNum = 1
        }
        stdWrap.wrap = body{ background-image: url(uploads/media/|); background-repeat: repeat-y; background-position: center 2 }
      }     
    }

Ich verzweifel immer mehr daran... :-(

Vielleicht muss ich tatsächlich eine extension dafür nehmen oder was könnte ich übersehen haben?
Oder ich bin schlicht zu blöde für Typo3 #angry#

Viele Grüße,
Ralf

kunovwd ·
kunovwd schrieb

Oder ich bin schlicht zu blöde für Typo3 #angry#

Na sag ich doch... ich bin nur zu blöde für diesen Job...

Es geht nun, nachdem ich den Parameter auf -2 an statt auf 2 gesetzt habe! ;-)

data = levelmedia: -2, slide

Danke Euch allen noch mal!!!

Viele Grüße,
Ralf

harry7922 ·

Hallo Ralph,

ich versuche mal Dir zu helfen (Hab auch schon länger nichts mehr mit TS gemacht).

Ich würde anstatt bei den 50er und 60er ein TEXT-Element zu verwenden ein IMG_RESOURCE Objekt verwenden wie in meinem Beispiel.
Das IMG_RESOURCE Objekt gibt auch nur einen kompletten Pfad zu einer Datei zurück - daher solltest Du das TEXT Objekt nicht benötigen.

Hoffe es klappt...

Grüße
Hardy

kunovwd ·
harry7922 schrieb

ich versuche mal Dir zu helfen (Hab auch schon länger nichts mehr mit TS gemacht).

Hallo Hardy,

vielen Dank nochal für Deine Hilfe!
Ich habe es wie gesagt denn nun doch noch ans Laufen bekommen...
Aber beim nächsten mal werde ich das mal mit dem Image-Objekt versuchen... denn das scheint die Sache zu vereinfachen (das leuchtet mir ein)....

DANKE!

Viele Grüße,
Ralf