Zum Inhalt springen

HMENU, userFunction, Submenu

Erstellt am 14. August 2014 · 5 Antworten · letzte Antwort am 19. August 2014

Tags: Frage

volk0r ·

hi,

ich habe eine "gesonderte" anforderung für eine navigations struktur. es gibt folgenden seitenbaum:

1. seite
1.1 unterseite
1.1.1 unter unterseite1
1.1.2 unter unterseite2
1.1.3 unter unterseite3

die anforderung:

"unterseite" selbst ist keine eigene seite, sondern eine sprungmarke (anchor) auf "seite".

lösungsansatz:

ich gebe dem redakteur die möglichkeit, bei einer seite als eigenschaft ein content element anzugeben. auf basis dieser content element id setze ich dann den link selbst wie folgt:

<a href="/seite.html#c123">Unterseite</a>

das alles klappt, wie gewünscht. folgendes problem habe ich allerdings, wenn bei einer unterseite keine untermenus enthalten sind, wird (aus mir unerfindlichen gründen) einfach selbst ein sub menu eingefügt beginnend mit der rootpage id (1), was natürlich nicht korrekt ist. ich vermute das es am entrylevel liegt, konnte dies aber nicht wirklich beheben.

mein typoscript sieht wie folgt aus:

includeLibs.jumpToNavigation = EXT:gdvhlpr/Classes/UserFunctions/jumpToNavigation.php

lib.test = COA
lib.test {
	10 = HMENU
	10 {
		entryLevel = -2
		special = userfunction
		special.userFunc = jumpToNavigation->makeMenuArray
		
        1 = TMENU
        1 {
            wrap = <ul>|</ul>
            expAll = 1
            noBlur = 1
            NO = 1
            NO {
                ATagTitle.field = abstract // description // title
                ATagBeforeWrap = 1
                wrapItemAndSub = <li>|</li>
            }
            
			ACT < .NO
            
			ACT {
                wrapItemAndSub = <li class="active">|</li>
            }
			
            CUR < .ACT
			
            IFSUB < .NO
            IFSUB {
                wrapItemAndSub = <li class="has-sub">|</li>
            }
            
			ACTIFSUB < .IFSUB
            ACTIFSUB {
                wrapItemAndSub = <li class="active has-sub">|</li>
            }
            
			CURIFSUB < .ACTIFSUB
        }
		
        2 < .1
        2 {
            wrap =  <ul>|</ul>
            IFSUB >
            ACTIFSUB >
            CURIFSUB >
        }
	}
}

das array, was von meine funktion zurückgegeben wird enthält nur die einträge die es tatsächlich gibt.

hat jemand eine idee, oder evtl. sogar einen anderen lösungsansatz?

danke und lg, volker.

volk0r ·

hi,

hilf mir bitte auf die sprünge, wo genau hilft das bei meinem problem, das submenus aus der root ebene erzeugt werden, obwohl ich das gar nicht will? _SUB_MENU kann ich auch nicht einfach "überschreiben".

jenses ·

Wer lesen kann, ist klar im Vorteil.

Ich hab doch geschrieben: "(siehe Anmerkung)"

ANMERKUNG: Setzen Sie nicht die Eigenschaft .entryLevel für ein HMENU, wenn Sie diese Option benutzen! Beachten Sie auch, dass hier Seiten für die oberste Menüebene gewählt werden. Untermenüs mit menuObjects 2+ werden wie üblich erzeugt.

"wenn Sie diese Option benutzen" meint in diesem Fall HMENU.special,
also: niemals HMENU.special UND HMENU.entryLevel gleichzeitig benutzen,
alles klar?

volk0r ·

soweit alles klar. allerdings löst das mein problem ja nicht. wenn ich entrylevel weglasse, was ich eigentlich auch habe, zeigt er mir dennoch die oberste ebene an, was ich ja nicht will.

jenses ·

Da niemand weiß, was du in deiner userfunc jumpToNavigation->makeMenuArray veranstaltest mit dem Menu-Array, wird man dir wohl auch nicht so recht weiterhelfen können...