Typo3-Menüs mit accesskey und title

Um ein wenig “barrierefreier” zu werden, sollte man die Links im Menü mit accesskey- und title-Attributen versehen. Für ersteres habe ich mal die Extension cron_accessiblemenus verwendet, die zusätzlich auch noch dfn-Tags einfügt, die die Gliederung beinhalten. Sehr schön soweit. Aber zusätzlich hätte ich gerne noch den Accesskey im title-Attribut angegeben. Und hier wird’s interessant 😉

Folgenden Code habe ich in die Datei “typo3conf/ext/cron_accessiblemenus/class.user_cronaccessiblemenus.php” ab Zeile 83 eingefügt:

$pagetitle = $menuArr['parts']['title']; if (preg_match('/title="?([^"]*)"?/', $menuArr['parts']['ATag_begin'], $title_matches)) { $title_val = $title_matches[1]; if ($pagetitle != $title_val) { $pagetitle .= ": " . $title_val; $menuArr['parts']['ATag_begin'] = preg_replace('/title="?([^"]*)"?/', 'title="' . $pagetitle . '"', $menuArr['parts']['ATag_begin']); } }

Diese Zeilen sorgen dafür, dass das title-Attribut aus dem Seitentitel und einem evtl. vorhandenen Eintrag im title-Attribut zusammengesetzt wird. Da aber ja noch der Accesskey hinten dran soll, müssen noch folgende Befehle ab Zeile 110 (inkl. neuem Code) eingetragen werden:

if ($key != '' && $hasKey) { $menuArr['parts']['ATag_begin'] = preg_replace('/title="?([^"]*)"?/', 'title="\1' . ' (ALT-' . strtoupper($key) . ')"', $menuArr['parts']['ATag_begin']); }

Damit die Funktion überhaupt angewendet wird, ist folgendes im TypoScript einzutragen:

Als Property von TMENU:
IProcFunc = user_cronaccessiblemenus->makeAccessible IProcFunc { accessKeys = 1 dfn = 1 forbiddenKeys = 0,D,B,A,F,X }

Als Property von TMENUITEM:
ATagTitle.field = subtitle // title

ADD: Gerade gelesen, dass accesskey-Attribute doch lieber nicht vergeben werden sollten… alles umsonst gemacht 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax