Joomla! Template Override:

Accesskey im Menü


Aus unerfindlichen Gründen gibt es in Joomla immer noch keine Möglichkeit Accesskeys einzufügen. Auch hier ist wieder ein Override notwendig.

Der Gedanke ist, dass im Backend eine Raute vor dem Buchstaben eingegeben wird, der als accesskey fungieren soll. Also Beispielsweise das "O" im Menütitel "Template Overrides" soll als Accesskey benutzt werden und optisch soll der Buchstabe unterstrichen werden. Der Menütitel wird dann so eingegeben:

Template #Overrides

Die Rauten (#) werden dann im Frontend gelöscht und stattdessen der nachfolgende Buchstabe mit einem Unterstrich versehen. Dieser Buchstabe wird automatsich dem HTML-Attribut accesskey zugwiesen, welcher dem Menüverweis angefügt wird.

Im Frontend sieht es dann wie folgt aus:

  • Template Overrides

Dafür muss die View "default_component.php" vom Typ "mod_menu" wie unten angegeben geändert werden.

Bei Verwendung von Breadcrumbs berücksichtigen

Etwas unschön ist nun aber, dass die Breadcrumbs natürlich auch die Raute (#) im Pfad mit ausgeben. Um das zu verhindern können Sie einen Override bei den Breadcrumbs machen. Der ist schnell gemacht. Zunächst müssen Sie die Originaldatei editieren (wenn Sie kein eigenes Template benutzen, schauen Sie nach, ob Sie vielleicht schon einen Override für die Breadcrumbs im Template haben und editieren diese Datei).

Die Originaldatei finden Sie hier: / modules / mod_breadcrumbs / tmpl / default.php

Die bitte in das Template-Verzeichnis schreiben: / templates / [IHR TEMPLATE] / html / mod_breadcrumbs default.php

Benötigte Override-Dateien


  • // Generate the trail
     foreach ($list as $key => $item) :
     if ($key != $last_item_key)
     {
     // Render all but last item - along with separator
     $pfadname = str_replace("#","",$item->name);
     echo '<li>';
     if (!empty($item->link))
     {
     echo '<a href="' . $item->link . '" class="pathway">' . $pfadname . '</a>';
     }
     else
     {
     echo '<span>' . $pfadname . '</span>';
     }
    
    
    if (($key != $penult_item_key) || $show_last)
     {
     echo '<span class="divider">' . $separator . '</span>';
     }
    
    
    echo '</li>';
     }
     elseif ($show_last)
     {
     // Render last item if reqd.
     $pfadname = str_replace("#","",$item->name);
     echo '<li class="active">';
     echo '<span>' . $pfadname . '</span>';
     echo '</li>';
     }
     endforeach; ?>
    </ul>
  • <?php
    /**
     * @package     Joomla.Site
     * @subpackage  mod_menu
     *
     * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    defined('_JEXEC') or die;
    // Note. It is important to remove spaces between elements.
    $class = $item->anchor_css ? 'class="' . $item->anchor_css . '" ' : '';
    $title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';
    if ($item->menu_image)
    {
        $item->params->get('menu_text', 1) ?
        $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span>' . $item->title . '</span> ' :
        $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
    }
    else
    {
        $linktype = $item->title;
       // time4mambo: Erzeugung von accesskey mittels ausgelesener Raute
       // Damit es keine Fehler gibt, wenn die Raute nicht im Menü ist
       // findet vorher eine entsprechende Abfrage statt
       if (substr_count($linktype,"#") != 0) {
            $pos = strpos($linktype,"#");
            $mt = str_replace("#","",$linktype);
            $key = $mt[$pos];
            $mbeginn = substr($mt,0,$pos);
            $mtaste =  '<u>' . $key . '</u>';
            $mende = substr($mt,$pos+1);
            $menutitel = $mbeginn . $mtaste . $mende;
       } else {
            $key="";
            $menutitel=$linktype;
       }
       // ----------------------------------------
    }
    // Die Ausgabe wird mit accesskey und veränderten Menutitel ergänzt
    switch ($item->browserNav)
    {        
        default:
        case 0:
    ?><a <?php echo $class; ?>href='<?php echo $item->flink; ?>' <?php echo $title; ?> accesskey="<?php echo $key; ?>"><?php echo $menutitel; ?></a>
    <?php
            break;
        case 1:
            // _blank
    ?><a <?php echo $class; ?>href='<?php echo $item->flink; ?>'  target="_blank" <?php echo $title; ?> accesskey="<?php echo $key; ?>"><?php echo $menutitel; ?></a>
    <?php
            break;
        case 2:
        // Use JavaScript "window.open"
    ?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?> accesskey="<?php echo $key; ?>" 
    onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" <?php echo $title; ?>><?php echo $menutitel; ?></a>
    <?php
            break;
    } 

Fehler melden

Bitte beachte unsere Datenschutzerklärung

Alle mit (*) markierten Felder werden benötigt um eine E-Mail zu senden.

E-Mail für Kontakt
Nachricht hier eingeben.
Dieses Feld wird benötigt.