Zum Inhalt springen

zweigeteiltes Menü

Erstellt am 2. Juli 2006 · 7 Antworten · letzte Antwort am 4. Juli 2006

Tags: Frage

aaffaa ·

Hallo Leute. Ich will ein zweigeteiltes Menü auf meiner Seite haben. Der erste Teil zeigt alle parent pages an, der zweite Teil die jeweiligen Subpages:

|--Root
| |--ThemeA
| | |--SubA.1
| | \--SubA.2
| |--ThemeB
| | |--SubB.1
| | \--SubB.2
| |
...

Wenn die Seite ThemeA angeklickt wird, wird der entsprechende Eintrag im ersten Menüteil auf ACT gesetzt. Wenn ich nun auf SubA.1 oder SubA.2 klicke, soll aber auch ThemeA im ersten Menüteil auf ACT gesetzt werden... wird's aber nicht.
Ich benutze für die beiden Menüs jeweils ein eigenes HMENU-Objekt. Ist das der Fehler? Hat jemand einen Tip, wie ich die Spielerei hinbekomme?

steffenk ·

Du kannst ohne weiteres 2 HMENUs erzeugen. Wenn die ACT-Eigenschaft definiert wurde, so wird auch der aktuelle Hauptpunkt ausgezeichnet.

MENU = COA
MENU {
   10 = HMENU
   10.entryLevel = 1
   10.1 = TMENU
   10.1.NO { ...}
   10.1.ACT {...}
   10.1.ACT = 1

   20 = HMENU
   20.entryLevel = 2
   20.1=TMENU
   ...
   20.2 < .20.1
   20.3 < .20.2
   ...
}
aaffaa ·

Gehen wir davon aus, dass die Seite Root (nicht das wirkliche Root, sondern eine ganz normale Page, tschuldigung für die Verwirrung) die ID = 1 hat, ThemeA die ID = 2 und ThemeB ID = 3. Die Unterseiten SubA.1 und SubA.2 mögen ID = 10 bzw. 11 haben. Die unwesentlichen Details aus dem TypoScript mal außen vorgelassen sieht dass dann so aus:

# navi_name cObject
temp.navi_name = HMENU
temp.navi_name {
  special = directory
  special.value = 1
}

# First level menu-object, textual
temp.navi_name.1 = TMENU
temp.navi_name.1 {
  # Normal state properties
  NO.allWrap = <div class="navi_name_no"> | </div>
  NO.stdWrap.htmlSpecialChars = 1 
  # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <div class="navi_name_act"> | </div>
  ACT.stdWrap.htmlSpecialChars = 1
}



# navi_area cObject
temp.navi_area = HMENU
temp.navi_area {
  special = directory
  special.value = 2
}

# Second level menu-object, textual
temp.navi_area.1 = TMENU
temp.navi_area.1 {
  # Normal state properties
  NO.allWrap = <div class="navi_area_no"> | </div>
  NO.stdWrap.htmlSpecialChars = 1 
  # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <div class="navi_area_act"> | </div>
  ACT.stdWrap.htmlSpecialChars = 1 
}

Mit diesem Code funktioniert es nicht, dass wenn ich auf SubA.1 klicke, im ersten Menü ThemeA weiterhin ACT bleibt.

aaffaa ·

Funktioniert nicht. Wenn ich die special-Angaben rausnehme und nur entryLevel benutze, werden mir überhaupt keine Menüeinträge generiert.
Irgendwie muss es gehen, denn den Zustand hatte ich schon einmal irgendwie hinbekommen. Dann hatte ich die Templates auf andere gleichstrukturierte Seiten kopiert und angepasst und da hat es dann nicht mehr geklappt. Leider habe ich das alte Projekt nicht mehr, bin mir aber sicher, dass ich das nicht wirklich anders gemacht habe...

steffenk ·

sind das etwa 2 verschiedene Bäume ? Dann geht das sowieso nicht, ACT geht nur mit Unterseiten.

Wenn nicht dann poste mal ein Bild von Deinem Seitenbaum.

aaffaa ·

Neenee, das ist schon ein einziger Baum (wie am Anfang gepostet). Man kann sich das so vorstellen (Notation: Seitenname(beinhaltet_folgende_Seiten):

Typo3-Root(Main1,Main2);

Main1(ThemeA,ThemeB,ThemeC,...);
Main2( [keine Subsites] );

ThemeA(SubA.1, SubA.2, SubA.3, SubA.4);
ThemeB(SubB.1, SubB.2, SubB.3, SubB.4);
ThemeC(SubC.1, SubC.2, SubC.3, SubC.4);
...

Im ersten Menüblock auf der Webseite will ich folgendes haben (wenn ThemeA angeklickt ist):
ThemeA_ACT
ThemeB_NO
ThemeC_NO
...

Im zweiten Menüblock soll dann folgendes stehen:
SubA.1
SubA.2
SubA.3
SubA.4

Wenn ist meinetwegen auf SubA.2 klicke, werden alle Einträge im ersten Menüblock auf _NO gesetzt... ich will aber ThemeA als _ACT haben. Verständlich?

aaffaa ·

Ok, das Problem hat sich gelöst. Ich hatte leider jedes Template einer jeden Subseite (die Subseiten hatten jeweils unterschiedliche Templates) als Root gesetzt und somit meine Vorgänger weggeschmissen. Danke an alle Hilfebeisteuernden.