Zum Inhalt springen

TMENU einmal aus Ankern einmal aus Unterseiten

Erstellt am 4. August 2010 · 6 Antworten · letzte Antwort am 6. September 2010

Tags: Frage

terrierace ·

Einen schönen Tag,

folgende Situation:
Eine Seitenstruktur mit momentan 2 Ebenen. Entsprechende Menüs für Unterseiten sind kein Problem. ABER: Mein Versuch für zwei meiner Seite ein Menü aus Ankern auf die Eigene Seite scheitern behaarlich.
Das Ankermenü allein funktioniert aber eben nicht in Kombination! #angry#
Den Knackpunkt sind die letzten paar Zeilen mit der Bedingung.
Unterscheiden tun sich die Beiden Menüs "menuZweiteEbene" und "menuZweiteEbeneAnker" nur durch die beiden Zeilen
"
sectionIndex = true
sectionIndex = header
". Doch mein Versuch nur die beiden Zeilen durch eine Bedingung für die beiden Seiten zu aktivieren ist ebenfalls gescheitert.

Kann das PlugIn "realURL" da vieleicht mit zwischenfunkten? Die Seiten-IDs bleiben doch aber geleich! #paralyzed#

menuZweiteEbene = TMENU
menuZweiteEbene {
    wrap = <ul class="ZweiteEbene">|</ul>
    
    NO = 1
    NO.stdWrap2.wrap = <li class="nav_subelem"> | </li>
  
    CUR = 1
    CUR < .NO
    CUR.ATagParams = class="activ"
    CUR.stdWrap.wrap = |
    
    ACT = 1
    ACT = .CUR  
}

menuZweiteEbeneAnker = TMENU
menuZweiteEbeneAnker {
    wrap = <ul class="ZweiteEbene">|</ul>
    sectionIndex = true
    sectionIndex = header
      
      
    NO = 1
    NO.stdWrap2.wrap = <li class="nav_subelem_anker"> | </li>
  
    CUR = 1
    CUR < .NO
    CUR.ATagParams = class="activ"
    CUR.stdWrap.wrap = |
    
    ACT = 1
    ACT = .CUR  
  }

hauptmenu = COA
hauptmenu {
  wrap = <ul> | </ul>
  entryLevel = 0
 
  5 < startseiteneintrag
  
# Seitenbaum
  10 = HMENU
  10 {
  entryLevel = 0
  
# erste Ebene
  1 < menuErsteEbene
       
# zweite Ebene
  2 < menuZweiteEbene
   
#[PIDinRootline = 18]
[globalVar = TSFE:id=18, TSFE:id=19]
    2 < menuZweiteEbeneAnker
[end]
    
  }
}

Any hints?

Unbekannter Benutzer ·

Hallo terrierace,

ich hatte das selbe Problem und konnte es mit der Hilfe von kompetenten Typo3 IRC-lern relativ schnell lösen!

Mit dem Section-Index hatte ich gar keinen Erfolg, daher habe ich folgendes Snippet verwendet:
(Quelle)

# TS Code
temp.anchorMenu = CONTENT
temp.anchorMenu {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    where = colPos=0
    languageField=sys_language_uid
  }
  wrap = <ul>|</ul>
  renderObj = TEXT
  renderObj {
    field = header   
    dataWrap= <li><a href="#c{field:uid}">|</a> </li>
  } 
}

Angepasst und richtig eingefügt sieht das ganze in meinem Beispiel dann so aus:

