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 😉