Zum Inhalt springen

TMENU_Layers 2. und 3. Ebene einbinden

Erstellt am 5. Juli 2008 · 9 Antworten · letzte Antwort am 10. Juli 2008

Tags: Frage

Razzmatazz0r ·

Hallo, ich bin gaaaanz neu bei Typo3 und mir fehlen trotz Studierens von Typo3-Buch und -Foren noch einige Zusammenhänge:
Mein Problem im Moment:
- Ich habe eine Seitenstruktur (3 Ebenen)angelegt und möchte diese per TMENU_LAYERS ausgeben lassen.
Wie bekomme ich es hin, dass Typo3script die 2 Unterebenen erkennt und diese anzeigt?

page = PAGE
page.10 < temp.layerMenu
page.includeLibs.tmenu_layers = media/scripts/tmenu_layers.php

page {
  includeCSS {
    file1 = fileadmin/templates/css/style.css
    file2 =fileadmin/templates/css/skip.css
    file1.media = screen
    file2.media = screen
  }
  #HTML Vorlage einbinden
  10 = TEMPLATE
  10.template = FILE
  10.template.file = fileadmin/templates/index.html
  10.workOnSubpart = DOCUMENT
  
  10.marks {
    INHALT = CONTENT
    INHALT {
      table = tt_content
    }
}
    
   MENU_OBEN = HMENU
    MENU_OBEN {
      special = directory
      special.value = 128
      1 = TMENU_LAYERS
      1 {
        #Alle Unterebenen mit anzeigen
        expAll = 1
        #Untermenue relativ unter den gewählten Menuepunkt anzeigen
        relativeToTriggerItem = 1
        #Abstand des Untermenues zum Hauptmenue
        topOffset = 25
        #Verschiebung der Unterebene auf der X-Achse
        leftOffset = -6
        wrap = <table cellpadding="0" cellspacing="0"><tr> | </tr></table>
        NO.allWrap = <td style="border: 1px solid black; padding:5px"> | </td>
      }
      2 = TMENU_LAYERS
      2 {
        expAll = 1
        relativeToTriggerItem = 1
        leftOffset = 5
        NO.allWrap = <div style="border: 1px solid blue; padding:5px;width:60px;"> | </div>
        }
      3 = TMENU
      3 {
        }
}

Vielen Dank schonmal für Eure Hilfe und die Bemühungen.
Falls ich einen ähnlichen Thread überlesen habe, tut es mir leid.

Razzmatazz0r ·

Hat keiner ne Antwort drauf? Oder bekommt Typoscript mit dem "1 =..." und "2 = ..." die Ebenen zugewiesen? Die erste Ebene wird ja richtig dargestellt, aber die 2te kommt erst gar nicht.

SLAng ·

Da fehlen dir wohl nen paar Klammern. Und der Marker MENU_OBEN gehört nicht nach page, sondern nach page.10.marks.

Ich hab den Code mal vernünftig eingerückt, damit du erkennst was wozu gehört.
ich habe die 1. Ebene auf die 2. Ebene kopiert und nur das aufgeführt was sich ändert. Da du scheinbar in der zweiten Ebene keine Tabelle mehr verwendest musst du das wrap aus der 1. Ebene wieder löschen mit wrap > (steht im Code der 2. Ebene). 2 = TMENU_LAYERS braucht dann auch nicht mehr aufgeführt werden.

Die 3. Ebene ist etwas verwirrend. Die wird nämlich wieder ein TMENU und gar keinen Code und es wird auch nirgends wo was kopiert...

Den INHALT Marker kannst du einfach auf < styles.content.get kopieren. Das reicht vollkommen aus. css_styled_content dann bitte im root-Template einbinden und nicht content_default oder sowas...

So könnte es was werden:

page = PAGE
page.10 < temp.layerMenu
page.includeLibs.tmenu_layers = media/scripts/tmenu_layers.php

page {
	includeCSS {
		file1 = fileadmin/templates/css/style.css
		file2 =fileadmin/templates/css/skip.css
		file1.media = screen
		file2.media = screen
	}
  #HTML Vorlage einbinden
	10 = TEMPLATE
	10 {
		template = FILE
		template.file = fileadmin/templates/index.html
		workOnSubpart = DOCUMENT
		marks {
			INHALT < styles.content.get
			MENU_OBEN = HMENU
			MENU_OBEN {
				special = directory
				special.value = 128
				1 = TMENU_LAYERS
				1 {
						#Alle Unterebenen mit anzeigen
					expAll = 1
						#Untermenue relativ unter den gewählten Menuepunkt anzeigen
					relativeToTriggerItem = 1
						#Abstand des Untermenues zum Hauptmenue
					topOffset = 25
						#Verschiebung der Unterebene auf der X-Achse
					leftOffset = -6
					wrap = <table cellpadding="0" cellspacing="0"><tr> | </tr></table>
					NO {
						allWrap = <td style="border: 1px solid black; padding:5px"> | </td>
					}
				}
				2 < .1
				2 {
					leftOffset = 5
					wrap >
					NO {
						allWrap = <div style="border: 1px solid blue; padding:5px;width:60px;"> | </div>
					}
				}
				3 = TMENU
				3 {
				....?????
				}
			}
		}
	}
}
Razzmatazz0r ·

Erst einmal vielen Dank für Deine Hilfe, das Layer funktioniert schon juhu 😃.

quote="SLAng"]
Die 3. Ebene ist etwas verwirrend. Die wird nämlich wieder ein TMENU und gar keinen Code und es wird auch nirgends wo was kopiert...
[/quote]

