Zum Inhalt springen

Submenü der Inhaltsböcke (TMENU)

Erstellt am 7. Oktober 2002 · 5 Antworten · letzte Antwort am 1. Dezember 2002

Tags: Frage

inf8 ·

Hallo!

Ich weiss, über Menüs wurde hier schon allerhand geschrieben. Zu folgendem Problem habe ich leider noch keinen Beitrag gefunden:
Ich habe eine Webseite, welche aus nur einer Seiten-Ebene besteht (keine Untermenüs).
Nun möchte ich ein Text-Menü (TMENU) erstellen, welches in der 1. Ebene die Seiten und auf der 2. Ebene die Inhalte der Seite darstellt. Durch Klicken auf ein Inhalts-Link soll auf den entsprechenden Inhalt gesprungen werden.

Also etwa so:

|- Page 1
|  |- Inhalt 1
|  |- Inhalt 2
|  - Inhalt 3
|- Page 2
- Page 3

Ebene 1 ist kein Problem, wie mache ich aber die zweite Ebene mit den Block-Links?
Wie geht denn das? Ist das mit Typo3 überhaupt möglich?

Vielen Dank für die Hilfe!
Hannes

Blacky ·

Hallo,
das geht. Am Beispiel eines Content-Elements vom Typ Menü/Sitemap, Menü der Unterseiten mit Inhalt kannst Du die Funktionalität prüfen.
Wenn Du das in ein Template einfügen willst, studiere die static templates styles.content.get und styles.content(default), speziell menu-Einträge. Dort irgendwo findest Du die Funktionalität,
die Du brauchst.

Gruß

Andreas Schwarzkopf

inf8 ·

Vielen Dank für die Antwort! Ich habe maich da mal umgesehen und im content (default) folgenden Code gefunden:

1061: # CType: menu 
1062: tt_content.menu = COA 
1063: tt_content.menu { 
1064:   10 = < lib.stdheader 
1065:   20 = CASE 
1066:   20 { 
1067:     key.field = menu_type 
1068: 
1069:     default = HMENU 
1070:     default { 
1071:       special = list 
1072:       special.value.field = pages 
1073:       1 = TMENU 
1074:       1.NO.linkWrap =  {$content.menuWrap} 
1075:       1.NO.allWrap = {$content.menuAllWrap} 
1076:       1.NO.ATagBeforeWrap = 1 
1077:       1.target = {$content.pageFrameObj} 
1078:     } 
1079: 
1080:     1 < .default 
1081:     1.special = directory 
1082: 
1083:     2 < styles.sitemap.text 
1084: 
1085:     3 < styles.insertContent 
1086:     3.select.andWhere = sectionIndex!=0 
1087:     3.select.pidInList.override.field = pages 
1088:     3.renderObj = TEXT 
1089:     3.renderObj { 
1090:       fieldRequired = header 
1091:       trim=1 
1092:       field = header 
1093:       wrap = {$content.menuWrap} 
1094:       typolink.parameter.field = pid 
1095:       typolink.section.field = uid 
1096:       wrap2 = |
 
1097:     } 
1098: 
1099:     4 < .1 
1100:     4.1.NO { 
1101:       after.data = field : abstract // field : description // field : subtitle 
1102:       after.htmlSpecialChars = 1 
1103:       afterWrap = 
{$content.subMenuWrap} 
1104:     } 
1105: 
1106:     5 < .default 
1107:     5.special = updated 
1108:     5.special { 
1109:       maxAge = 3600*24*7 
1110:       excludeNoSearchPages = 1 
1111:     } 
1112: 
1113:     6 < .default 
1114:     6.special = keywords 
1115:     6.special { 
1116:       excludeNoSearchPages = 1 
1117:     } 
1118: 
1119:     7 < .1 
1120:     7.1.expAll = 1 
1121:     7.1.wrap = |
 
1122:     7.2 < .7.1 
1123:     7.2.sectionIndex = 1 
1124:     7.2.sectionIndex.type = header 
1125:     7.2.NO.linkWrap =  {$content.subMenuWrap} 
1126:   } 
1127: 
1128:   20.stdWrap.editIcons = tt_content: menu_type,pages 
1129:   20.stdWrap.editIcons.iconTitle=Edit linkmenu 
1130: }

Ich nehme an, den für mich wichtige Teil beginnt bei Zeile 1085. Aber wie bekomme ich nun das in mein Menü?
Ich habe schon folgendes versucht - ohne Erfolg:

# MENU STUFE 2
  marks.MENU_LEFT.2 = COA
  marks.MENU_LEFT.2 < styles.insertContent
  marks.MENU_LEFT.2 {
    select.andWhere = sectionIndex!=0 
    select.pidInList.override.field = pages 
    renderObj = TEXT 
    renderObj { 
      fieldRequired = header 
      trim=1 
      field = header 
      wrap = {$content.menuWrap} 
      typolink.parameter.field = pid 
      typolink.section.field = uid 
      wrap2 = |
 
    } 
  }

Schon jetzt herzlichen Dank für die Hilfe... 🙂

Hannes

[ Diese Nachricht wurde geändert von: inf8 am 2002-10-08 11:16 ]

Blacky ·

das geht auch anders:

marks.MENU_LEFT.2 < tt_content.menu.20.3
(an der Stelle ist ja alles schon aufgeführt, wenn du es nichts veränderst, dann reicht der Satz aus)

nur dummerweise ist dieses Ding nich vom Typ HMENU, sondern was anderes. Deshalb kann es leider nicht so ohne weiteres funktionieren. Da musst Du schon weiter grübeln, wie dieses styles.insertContent ins Menü eingebaut werden kann.

Gruß

Andreas Schwarzkopf
http://www.meinsystem.de

inf8 ·

Ah, ich seh schon. Bin eben doch noch ein TS Newbie... 🙂
Danke jedenfalls für die Hilfe, werde es mal ausprobieren.

Gruss
Hannes

jhein ·

Hmm, ich habe es irgendwie hinbekommen. Anscheinend muss man die darüberliegende Menuebene mit in das Menü nehmen und dann die oberste Ebene ausblenden.

So hats bei mir funktioniert:

// MENU_NEWS
temp.customNewsMenu = HMENU
temp.customNewsMenu {
  special = list
  special.value = 44
  maxItems = 3

  1 = TMENU
  1.expAll = 1
  1.NO.doNotShowLink = 1
  
  2 = TMENU
  2.sectionIndex = 1
  2.sectionIndex.type = header
  2.NO.linkWrap = | <br> |*| | <br> |*| |
  2.NO.ATagParams = class="newshead"
}

Gruß,
Julian