Hallo!
Ich habe folgenden Seitenbaum:
-- [root]
---- login
---- home
---- [content]
------ Navigation 1
------ Navigation 2
------ Navigation 3
-------- First nav level 1
-------- First nav level 2
-------- First nav level n
---------- Second nav level 1
---------- Second nav level 2
---------- Second nav level n
[root] dient für allgemeine Einstellungen wie Menü etc.
login, home und die Unterseiten von [content] haben jeweils unterschiedliche Layouts, daher der Aufbau. (Navigation 1 und 2 haben ebenfalls Unterseiten, das ist hier aber unerheblich)
In home soll nun das Menü bestehend aus "First nav level" von Navigation 3 aus aufgebaut werden. Dabei soll bei Anklicken eines "First nav levels" die zugehörige Seite angezeigt und unter dem entsprechenden Menüeintrag die zugehörigen "Second nav level" ausgegeben werden. (Also im Prinzip das, was eigentlich defaultmäßig geschehen sollte)
Ich habe testweise ein TMENU erstellt und festgestellt: solange home und Navigation auf dem gleichen Ebene sind, klappt dieses bereits automatisch durch Verwendung von special = directory. Doch sobald Navigation zur Unterseite von [content] gemacht wird, werden immer nur die "First nav level" angezeigt. Auch Experimente mit entryLevel haben mir nichts gebracht (bei entryLevel = 3 gab' es z.B. überhaupt kein Menü).
Meine einzige Lösung war bisher, das ganze durch explizites Setzen von expAll=1 auf den einzelnen Seiten, die Anzeige der Submenüs zu erzwingen. Dies kann allerdings keine Lösung sein, da Redakteure beim Erstellen neuer Seiten stets auch das Template extra bearbeiten müssten ...
Willkommen im Forum,
Nejah schriebAuch Experimente mit entryLevel haben mir nichts gebracht (bei entryLevel = 3 gab' es z.B. überhaupt kein Menü).
Der Sinn ist weniger zu experimentieren, bis die Anforderung per Zufall erfüllt wird - mehr, sich einzulesen was special und entryLevel strukturell bewirken.
Sieh mal unter https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html oder evtl. auch die ausführlicheren Erklärungen inkl. Bildern in der deutschen Doku: http://www.typo3.net/literatur_zu_typo3/
Ohne eine direkte klare Frage was Du nun umsetzen möchtest und ohne dein TypoScript & Configs werden Dir hier nicht viele helfen können 😉 .
grüsse
Was die beiden Befehle bewirken sollen, ist mir soweit klar. Zumindest nach dem, was die Referenz, Online-Dokumentationen und diverse Fachliteratur hergeben. "Experimentieren" war hier wohl etwas unglücklich gewählt.
Und wie bereits gesagt möchte ich, dass das Untermenü "Second nav level" erst aufklappt, wenn das zugehörige "First nav level" angeklickt und dessen Seite geladen wird. Dies funktioniert mit dem unteren Code. Aber nur, wenn sich "Navigation" und "home" auf der gleichen Ebene befinden, was ich ja wie im Seitenbaum ersichtlich, nicht vorliegen habe. Theoretisch müsste der entryLevel doch dann nur auf 3 gesetzt werden (siehe "experimentieren"-Teil), dies funktioniert aber nicht.
Vielleicht hilft's noch weiter, wenn ich sage, dass ich Typo3 4.0 benutze.
Hier der TS-Code (im HTML-Anteil um Klassen und Pfadangaben gekürzt):
# Menu 1 cObject
lib.nav = HMENU
lib.nav.entryLevel = 2
lib.nav.special = directory
lib.nav.special.value = 65
lib.nav.wrap = <table> | </table>
# First level menu-object, textual
lib.nav.1 = TMENU
lib.nav.1 {
# Normal state properties
NO.allWrap = <td><img src="..."></td><td><div> | </div></td></tr>
# Enable active state and set properties:
ACT = 1
ACT.allWrap = <td><img src="..."></td><td><div> | </div></td></tr>
}
# Second level menu-object, textual
lib.nav.2 = TMENU
lib.nav.2 {
# Normal state properties
NO.allWrap = <tr><td><img src="..."></td><td><div> | </div></td></tr>
# Enable active state and set properties:
ACT = 1
ACT.allWrap = <tr><td><img src="..."></td><td><div> | </div></td></tr>
}
Ich denke special = directory und entryLevel zusammen bringen hier das Problem.
Auf welcher Seite ist denn das root-Template mit diesem Menü definiert (-> wahrscheinlich auf der Seite [root] oder)?
Welche Seite hat die ID 65 ?
Versuchs mal ohne entryLevel und bei special.value mit der ID der Seite Navigation3.
Gruß
Christian
Dass entryLevel das Problem sei (man soll ja eigentlich nicht beides zusammen verwenden), habe ich irgendwo auch schonmal gelesen und daher auch schon ausgetestet. Das Problem ist: Wenn's funktioniert (Home und Navigation auf einer Ebene vorausgesetzt), dann funktioniert's nur, wenn ich auch den entryLevel setze.
Das Menü ist auf [root] definiert, genau.
Die Seite mit der ID 65 ist in diesem Baum nicht verzeichnet. Es handelt sich um eine Test-"Navigation"-Seite, die auf einer Ebene mit Home liegt. Das Script hat in diesem Fall tadellos funktioniert.
Ganz ohne entryLevel (und natürlich auch mit der richtigen Navigation3-ID) bleibt das Problem leider genauso weiter bestehen. 🙁
sind die Templates die du hiernach:
login, home und die Unterseiten von [content] haben jeweils unterschiedliche Layouts, daher der Aufbau.
hast root-Templates oder extension? das könnte nämlich noch ein Problem sein. Und Check mal unter page properties ob die Pages jeweils "start of website" sind. Ich vermute aber mal es liegt daran, dass du root-Templates für jeden Bereich erstellt hast.
Ich benutze TemplaVoila, daher gibt es weder Root- noch Extension-Templates in den Unterseiten. Die Layouts werden in der jeweiligen Seitenkonfiguration eingefügt.
Was ist genau mit "Start of Website" gemeint? Den Eintrag finde ich nicht.
Tja bei TemplaVoila muss ich eigentlich passen...
Bin nicht sicher ob das "Start of Website" heißt. Wenn du da bist, wo du für eine Seite den Typ einstellen kannst und die zweite Optionspalette eingeschaltet hast, gibts eine Checkbox die auf deutsch "Ist Anfang der Webseite:" heißt.
hat sich das problem bereits lösen lassen!?
dummerweise steht ich direkt vor dem gleichen problem
# navigation
lib.mainMenu = HMENU
lib.mainMenu {
special = directory
special.value = 3
excludeUidList = 13,14,15
1 = TMENU
1 {
wrap =<ul>|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li class="ACT">|</li>
}
noBlur = 1
}
2 = TMENU
2 {
wrap =<ul>|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li class="ACT2">|</li>
}
noBlur = 1
}
}
leider wird nur die erste menuebene angezeigt, wobei es bei dem einen oder anderen menupunkt ne unterebene gibt!...
hilfe.-..
aufklappen geht nicht wenns ein special = directory gibt
is glaub auch im bugtracker eingetragen!
=> http://bugs.typo3.org/view.php?id=3224
special = list sollte abhilfe schaffen, aber bitte sewlber lesn
georg
nein, ein blick in die TSREF hats auch getan
(TMENU)
expAll = 1
das ist die ganze magie...
Hallo!
Hab' das Ganze jetzt anders gelöst, indem ich den Seitenbaum umgestellt habe. Dabei wird ausgenutzt, dass man mithilfe von TemplaVoila auf einer Seite sowohl das Template für die Seite selbst als auch das für die Unterseiten angeben kann:
-- [root] (id: 1)
---- login (id: 2)
------ home (id: 3)
-------- Navigation 1 (id: 4)
-------- Navigation 2 (id: 5)
-------- First nav level 1 bis n
---------- Second nav level 1 bis n
login enthält hier sein eigenes Template, home enthält einmal das Template für sich selbst und einmal das Template für seine Unterseiten. So ist es auch egal, dass ich mit entryLevel = 3 nicht weiterkomme (denn das geht immernoch nicht). Damit Navigation 1 und 2 nicht mit im Menü auftauchen, werden sie im Code explizit mit excludeUidList ausgeschlossen. Man könnte in der Seitenkonfiguration auch "Hide in Menu" auswählen. Dies ist aber unpraktisch, wenn die Seiten dennoch woanders z.B. in Breadcrumbs auftauchen sollen.
# Navigation menu
lib.nav = HMENU
lib.nav {
entryLevel = 2
excludeUidList = 4,5
wrap = ...
}
# First level menu-object, textual
lib.nav.1 = TMENU
lib.nav.1 {
# Normal state properties
NO.allWrap = ...
# Enable active state and set properties:
ACT = 1
ACT.allWrap = ...
}
# Second level menu-object of navigation, textual
lib.nav.2 = TMENU
lib.nav.2 {
# Normal state properties
NO.allWrap = ...
# Enable active state and set properties:
ACT = 1
ACT.allWrap = ...
}
# Third level menu-object of navigation, textual
lib.nav.3 = TMENU
lib.nav.3 {
wrap = ...
# Normal state properties
NO.allWrap = ...
# Enable active state and set properties:
ACT = 1
ACT.allWrap = ...
}
Das Menü geht übrigens hinab bis Level vier. Dieser vierte Menü-Level wird an einer anderen Stelle der Seite aufgerufen, losgelöst von den anderen drei Leveln. Dafür wird ein eigenes HMENU benötigt (ich schreib's einfach noch als Erweiterung der Lösung dazu)
# Fourth level menu
lib.4lvlnav = HMENU
lib.4lvlnav.entryLevel = 5
lib.4lvlnav.1 = TMENU
lib.4lvlnav.1 {
NO = 1
NO.allWrap = ...
ACT = 1
ACT.ATagParams = ...
ACT.allWrap = ...
}
Danke auch für die Hilfe und einige Denkanstöße 😉
_o3_ schrieb
nein, ein blick in die TSREF hats auch getan
(TMENU)
expAll = 1
das ist die ganze magie...
Dann war's doch nicht das selbe Problem, was ich hatte 😉 (Steht schon in der Überschrift 😉 )