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; }