Zum Inhalt springen

Bildwechsel bei Rollover im Menü

Erstellt am 23. Juni 2009 · 6 Antworten · letzte Antwort am 24. Juni 2009

Tags: Frage

zorc68 ·

Hallo ich habe auf der Seite http://p110978.typo3server.info/2.0.html vor eine Übersicht aller Projekte der Künstlerin zu machen. Dazu habe ich ein GMENU mit dem Marker ###PROJEKTE### erstellt, das den Ordner Projekte ausliest.

 page = PAGE
page.typeNum = 0
page.config.metaCharset = utf-8

page.10 = TEMPLATE
page {
	10.template = FILE
	10.template.file = fileadmin/projekte_index.html

	workOnSubpart = DOKUMENT
	stylesheet = fileadmin/include/style.css
	10.marks {   


##################################
# Navigation Projekte
##################################
   PROJEKTE = HMENU
   PROJEKTE {
     
   special = directory
   special.value = 2

   1 = GMENU
   1.NO = 2
   1.NO {

      XY = 350 , 18+[16.h]
      backColor = #FFFFFF
       wrap = <br />
         

      10 = TEXT
      10.text.field = title
      10.text.listNum = 0
      10.text.listNum.splitChar = |
      10.fontColor = #000000
      10.fontFile = fileadmin/font/MYRIADAM.ttf
      10.align = left
      10.fontSize = 13
      10.niceText = 1
      10.offset = 0, 15
      
            
      
      
      # Eine ggf. vorhandene zweite Textzeile
      15 < .10
      
      15.text.listNum = 1
      15.fontColor = #000000
      15.offset = 0, 30
      
      # Hilfsebene zur Berechnung der Höhe von Menüpunkten
      16 < .10
      16.text.case = upper
      16.text.listNum = 1
      16.fontSize = 18
      16.offset = 1000,1000

       #wrap = |<br />    

}      
      # Roll over Ebene 1     
      1.RO < .1.NO
      1.RO.10.fontColor = #00a6eb
      1.RO.15.fontColor = #00a6eb

      
 
      1.CUR < .1.NO
      1.CUR.10.fontColor = #00a6eb 
      1.CUR.15.fontColor = #00a6eb 
      1.CUR.10.offset = 12, 16
}

Nun möchte ich beim Rollover des Menüs rechts jeweils ein Bild zeigen, das zu dem Projekt gehört. Das Bild wird unter "Ressourcen" bei den Seiteneigenschaften der einzelnen Projektseiten angelegt

Für das Bild habe ich den Marker ###THUMB### ins Template geschrieben.
Meine Frage ist nun, wie ich die beiden Elemente verbunden bekommen. Hat da jemand einen Ansatz für mich??
Liebe Grüße
Marc

SLAng ·

Hallo...

1.NO = 2

Gibts es nicht. Ein Menüzustand wird entweder mit 0 deaktiviert, oder mit 1 aktiviert. Da du also NO einen Wert gegeben hast, der nicht existiert, ist NO zwar dennoch aktiviert, weil das per default so ist, aber RO wird nurch das kopieren von 1.NO nicht aktiviert, kann also schonmal nicht funktionieren. Das heißt es muss schonmal 1.NO = 1 heißen, wenn du kopierst, oder eben im Bereich RO RO = 1 um RO zu aktivieren. Das gilt für alle Menüzustände die du verwenden willst.

Wenn das Bild nun in einem Mediafeld der Seiteneigenaschafgten liegt, dann brauchst du eigentlich keinen weiteren Marker in deinem Template. Das würde ja bedeuten, dass das Bild nicht beim RO sondern ständig vor deinem Menü gezeigt würde.
Du baust also das "holen" des Bildes direkt in dein Menü ein und zwar in die Ebnene in der du es benötigst. Das Bild kannst du zum Beispiel so aus dem Mediafeld holen:

...
RO = 1
RO {
	before {
		cObject = IMAGE
		cObject {
			file {
				import = uploads/media/
				import {
					listNum = 0
					override.field = media
				}
			}
		}
	}
}
...

Was mir allerdings überhaupt nicht einleuchtet, ist die Tatsache, dass du da ein GMENU verwendest. Das alles kannst du wesentlich besser mit einem TMENU erstellen. Das Bild setzt du dann per CSS davor. Das hat eine Menge Vorteile gegenüber einem GMENU. Wesentlich schlankeres Menü, Das Menü wird auch ohne JavaScript gezeigt. Das Menü wird auch gezeigt, wenn der Surfer Bilder abgeschaltet hat. Das Menü ist Barierefrei. Das ganze mit einem CSS-Formatierten List-Menü und du bist alle Sorgen los.

zorc68 ·

Hallo, das mit dem TMENU überzeugt. ich habe es mal umgestellt

##################################
# Navigation Projekte
##################################
   PROJEKTE = HMENU
   PROJEKTE {
     
   special = directory
   special.value = 2

   1 = TMENU
   1.NO = 1
   1.NO.linkWrap = |</br>
   1.RO = 1
	  1.RO {
          before {
                cObject = IMAGE
                cObject {
                        file {
                                import = uploads/media/
                                import {
                                        listNum = 0
                                        override.field = media
}
}
}
}
}       
}

Wie weise ich den jetzt das Rollover-Bild zu (ist das so richtig in meinem TS?), bzw definiere wo es hin soll?

SLAng ·

Es war ein Beispiel. Wenn du das mit dem TMENU machst, dann kannst du das Bild im CSS definieren. Es sei denn du willst vor jeder Seite ein anderes Bild. Dann kannst du es dir so aus dem Mediafeld holen.

PROJEKTE = HMENU
PROJEKTE {
	special = directory
	special.value = 2
	1 = TMENU
	1 {
		wrap = <ul>|</ul>
		NO = 1
		NO {
			wrapItemAndSub = <li>|</li>
			ATagParams = class=""
		}
		RO < .NO
		RO {
			stdWrap {
				prepend = IMAGE
				prepend {
					file {
						maxH =
						maxW =
						import = uploads/media/
						import {
							listNum = 0
							override.field = media
						}
					}
				}
			}
		}
	}
}

Das baut dir ein valides Listmenü zusammen, bei dem Im RO-Zustand ein img vorangestellt wird (stdWrap.prepend). Das kannst du dir dann per CSS formatieren wie du willst. So Sachen wie </br> gibts natürlich auch nicht.....

Bitte schau doch in Sachen Menüs mal in dieses Thema:
#65143

Hier findest du alles was zu MENU-Object gehört:
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Hmenu/Tmenu/Index.html#menu-objects

zorc68 ·

Hallo SLAng,
dank für Deine Hilfe. Ja genau, es soll beim Überfahren des Menüs immer das Bild erscheinen, dass ich bei der jeweiligen Seite, wo der Link hinführt, im Mediafeld habe. Ich habe Dein TS eingebaut und eine Breite des Bildes definiert. Eine Klasse habe ich zunächst nicht zugewiesen, da ich erst mal sehen wollte ob überhaupt ein Bild angezeigt wird, dem ich dann einen Platz zuordnen kann. Es erscheint aber leider nichts. Was mache ich noch für einen Fehler?

Noch eine Frage: Warum kann ich nicht </br> statt </li> schreiben. Ich wollte lieber eine Auflistung des Menüs ohne die Punkte haben und das ging doch mit einem break hinter dem Content sehr gut, oder?
Marc

SLAng ·

Menüs macht man in der Regel eben mit Listen. Diese kannst du doch per CSS so formatieren wie du es haben willst... auch ohne den Punkt...

</br> geht deshalb nicht, weil es den Tag schlicht nicht gibt.
Es gibt <br> oder XHTML-kkonform <br /> BR ist ein sogenannter Stand-Alone-Tag.

zorc68 ·

mit dem / im <br> hast du natürlich Recht und er erfüllt was ich will, einen Umbruch in die nächste Zeile für mein Menü.
Nur Bilder aus dem Mediafeld erscheinen beim Roll over leider nicht.