Zum Inhalt springen

Media-Image aus Unterseiten verwenden

Erstellt am 3. Dezember 2013 · 9 Antworten · letzte Antwort am 4. Dezember 2013

Tags: Dateien & FAL, Bilder, TYPO3 6, Frage

schmidtpublic ·

Hallo,

ich stelle die Inhalte von Unterseiten auf einer Seite dar, um eine Onepage-Website mit TYPO3 aufzubauen.
Um die einzelnen Teile mit unterschiedlichen Hintergründen versehen zu können, will ich die Media-Ressource der jeweiligen Unterseite verwenden, sitze da aber auf dem Draht...

Mein TS:

lib.content = COA
lib.content {
  30 = CONTENT
  30 {
    table = pages
    select {
      orderBy = sorting
    }
    renderObj = COA
    renderObj {
      10 =  COA      
      
      10.2 = IMG_RESOURCE
      10.2{
        file {
          import.data = levelmedia:-1, slide
          treatIdAsReference = 1
          import.listNum = 0
          
        }
        stdWrap.wrap = <div style="background-image:url(|)">
      }
      
      20 = CONTENT
      20 {
        table = tt_content
        select {
          pidInList.field = uid
          orderBy = sorting
          where = colPos = 0
        }
      }
      
     
      
      30 = TEXT
      30.value = </div>
    }
  }
}

Soweit, so gut: Jede Seite wird in einem DIV mit Hintergrundbild dargestellt, das Bild kommt aber natürlich aus der Mutterseite (also der, in der die Unterseiten zusammengestellt werden).
Sieht jemand eine Lösung, wie ich auf das Image der jeweiligen Unterseite zugreifen kann?

Gruß vom Rhein!

Schweriner ·

30 = CONTENT;

Soweit ich weiß ist uidInList und pidInList standartmäßig auf die aktuelle Seite eingestellt, außer Du gibst etwas anderes an oder nicht? Vielleicht liegt es daran.

EDIT:

Probier im select der 30 mal:

pidInList =
oder pidInList >
und andWhere.dataWrap = pid={field:pid}

Um alle Unterseiten der aktuellen Seite zu bekommen.

schmidtpublic ·

Ne, dann geht nix mehr.

Also die Seiteninhalte werden ja schon richtig ausgegeben.
Nur der Zugriff auf den richtigen file unter 10.2{... ist noch total falsch.

Schweriner ·

Hab jetzt kein PHPMyAdmin zur Hand, aber schreib da doch mal anstelle von "levelmedia:-1, slide" nur den Namen des Datenbankfeldes für die Bilder rein :-/

EDIT: Oder ist es bei Pages seit 6.x auch nur noch eine File Reference auf eine andere Tabelle wie bei tt_content? Ich schau mir das nachher mal genauer an.

etux ·

Dein 10.2 dürfte eher so funktionieren:

10.2 = FILES
10.2 {
  references {
    table = pages
    fieldName = media
  }
  renderObj = TEXT
  renderObj {
    data = file:current: publicUrl
    wrap = <div style="background-image:url(|)">
  }
}

Ich würde allerdings für das Konstrukt lieber HMENU nehmen.

etux · · Beste Antwort

EDIT:
Habe auf die Schnelle ein HMENU gebaut. Ungetestet, aber es dürfte funktionieren. Einiges (unter „references“, …) dürfte sicher überflüssig sein – muss Du halt testen. 😃

lib.content = HMENU
lib.content {
  special = directory
  1 = TMENU
  1 {
    NO = 1
    NO {
      allWrap = |</div>
      doNotLinkIt = 1
      stdWrap.cObject = COA
      stdWrap.cObject {
        10 = FILES
        10 {
          references {
            table = pages
            uid.data = field = uid
            fieldName = media
            data = levelmedia:-1, slide
            treatIdAsReference = 1
            listNum = 0
          }
          renderObj = TEXT
          renderObj {
            data = file:current: publicUrl
            wrap = <div style="background-image:url(|);">
          }
        }
        20 = CONTENT
        20 {
          table = tt_content
          select.where = colPos = 0
          select.pidInList.field = uid
        }
      }
    }
  }
}
schmidtpublic ·

Hallo!

Super - das funktioniert!

Ich hatte schon diverse Ansätze mit Menus gesehen, aber nicht ganz verstanden wozu und warum nicht direkt mit TS-Bezug auf die Referenzen... sei's drum: Dein Script läuft (nur vor dem publicUrl muss das Leerzeichen raus, für alle, die's verwenden).

Viele Grüße vom Rhein

etux ·
schmidtpublic schrieb

Dein Script läuft (nur vor dem publicUrl muss das Leerzeichen raus, für alle, die's verwenden).

Ja, sorry. o.O
Ich hatte extra ein Leerzeichen gesetzt, da sonst ein Doppelpunkt direkt gefolgt von einem „p“ von Forum als Smile interpretiert wird.
... und das in einem Code-Element. #angry#