Da hab ich nur noch nix eingetragen, da kommt dann die 3. Ebene soll nur TMENU sein, da es die letzte Ebene ist.

Ich habe allerdings nun 2 Probleme, die neu entstanden sind:
1. Meine Seitennavigation (ist die 2.Ebene [gedacht für eine schnellere Wahl des Untermenüs]) wird nicht mehr eingebunden, stattdessen steht wieder der Marker da.

MENU_LINKS = HMENU
    MENU_LINKS {
     entryLevel = 1
       1 = TMENU
       1 {
        noBlur = 1
        wrap = <ul id="navilinks"> | </ul>
        NO = 1
        NO.linkWrap = <li> | </li>
        NO.ATagTitle.field = subtitle // title
        CUR = 1
        CUR.linkWrap <li class="hier"> | </li>
        CUR.doNotLinkIt = 1
       }
    }

2. Ich habe aus der (meiner Meinung nach "ekelhaften")Tabelle eine ul-Liste gemacht. Irgendwie erzeugt TS in den Listen Divs mit gernerierten IDs, die 100% Weite und 100% Höhe haben. Bekomme ich das irgendwie weg?
Im Moment siehts so aus:

marks {
                        INHALT < styles.content.get
                        MENU_OBEN = HMENU
                        MENU_OBEN {
                                special = directory
                                special.value = 128
                                1 = TMENU_LAYERS
                                1 {
                                                #Alle Unterebenen mit anzeigen
                                        expAll = 1
                                                #Untermenue relativ unter den gewählten Menuepunkt anzeigen
                                        relativeToTriggerItem = 1
                                                #Abstand des Untermenues zum Hauptmenue
                                        topOffset = 25
                                                #Verschiebung der Unterebene auf der X-Achse
                                        leftOffset = -6
                                        wrap = <ul id="navi"> | </ul>
                                        NO {
                                                allWrap = <li> | </li>
                                        }
                                }
                                2 < .1
                                2 {
                                        leftOffset = 5
                                        wrap >
                                        NO {
                                                allWrap = <div style="border: 1px solid blue; padding:5px;width:60px;"> | </div>
                                        }
                                3 = TMENU
                                3 {
                                ....?????
                                }
                        }
                }
SLAng ·

1. Ul-Listen mit wrapItemAndSub machen, nicht mit allWrap.
2. Wenn du einen Marker angezeigt bekommst, dann wird der nicht angesprochen (Das kann diverse Ursachen haben... Falsch geschrieben, nicht korrekt zugewiesen usw..)
3. 100% Weite? Naja, da ul ein Block-Level Element ist, geht das über die gesamte Breite. Das kannst du per CSS und einer Weitenangabe regeln...

Mehr geraten, bei wenig Gesamtcode.

Razzmatazz0r ·

Also ich bin im Moment völlig überfragt, hab überall nachgesucht und krieg bald Augenkrebs #angry#

Irgendwie spamt da ein Eintrag meine ul mit divs (anchorID und elementID) zu, wovon ich nur den anchor per css formatieren kann.

Hier mal der komplette TS-Tree:

page = PAGE
page.includeLibs.tmenu_layers = media/scripts/tmenu_layers.php

page {
        includeCSS {
                file1 = fileadmin/templates/css/style.css
                file2 =fileadmin/templates/css/skip.css
                file1.media = screen
                file2.media = screen
        }
  #HTML Vorlage einbinden
        10 = TEMPLATE
        10 {
                template = FILE
                template.file = fileadmin/templates/index.html
                workOnSubpart = DOCUMENT
                marks{
                        INHALT < styles.content.get
                        MENU_OBEN = HMENU
                        MENU_OBEN {
                                special = directory
                                special.value = 128
                                1 = TMENU_LAYERS
                                1 {
                                                #Alle Unterebenen mit anzeigen
                                        expAll = 1
                                                #Untermenue relativ unter den gewählten Menuepunkt anzeigen
                                        relativeToTriggerItem = 1
                                                #Abstand des Untermenues zum Hauptmenue
                                        topOffset = 25
                                                #Verschiebung der Unterebene auf der X-Achse
                                        leftOffset = -6
                                        wrap = <ul id="navi"> | </ul>
                                        NO {
                                                wrapItemAndSub = <li> | </li>
                                        }
                                }
                                2 < .1
                                2 {
                                        leftOffset = 5
                                        wrap >
                                        NO {
                                                allWrap = <div style="border: 1px solid blue; padding:5px;width:60px;"> | </div>
                                        }
                             }
                
        

                             MENU_LINKS = HMENU
                             MENU_LINKS {
                                     entryLevel = 1
                                     1 = TMENU
                                     1 {
                                     noBlur = 1
                                     wrap = <ul id="navilinks"> | </ul>
                                     NO = 1
                                     NO.linkWrap = <li> | </li>
                                     NO.ATagTitle.field = subtitle // title
                                     CUR = 1
                                     CUR.linkWrap <li class="hier"> | </li>
                                     CUR.doNotLinkIt = 1
                                     }
                             }
                    #marks Klammer Ende
                     }
#Seiteninhalt einbinden
tt_content = COA
tt_content {
  #Ueberschrift
  10 = TEXT
  10 {
    field = header
    wrap = <h1> | </h1>
  }
  #Bodytext aus dem Textfeld
  20 = TEXT
  20 {
    field = bodytext
    wrap = <p> | </p>
  }
}
  }
}

Ich nehme mal an, dass ich das MENU_LINKS irgend wie aus den marks geschmissen hab, seh aber im Moment gar net durch. Bin sehr dankbar für die Hilfe.

Hier noch mal der ul-Bereich ausgelesen mit Firebug:

<ul id="navi">
<div id="anchorIDc749e4f425" style="position: absolute; visibility: hidden;" />
<div id="itemIDc749e4f425" style="width: 100%; height: 100%;">
<a onmouseout="GL_stopMove('656753');" onmouseover="GL_doTop('656753', 'Menu6567530');" onfocus="blurLink(this);" href="139.0.html">Über uns</a>
</div>
<div id="anchorID917b4e3f62" style="position: absolute; visibility: hidden;" />
<div id="itemID917b4e3f62" style="width: 100%; height: 100%;">
<a onmouseout="GL_resetAll("656753");" onmouseover="GL_hideAll("656753");" onfocus="blurLink(this);" href="138.0.html">Veranstaltungen</a>
</div>
<div id="anchorID4493c55d96" style="position: absolute; visibility: hidden;" />
<div id="itemID4493c55d96" style="width: 100%; height: 100%;">
<a onmouseout="GL_stopMove('656753');" onmouseover="GL_doTop('656753', 'Menu6567532');" onfocus="blurLink(this);" href="131.0.html">Gemeinde aktiv</a>
</div>
<div id="anchorIDff590e2d06" style="position: absolute; visibility: hidden;" />
<div id="itemIDff590e2d06" style="width: 100%; height: 100%;">
<a onmouseout="GL_resetAll("656753");" onmouseover="GL_hideAll("656753");" onfocus="blurLink(this);" href="129.0.html">Galerie</a>
</div>
<div id="anchorIDc46015d9b1" style="position: absolute; visibility: hidden;" />
<div id="itemIDc46015d9b1" style="width: 100%; height: 100%;">
<a onmouseout="GL_resetAll("656753");" onmouseover="GL_hideAll("656753");" onfocus="blurLink(this);" href="130.0.html">Jugend</a>
</div>
</ul>

dass der halt die weite und höhe vordefiniert ist voll mist.

SLAng ·

Also ich habe noch kein TMENU_LAYERS erstellt und frage mich ob es überhaupt möglich ist mit wrapItemAndSub zu wrapen.

Ich denke das die div's wohl aus dem Php-File kommen das du einbindest.

Ich nehme mal an, dass ich das MENU_LINKS irgend wie aus den marks geschmissen hab, seh aber im Moment gar net durch. Bin sehr dankbar für die Hilfe.

Hier noch mal der ul-Bereich ausgelesen mit Firebug:

ich weiß nicht wie du jetzt auf das MENU-Links kommst... Der gepostete Code ist aus dem MENU_OBEN.

Wenn dir der Marker MENU_LINKS auf der Seite angezeigt wird, dann sprichst du den nicht korrekt an.

Das muss in deinem HTML-Template stehen: ###MENU_LINKS###

Ansonsten versteh ich auch bald nicht mehr wo genau das Problem jetzt liegt.
Versuch es doch bitte mal so genau wie möglich zu erklären.

Razzmatazz0r ·
SLAng schrieb

ich weiß nicht wie du jetzt auf das MENU-Links kommst... Der gepostete Code ist aus dem MENU_OBEN.

Wenn dir der Marker MENU_LINKS auf der Seite angezeigt wird, dann sprichst du den nicht korrekt an.

Bin so verzweifelt, würde das sogar über Telefon erklären oder Teamspeak oder ähnlichem :-)

1. Also ein Punkt hat sich jetzt erledigt...die hässlichen Div-container stammen vom "relativeToTriggerItem =1"...deswegen soll man bei horizontalen Layers Tabellen verwenden --> hab ich nun gemacht

2. Das linke Menü (zur Erklärung) ist eine Art Breadcrumb und soll beim fixen durchschmökern der Seiten das ewige Aufklappen durch den Layer ersparen, wenn man sich die Unterpunkte anschaut.
Es hat ja anfangs auch funktioniert...im html ist der passende Marker etc.
Ich denke, dass ich evtl Klammern falsch gesetzt habe und somit irgendwie das Menü im TS aus den Marks gekommen ist oder so.
Unterhalb des MENU_LINKS sollten dann wieder Extensions einsetzbar sein, wobei mir da auch im Moment der Faden fehlt...aber ich komme der Sache näher dank Dir 😃

Razzmatazz0r ·
Razzmatazz0r schrieb

2. Das linke Menü (zur Erklärung) ist eine Art Breadcrumb und soll beim fixen durchschmökern der Seiten das ewige Aufklappen durch den Layer ersparen, wenn man sich die Unterpunkte anschaut.
Es hat ja anfangs auch funktioniert...im html ist der passende Marker etc.
Ich denke, dass ich evtl Klammern falsch gesetzt habe und somit irgendwie das Menü im TS aus den Marks gekommen ist oder so.

Hat sich eben auch erledigt:
-> Vor "No {" hat ein "NO = 1" gefehlt...deswegen hat TS die 1 Klammer ignoriert

Danke nochmal für gemeinsame Arbeit am Problem und dem Kopfzerbrechen SLang :-)
*daumenhoch*

SLAng ·

Also nur weil ein NO = 1 fehlt wird doch nicht eine Klammer ignoriert. Das NO = 1 brauchst du nur wenn du weitere Menüzustände hast, bei denen du nicht nochmal aktivieren willst.

Aber so oder so... wenns denn funktioniert umso besser...

Thema bitte dann auch gelöst setzen.