Zum Inhalt springen

Menü mit Bilder aus Media Feld

Erstellt am 3. Dezember 2014 · 3 Antworten · letzte Antwort am 3. Dezember 2014

Tags: Bilder, TYPO3 6.x, Frage

gianni27 ·

hallo zusammen

ich habe per typoscript folgendes menü erstellt:

lib.mainNavi = HMENU
lib.mainNavi {
  entryLevel=0
  
  1 = TMENU
  1 {
    wrap = <ul>|</ul>
    NO.wrapItemAndSub = <li>|</li>
    expAll = 1
    ACT = 1
    ACT.wrapItemAndSub = <li class="active">|</li>
  }
  2 = TMENU
  2{
    wrap = <ul> | </ul>
    NO.wrapItemAndSub.insertData=1
    NO.wrapItemAndSub = <li>|</li>
    expAll = 1
    ACT = 1
    ACT.wrapItemAndSub.insertData=1
    ACT.wrapItemAndSub = <li class="active">|</li>
  }
}

funktioniert alles richtig.

jetzt möchte ich bei JEDER seite unter "Resourcen --> Media" ein bild hinterlegen und im menü als data-image hinterlegen.

Am schluss sollte es so aussehen:
<li data-img="bildausmediafieldvonprodukte.jpg"><a href="#">Produkte</a></li>
<li data-img="bildausmediafieldvonausstellung.jpg"><a href="#">Ausstellung</a></li>

bildnamen sind natürlich erfunden, aber es geht darum, dass jedes bild aus der der jeweiliger seite geholt wird.

kann mir jemand helfen?

danke im voraus

toifel ·

Mit "NO.stdWrap.cObject = COA" kannst du dir die einzelnen Teile des Menus selbst zusammen basteln.
Über das FILES Objekt kannst du dann das media-Feld auslesen.

Wool ·

Hi,

dein Menü kann gekürzt werden auf:

lib.mainNavi = HMENU
lib.mainNavi {
  entryLevel=0
  1 = TMENU
  1 {
    wrap = <ul>|</ul>
    expAll = 1
    NO = 1
    NO.wrapItemAndSub = <li>|</li>
    CUR < .NO
    CUR.wrapItemAndSub = <li class="active">|</li>
    ACT < .CUR
  }
  2 < .1
}

Das ".insertData=1" in Level 2 kannst Du Dir sparen, da Du keine Felder wie "{field:subtitle}" in deinen wraps ausgibst.

Und das 1.NO ersetzen durch, bspw.:

    NO = 1
    NO { 
      allWrap = < li style="clear:both;">|</li>
      # TMENU nicht standartmäßig verlinken, Link nur auf Seitentitel
      doNotLinkIt = 1 
      # Menüpunkte werden durch cObject Array COA ersetzt
      stdWrap.cObject = COA
      stdWrap.cObject {
        # Bild aus Seiteneigenschaften
        20 = IMAGE
        20.wrap = <div class="CSS-Klasse-für-höhe-breite-overflow:hidden-float:left">|</div>
        20.file {
          import.data = levelmedia:-1, slide
          treatIdAsReference = 1
          import.listNum = 0
        }
        # Seitentitel und verlinken
        40 = TEXT
        40.wrap = |
        40.field = title
        40.typolink.parameter.field = uid
      }
    }

HINWEIS: ab TYPO3 6.0 nötig: "treatIdAsReference = 1"

Durch "levelmedia:-1, slide" wird das auf der aktuellen Seite hinterlegte Bild, oder - wenn nicht vorhanden - das nächste Bild auf einer übergeordneten Seite der root-line genommen.

Sollte so funktionieren.

Quelle 1: https://jweiland.net/typo3/typoscript/bild-aus-den-seiteneigenschaften-auslesen-ab-typo3-60.html
Quelle 2: http://typo3-blog.net/tutorials/news/ausfuehrliches-tmenu.html