## navSub [Begin]
lib.navSub = COA
lib.navSub.10 = HMENU
lib.navSub.10.entryLevel = 1
lib.navSub.10.wrap = <ul>|</ul>
lib.navSub.10.1 = TMENU
lib.navSub.10.1.NO = 1
lib.navSub.10.1.NO {
  allWrap = <li>|</li>
}
lib.navSub.10.1.ACT = 1
lib.navSub.10.1.ACT {
  allWrap = <li>|</li>
}
temp.navSubAnchors = CONTENT
temp.navSubAnchors {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    where = colPos=0
    languageField=sys_language_uid
  }
  wrap = <ul>|</ul>
  renderObj = TEXT
  renderObj {
    field = header  
    dataWrap= <li><a href="#c{field:uid}">|</a> </li>
  }
}
lib.navSub.10.1.ACT.after.cObject < temp.navSubAnchors
## navSub [End]

Das ganze gibt dann folgendes Menü aus:
> Seite 1
> Seite 2 (ACT)
>> Anker 1 von Seite 2
>> Anker 2 von Seite 2
>> ...
> Seite 3
> ...

Grüße, -dc
www.domaintechnik.at

terrierace ·

@shado vielen dank für den Lösungsansatz

Ich hab das Problem Montag dann doch endlich selbst gelöst.

Man muss die Bedingung:

#[PIDinRootline = 18]
[globalVar = TSFE:id=18, TSFE:id=19]
    2 < menuZweiteEbeneAnker
[end]

außerhalb jeglicher Objektdefinition (in meinem fall von "hauptmenu") machen! #giggle#
Meine Lösung:

menuZweiteEbeneAnker = TMENU
menuZweiteEbeneAnker {
    wrap = <ul class="ZweiteEbene">|</ul>
    sectionIndex = true      
      
    NO = 1
    NO.stdWrap2.wrap = <li class="nav_subelem_anker"> | </li>
  
    CUR = 1
    CUR < .NO
    CUR.ATagParams = class="activ"
    CUR.stdWrap.wrap = |
    
    ACT = 1
    ACT = .CUR  
  }

hauptmenu = COA
hauptmenu {
  wrap = <ul> | </ul>
  entryLevel = 0
 
  5 < startseiteneintrag
  
# Seitenbaum
  10 = HMENU
  10 {
  entryLevel = 0
  
# erste Ebene
  1 < menuErsteEbene
       
# zweite Ebene
  2 < menuZweiteEbene
    
  }
}


[globalVar = TSFE:id = 18, TSFE:id = 19]
    hauptmenu.10.2 < menuZweiteEbeneAnker
[global]

Entscheidend ist die Verlegung der letzten 3 Zeilen aus der Objektdefinition heraus. #angry#
Kann man leider nirgendwo nachlesen. Also hab ich ein Untermenü mit Ankern und eins ohne definiert und dann die Bedingung gesetzt wann das Untermenü durch das Ankermenü ersetzt werden soll.

Trotzdem nochmal vielen Dank für deine Lösung.

terrierace ·

@igorshmigor danke für den Hinweis auf die Bücher.
Leider scheint sich keiner so wirklich dieser Problematik bewusst zu sein, da weder hier noch in anderen Foren das als Fehlerquelle erkannt wurde.
Allen interessierten Mitlesern trotzdem danke und viel Spass beim basteln. 😃

igorshmigor ·
terrierace schrieb

Leider scheint sich keiner so wirklich dieser Problematik bewusst zu sein, [...]

Das würde ich so nicht sagen. Gib mal "conditions klammern" als Suchbegriff in diesem Forum ein. Es wurde schon in vielen Threads darauf hingewiesen.

terrierace ·

Tja, jetzt wo ich weiss das es an den Klammern lag kann ich natürlich auch die richtigen Suchbegriffe eingeben.
Hinterher ist man immer schlauer #giggle#
Hät ja auch sein können, dass mein eigentlicher Ansatz schon von der Logik her falsch war.
Meine Äußerung hat sich lediglich auf das Erkennen des Zusammenhangs zwischen meinem Code-Problem und dem Thema "conditions klammern" bezogen und dieses Erkennen hat nun mal weder hier im Forum noch in anderen funktioniert.

Ich danke jedenfalls allen die sich bemüht haben und die Lösung ist ja auch gefunden.
Was will man mehr!?