Zum Inhalt springen

Mehrere Menüs ACT setzen

Erstellt am 17. Juli 2007 · 3 Antworten · letzte Antwort am 18. Juli 2007

Tags: Frage

Desmond ·

Hallo zusammen

Ich habe den Auftrag ein Menü zu erstellen welches mehrere Punkte im Zustand ACT hat. Als Beispiel dient diese Seite: http://www.gkaufmann.ch

Wenn man also auf den Punkt 3 klickt, müssen Punkt 1 und 2 ebenfalls "aktiv" sein. Wie kann ich das lösen?

Für eure Hilfe danke ich im voraus.

brokemeister ·

Du kannst die Seite als Rootline darstellen...
Dann geht es mit es ganz einfach mit einem HMENU.

Aber es kommt ja auf die Seiteanzahl und die genaue Struktur an, ob sich das mit der Rootline lohnt...

Desmond ·

Hmmm... Ich weiss nicht ob ich dich richtig verstanden habe. Meinst du eine solche Struktur?
Seite 1
- Unterseite 1.1
-- Unterseite 1.1.1
--- Unterseite 1.1.1.1

usw.

Da würde theoretisch funktionieren... die Seite ist für 3 bis 7 Menü Punkte ausgelegt.

Wie mache ich aber eine Navigation, welche eine solche Struktur darstellt? Also ich meine jetzt den TypoScript Code. im Template. Ich benutze übrigens TemplaVoila.

Desmond ·

So... ich habe es nun anders gelöst. Habe mit "IProcFunc" eine PHP-Funktion eingefügt. Das ganze sieht dann so aus:
Der Typoscript Teil:

## Menu [Begin]
includeLibs.user_deineklasse = fileadmin/scripts/class.user_navichange.php

lib.mainMenu = HMENU
lib.mainMenu.entryLevel = 0

lib.mainMenu.1 = TMENU
lib.mainMenu.1.IProcFunc = user_navichange->doit
lib.mainMenu.1.NO {
	allWrap = |
}
	
lib.mainMenu.1.ACT = 1
lib.mainMenu.1.ACT {
	allWrap = |
	ATagParams = class="aktiver_link"
}
## Menu [End]

Und die PHP-Funktion dazu:

class user_navichange{
	function doit($menuArr,$conf){
		//Abfrage der URL
		if($_SERVER["REQUEST_URI"] == "/"){
			$beginn = 1;
		}//if
		//Abfrage der globalen Var
		if(!isset($GLOBALS["AktivErreicht"])){
			$GLOBALS["AktivErreicht"] = 0;
		}//if
		//Wenn aktiver Link, gloable Var setzen
		if($menuArr["val"]["ATagParams"] == ' class="aktiver_link"'){
			$GLOBALS["AktivErreicht"] = 1;
		}//if
		//Wenn nicht Startseite und globale nicht gesetzt
		if($GLOBALS["AktivErreicht"] == 0 && $beginn != 1){
			$menuArr["parts"]["ATag_begin"] = '<a href="'.$menuArr["linkHREF"]["HREF"].'" onfocus="'.$menuArr["linkHREF"]["onFocus"].'" class="aktiver_link">';
		}//if
		
		return $menuArr;	
	}
}