Zum Inhalt springen

rgaccordion/Menü macht nicht was ich will

Erstellt am 26. September 2008 · 9 Antworten · letzte Antwort am 15. Dezember 2009

Tags: Frage

bix ·

Hallo Georg,
ich möchte verhindern, dass das Menü beim ersten Aufruf aufgeklappt ist. Hab schon einen Thread gefunden, der das über Auskommentieren löst (#73208) - irgendwie will das bei mir nicht klappen...

Mein menu.js sieht jetzt so aus und es klappt immernoch aus beim ersten Aufruf:

var accordion= '';var accordion2 = '';

window.addEvent('domready', function(){

accordion = new Accordion('span.toggle', 'ul.content', {
	display:false,
	alwaysHide:true,
	opacity: false,
	onActive: function(toggler, element){
		toggler.addClass('act');
		parentelement = element;
	},

	onBackground: function(toggler, element){
		toggler.removeClass('act');		
	}
});	

accordion2 = new Accordion('span.toggle2', 'ul.content2', {
	display:false,
	alwaysHide:true,
	opacity: false,
	onActive: function(toggler, element){
		toggler.addClass('act2');
		parentelement.setStyle('height', 'auto');
	},

	onBackground: function(toggler, element){
		toggler.removeClass('act2');		
	}
});
//ul#top > li

  function checkHash(){
    var found = false;
    var offset = 0;
    var tmp = 0;

    $$('#rgaccordmenu li span.toggle').each(function(anchorid, i) {
      if (anchorid.hasClass('open') && !found) {
          accordion.display(offset);
          found = true;
      } else {
        offset++;
      }
    });

//    if (!found) accordion.display(0);

  }


  function checkHash2(){
    var found = false;
    var offset = 0;
    var tmp = 0;

    $$(' span.toggle2').each(function(anchorid, i) {

      if (anchorid.hasClass('open') && !found) {

          accordion2.display(offset);
          found = true;
      } else {
        offset++;
      }
    });
//    if (!found) accordion2.display(0);
  }

  
  
var x = new Chain();
x.chain(checkHash);  
x.chain(checkHash2);
x.callChain();
x.callChain.delay(1500, x);

});

Außerdem soll immer der Seitenbaum aufgeklappt bleiben, in dem sich der User gerade befindet.

Danke für deine Hilfe!
bix

ksr ·

Hallo,

leider hab ich das selbe Problem... Bin auch gerade dabei, das Menü einzubauen, an sich funktioniert es auch (Auf- und Einklappen, Seitenaufruf), aber beim Starten ist es immer ausgeklappt und nach jedem Seitenaufruf springt es auf diesen Zustand vom Start zurück...

Danke für einen Tip und beste Grüße,
ksr

just2b ·

Hallo,

das aufklappen hängt von der gesetzten Klasse ab, die wird ja im js überprüft funktion checkHash() + checkHash2(). doctype muss auf xhtml sein

georg
PS: @bix: ich darf schon noch aussuchen wo und mit was ich meine freizeit verbringe und meine Freizeit kann ich nicht immer für das Forum opfern

bix ·

Hi,
ok. Verstehe. Jetzt bleibt das Menü beim start zu. Habe die Klasse "open" aus dem TS entfernt.

Wenn ich mit dem anpassen der Klassen fertig bin, werde ich das Ergebnis selbstversändlich hier posten.

bix

@just2b: Ich find es außerordentlich, dass du so viel Zeit in das Forum, deine Extensions und in die Weiterentwicklung von TYPO3 investierst.

bix ·

So, habe die TS jetzt wie folgt angepasst:

lib.accordionmenu = HMENU
lib.accordionmenu {
	special = list
	special.value = 2,3,4,5,6,7,8

	1 = TMENU
	1 {
		wrap = <ul id="rgaccordmenu">|</ul>
		noBlur = 1
		expAll = 1
		
		NO = 1
		NO.wrapItemAndSub = <li>|</li>
		NO.linkWrap = <span class="empty">|</span>
		
		IFSUB <.NO
		IFSUB.linkWrap = <span class="toggle">|</span>
		IFSUB.doNotLinkIt = 1

		ACTIFSUB <.IFSUB
		ACTIFSUB.linkWrap = <span class="open toggle">|</span>
	}
	
	2 <.1
	2 {
		wrap = <ul class="content">|</ul>
		NO.linkWrap >
		
		ACT = 1
		ACT.linkWrap = <span class="active">|</span>
		ACT.doNotLinkIt = 1
		
		IFSUB.linkWrap = <span class="toggle2">|</span>
		ACTIFSUB.linkWrap = <span class="toggle2">|</span>
	}
	
	3 <.2
	3 {
		wrap = <ul class="content2">|</ul>
	}
}

Das menü ist so immer im aktuellen Seitenbaum aufgeklappt und der Aktive Menüpunkt lässt sich per CSS definieren.

Eine Frage bleibt aber dennoch offen:
Das Menü lädt bei jedem neuen Seitenauf nach, d.h. es klappt kurz komplett zu und dann wieder im aktuellen Seitenbaum auf.
Kannst du mir nen Tipp geben, wie ich das unterbinden kann?

Danke
bix

ksr ·

Danke für die Hinweise!
Es geht schon ein bisschen besser (springt nicht mehr auf den Startzustand!), mal sehen, den Rest müßte ich jetzt ja selbst lösen können...

dfluess ·

Hallo,

ich suche auch die Möglichkeit, dass das Menü nicht immer von selbst aufklappt.

Die Website ist schlicht gehalten und der Kunde möchte erst bei einem Klick die nächste Ebene im Menü geöffnet sehen. Gibt es da schon eine Lösung?

Danke 🙂

fkotzek4 ·

Hallo,

ich habe auch das Menü benutzt, welches mir sehr gut gefällt. Kompliment!
Das einzige was ich nicht hinbekomme, ist dass der Baum direkt nach dem Neuladen direkt an der richtigen Stelle geöffnet ist und nicht sich nach und nach erst öffnet.
Wenn ich just2b richtig verstanden habe, gibt es keine Möglichkeit das zu bewerkstelligen. Richtig?

Vielen Dank im Voraus.
fkotzek4