[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
rex_navigation erweitern um aria-haspopup="true" - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
robo
Beiträge: 106
Registriert: 17. Aug 2012, 09:03
Wohnort: Wien
Kontaktdaten: Website

rex_navigation erweitern um aria-haspopup="true"

28. Okt 2014, 21:37

Hallo Redaxo- und OO- Spezialisten!

Hab da eine (für mich kniffelige) Frage.

Ich würde gerne die rex_navigation so erweitern, dass jedem <a> Element, welchem als Sibling (Bruder/Schwester/direkten Nachbarn... :P ) ein <ul> Element folgt, ein aria-haspopup="true" verliehen wird.

Beispiel (Klassen etc. der rex_navigation hab ich hier natürlich nicht angeführt):

Code: Alles auswählen

<ul>
   <li><a>...</a></li>
   <li><a>...</a></li>
   <li><a aria-haspopup="true">...</a>
        <ul>
            <li><a>...</a></li>
            <li><a>...</a></li>
        </ul>
   </li>
</ul>
Ich möchte nämlich ein Dropdownmenü mit "aria-haspopup" richtig auszeichnen. Ich würde aber gerne die rex_navigation verwenden und keine eigene basteln, da die rex_navigation genial ist.

Hat da ein findiger Tüftler eine Lösung? Ich komm einfach nicht drauf, werde aber weiter grübeln...

Ich danke für jede Antwort und hilfreiche Tipps! Denke, dass sowas nicht nur mich interessieren könnte...
Zuletzt geändert von robo am 23. Nov 2014, 16:50, insgesamt 2-mal geändert.

robo
Beiträge: 106
Registriert: 17. Aug 2012, 09:03
Wohnort: Wien
Kontaktdaten: Website

Re: rex_navigation erweitern um aria-haspopup="tru

29. Okt 2014, 19:52

Habs selbst herausgefunden, ist eigentlich e logisch :roll: (oder auch nicht)... und wenns jemanden interessiert:

Am besten Klasse von Navigation ableiten und in ein neues Template damit (so mach ich das zumindest), damit ich die original class.rex_navigation.inc.php nicht angreifen muss.
Dann die function _getNavigation($category_id, $depth = 1) überschreiben bzw. anpassen.

z.B.

Code: Alles auswählen

class meine_navigation extends rex_navigation {
    ......
    $a_attr = array();
    foreach($a as $attr => $v) {
         $a_attr[] = $attr.'="'.implode(" ",$v).'"';
    }

    /*+++das hier einfügen+++*/			
    $nav_children = OOCategory::getCategoryById($nav->getValue('id'))->getChildren(true);
    $aria_popup = count($nav_children) > 0 ? ' aria-haspopup="true"' : '';
    /*++++++++++++++++++++++*/

    $l = '<li '. implode(" ", $li_attr) .'>';
    $l .= '<a '. implode(" ", $a_attr) .$aria_popup/*hier die Variable nicht vergessen*/ .'><span class="nav-item">'.htmlspecialchars($nav->getName()).'</span></a>';

    $depth++;
    if(($this->open ||
    ........
    ........
}
Also den Block wo /*+++das hier einfügen+++*/ steht einfügen...
und die Variable nicht vergessen siehe im Code /*hier die Variable nicht vergessen*/

Wenns einen simpleren Weg gibt, bitte sagen! Denke, dass "aria-popup" jetzt und in Zukunft für Dropdown-Navis am Touchscreen sicher interessant ist bzw. sein wird!

robo
Beiträge: 106
Registriert: 17. Aug 2012, 09:03
Wohnort: Wien
Kontaktdaten: Website

Re: rex_navigation erweitern um aria-haspopup="true"

23. Nov 2014, 16:51

Meine Lösung ist doch nicht so toll!

Habe gerade herausgefunden, dass bei meinem Ansatz (oben beschrieben) die Performance bei größeren Navigationen merklich leidet, also bitte nicht nachmachen. Habe das "aria-haspopup" z.Z. mit JavaScript hinzugefügt, was eigentlich nicht so toll ist (Screenreader etc.). Könnte dies Serverseitig gelöst werden wäre das natürlich der bessere Weg.

"aria-haspopup" ist am Touchscreen (glaube ich) eine elegante und semantisch korrekte Lösung um auch ein Dropdown-Menü ohne JS und unnötiger Trickserei zu realisieren.

Über Ideen, wie man der Navigation das hinzufügen könnte, ohne dabei den Server in die Knie zu zwingen wäre ich super glücklich… Ich stehe da irgendwie auf der Leitung…
Ich würde gerne wie bereits gesagt die rex_navigation erweitern.

LG
Robert

Zurück zu „Allgemeines [R4]“