Ergebnis 1 bis 5 von 5

Thema: Ungewolltes Öffnen des Untermenüs - Bug?

  1. #1
    Contao-Nutzer
    Registriert seit
    11.04.2010.
    Beiträge
    5

    Standard Ungewolltes Öffnen des Untermenüs - Bug?

    Hallo,

    ich habe diese Thema hier im Forum schon öfter angesprochen gefunden, jedoch habe ich nicht die Lösung für das Problem entdeckt.

    Es gibt bei dem Modul mootoolsnav, um das ich sehr dankbar bin, ein Problem wenn eine Seite aufgerufen wird, die im Menü versteckt ist. Ruft man solch eine Seite auf so wird der Menüpunkt aufgeklappt, der nach dem Aufgerufenen mit der versteckten Unterseite als erstes sichtbare Untermenüpunkte hat. Das klingt kompliziert deshalb vielleicht konkret an meiner Seite erklärt:
    http://www.tktbg.macciato-testen.de/

    Wählt man auf der Seite den Menupunkt Fotos kommt man zur Galerieübersicht. Wählt man eine Galerie aus, so wird eine Unterseite geöffnet, die im Menü versteckt ist. Nach dem Öffnen dieser Seite wird der Menüpunkt Kontakt ausgeklappt, weil dies der erste mit sichtbaren Untermenüpunkten ist. Den gleichen Erfolg erzielt man, wenn man einen Gästebucheintrag erstellen will. Die Seite mit dem Formular für einen neuen Gästebucheintrag ist im Menü auch versteckt.

    Im Backend habe ich für die Navigation als Stoplevel die 2 eingetragen und ein Häkchen bei Hardlimit gesetzt.

    Wie bereits erwähnt, das Problem wurde schon mehrfach angesprochen und sollte ich blinderweise die Lösung übersehen haben so tut mir das Öffnen des neuen Themas leid.

    Ich würde das tolle Modul gerne weiter einsetzen und aus diesem Grund hoffe ich, dass mir jemand (vielleicht der Entwickler?) mit einer Lösung weiterhelfen kann.

    Hierfür schon ein mal vielen Dank im Voraus.

  2. #2
    Contao-Nutzer
    Registriert seit
    11.04.2010.
    Beiträge
    5

    Standard Und hier kommt die Lösung (zum Bug?)

    Ich habe mich heute nochmal hingesetzt und das Ganze mal durchgedacht. Ich besitze mittlerweile schon langjährige Erfahrung in Sachen Softwareentwicklung, allerdings habe ich mit PHP noch so gut wie nichts gemacht und schon gar kein Modul für Typolight geschrieben. Deshalb vergebt mir, wenn die Lösung des Problems aus Sicht eines Senior-PHP-Typolight-Modul-Programmierers nicht optimal ist. Jedenfalls sollte meine Lösung updatesicher sein, da sie sich alleinig auf die Datei nav_moomenu.tpl bezieht, von der man bitte eine Kopie im allseits bekannten Ordner templates auf der obersten Verzeichnisebene anlegt.

    Nun aber zur Lösung:

    Das Problem ist, und das wurde auch schon in anderen Forumsbeiträgen geschrieben, dass bei einer Unterseite, die nicht im Menü erscheinen soll, die Variable $GLOBALS['activemenuaccord'] nicht auf -1 gesetzt wird. Dies hat das Fehlverhalten des Menüs zur Folge, das ich oben beschrieben habe. Die Variable permanent auf diesen Wert zu setzen ist meines Erachtens eine unschöne Lösung und hat in meinem Fall auch nicht zum gewünschten Verhalten des Menüs geführt.

    Nun zu den erforderlichen Ergänzungen in der Datei nav_moomenu.tpl

    Bitte ganz zu Beginn
    PHP-Code:
    <?php
      $togglerlevel 
    'level_1';
      
    $menulevel 'level_2';        
    ?>
    durch

    PHP-Code:
    <?php

      $togglerlevel 
    'level_1';
      
    $menulevel 'level_2';
      
    $act_request_in_menu false;
      
    $request ampersand($this->Environment->requestENCODE_AMPERSANDS);        
    ?>
    ersetzen.

    Nach der Zeile

    PHP-Code:
    <?php foreach($this->items as $item): ?>
    bitte folgendes ergänzen:
    PHP-Code:
    <?php

    if(strpos($request$item['href']) !== false){$act_request_in_menu true;}

    ?>
    Am Ende der Datei bitte nach
    PHP-Code:
    <?php endforeach; ?>
    folgendes einfügen:
    PHP-Code:
    <?php

    if(!$act_request_in_menu){$GLOBALS['activemenuaccord']=-1;}

    ?>
    Mit meiner Lösung wird die -1 nur gesetzt wenn die angeforderte Seite nicht im Menü enthalten ist.

    Nur aus Interesse: Sollte der Auto des Moduls mal hier vorbeischauen, würde ich mich über ein kurzes Feedback zu meiner Lösung des Bugs, sofern es denn eine ist, freuen. Vielleicht ist das auch unnötig kompliziert und wäre einfacher gegangen...

    Mein Problem ist jedenfalls gelöst. Ich hoffe, dass ich auch anderen weiterhelfen kann.
    Geändert von tsuetterlin (16.04.2010 um 16:30 Uhr)

  3. #3
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich bin schon hier, hab mich nur noch nicht damit beschäftigt ;-)
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  4. #4
    Contao-Nutzer
    Registriert seit
    11.04.2010.
    Beiträge
    5

    Standard

    meine Lösung scheint wohl doch noch nicht so perfekt zu sein...ich arbeite dran...

  5. #5
    Contao-Nutzer
    Registriert seit
    11.04.2010.
    Beiträge
    5

    Standard Lösung des Problems - 2. Versuch

    ...da war ich wohl heute Nachmittag in meiner Euphorie mit der Verkündung der Lösung ein wenig vorschnell. Ich hatte nämlich noch nicht ganze verstanden, wie das Menü erzeugt wird und die Rekursion, die da wohl im Spiel ist, nicht berücksichtigt. Ich musste bei meiner jetzigen Lösung auf eine globale Variable zurückgreifen und der Reset dieser Variablen macht mir die Updatesicherheit futsch:

    Die Lösung sieht nun wie folgt aus

    In der Datei ModuleMootoolsNav.php bitte nach
    PHP-Code:
    if ($this->defineRoot && $this->rootPage 0)
            {
                
    $trail = array($this->rootPage);
                
    $level 0;
            } 
    die Zeile

    PHP-Code:
    $GLOBALS['act_request_in_menu'] = false
    einfügen.

    In der Datei mod_mootoolsnav.tpl den Anfang von

    PHP-Code:
    <?php if (!isset($GLOBALS['activemenuaccord'])) $GLOBALS['activemenuaccord']=-1
    ?>
    in

    PHP-Code:
    <?php if (!isset($GLOBALS['activemenuaccord'])) $GLOBALS['activemenuaccord']=-1
    if(
    $GLOBALS['act_request_in_menu'] == false)$GLOBALS['activemenuaccord']=-1;
    ?>
    abändern.
    Abschließend in der Datei nav_moomenu.tpl den Anfang ändern:
    PHP-Code:
    <?php

      $togglerlevel 
    'level_1';
      
    $menulevel 'level_2';
      
    $request ampersand($this->Environment->requestENCODE_AMPERSANDS);                 
    ?>
    Ganz zum Schluss noch in der selben Datei nach der Zeile
    PHP-Code:
    <?php foreach($this->items as $item): ?>
    folgenden Codeabschnitt einfügen:
    PHP-Code:
    <?php

    if(strpos($request$item['href']) !== false && $item['href'] !== '/'){
    $GLOBALS['act_request_in_menu'] = true;
    }

    ?>
    Das sollte es nun aber wirklich gewesen sein. Bei mir funktioniert jetz wirklich alles tadellos. Vielleicht hat der Andreas eine bessere Lösung parat und liefert sie mit dem nächsten update mit, wär toll...
    Geändert von tsuetterlin (02.07.2010 um 17:31 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Untermenüs werden abgeschnitten! :(
    Von Snaky im Forum Layout / Templates / Holy Grail
    Antworten: 3
    Letzter Beitrag: 10.01.2011, 12:43
  2. Suckerfish mit kleinem Pfeil bei Untermenüs
    Von lebasti im Forum Layout / Templates / Holy Grail
    Antworten: 3
    Letzter Beitrag: 26.03.2010, 09:13
  3. Eventliste Datum + ungewolltes Datumsformat
    Von Rabe im Forum Nachrichten/Events/FAQ
    Antworten: 5
    Letzter Beitrag: 25.03.2010, 14:23
  4. Untermenüs
    Von lino16 im Forum Layout / Templates / Holy Grail
    Antworten: 13
    Letzter Beitrag: 11.01.2010, 12:32
  5. Untermenüs ?
    Von lino16 im Forum Layout / Templates / Holy Grail
    Antworten: 4
    Letzter Beitrag: 04.01.2010, 05:31

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •