Zum Inhalt springen

Anker Menü - Problem bei der Darstellung

Erstellt am 21. Juni 2011 · 2 Antworten · letzte Antwort am 21. Juni 2011

Tags: Frage

Unbekannter Benutzer ·

Hallo Typo3-Freunde!

Ich arbeite mich gerade immer tiefer in T3+TS ein und muss gerade ein Menü erstellen, welches durch alle Anker einer Seite automatisch generiert werden soll.

Prinzipiell funktioniert mein TS auch schon (dank Google ein TS gefunden) aber ich habe noch zwei Punkte die ich nicht hin bekomme.

1. So soll es aussehen
Auf jeder Seite sind x Seitenelemente.
Über jeder Sektion innerhalb einer Seite soll die Ankernavigation erscheinen. Der Navipunkt zur aktuellen Sektion soll ein class-Attribut "aktiv" bekommen.

2. Was ich hinbekommen haben:
Über jeder Sektion wird die Anker-Navi angezeigt und eine unordered-List mit den Navi-Punkten angezeigt.
Jedoch fehlt immer zum aktuellen Element der Navi-Punkt und von allen vorherigen Element von der Seite (z.B. von Seite1) der Navi-Punkt.
Bsp.:
<ElementX> = Navi-Punkt eines Elements

Seite1
Element 1 von 4: <Element2> <Element3> <Element4>
Element 2 von 4: <Element3> <Element4>
Element 3 von 4: <Element4>
Element 4 von 4:

und so soll es aussehen:
Seite1
Element 1 von 4: <Element1 class="aktiv"> <Element2> <Element3> <Element4>
Element 2 von 4: <Element1> <Element2 class="aktiv"> <Element3> <Element4>
Element 3 von 4: <Element1> <Element2> <Element3 class="aktiv"> <Element4>
Element 4 von 4: <Element1> <Element2> <Element3> <Element4 class="aktiv">

Mit einem Standard-Menü aus dem Seitenbaum bekomme ich das hin, hier bin ich überfragt...
Hat mir hier jemand einen Rat?

### Bibliothek für Contentnavigation über Anker ###
lib.field_navigation = CONTENT
lib.field_navigation {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    selectFields = header
    # SQL-Abfrage auf die DB: 
    # Nicht versteckt + nicht gelöscht + col 0 (Spalte Normal) + kein Typ 'header'
    where = (NOT hidden) AND (NOT deleted) AND (colPos=0) AND NOT (CType='header')
    # fuer Sprachen
    languageField=sys_language_uid
  }
  renderObj = TEXT
  renderObj {
    # header Feld als Text nutzen
    field = header 
    # wrap um den Link
    wrap=<li>|</li>
    # generiert den Link zur aktuellen Seite
    typolink.parameter.field=pid
    # haengt die Nummer des Ankers an
    typolink.parameter.dataWrap=|#{field:uid}
    # nur wenn Überschrift vorhanden ist
    if.isTrue.field=header
  } 
# wrap um das komplette Menü
wrap = <ul class="navi">|</ul>
}
Unbekannter Benutzer ·

Okay, es scheint nicht an der Abfrage zu liegen...
Dort bekomme ich die richtige Anzahl an Elementen zurück geliefert... leider weiß ich nicht, wie ich mir das Ergebnis der Abfrage anzeigen kann, aber die EXT😃ebug Mysql DB hat mir gesagt das 5 Zeilen zurück geliefert wurden.
Daher scheint es an dem renderObj zu liegen.
Könnte es sein, das sich durch den mehrfachen Aufruf dieses TS in einer Seite ein Zeiger eines Arrays verschiebt?

HILFE!!! 🙁

Unbekannter Benutzer · · Beste Antwort

Ach ja, im TS ist noch eine Kleinigkeit nicht korrekt:

selectFields = header

muss sein:

selectFields = pid, uid, header

man kann natürlich auch diese Zeile komplett weglassen, dann werden alle Spalten abgefragt. Mir reichen aber diese drei Spalten.