Optimiertes Sprachmenü  t3n Social News

Das Standard Typo3 Sprachmenü kennen mittlerweile die meisten, die multilinguale Webseiten mit Typo3 bauen. Aus Erfahrung ist es aber bei vielen – meist computerfremden – Menschen so, dass das Standardmenü noch verwirrt, denn alle Flaggen sind jederzeit klickbar. Viele verwirrt das insofern, dass man nun nicht weiß, ob eine Sprache – trotz Ausgrauen der Flagge – verfügbar ist oder nicht.

Meine kleinen Anpassungen für das Sprachmenü stützen sich vor allem auf 2 Dinge:

  • Die Flaggen der nicht-verfügbaren Sprachen sind nicht klickbar
  • Die aktive Sprache wird, anders als im Standardmenü mit einem kleinen roten Pfeil, mit einer farblichen Hinterlegung markiert

Die Tatsache, dass nicht verfügbare Sprach-Flaggen nicht nur ausgegraut, sondern auch nicht klickbar sind, vermeidet Verwirrung.

Hier der Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
if (!is_object($this)) die ('Error: No parent object present.');
 
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
 
$langArr = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))	{
	$langArr[$row['sys_language_uid']] = $row['title'];
}
 
$pointer = '';
 
$flags = array();
if ($GLOBALS['TSFE']->sys_language_uid == 0) {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<img src="uploads/tf/flag_de.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px;background:#667DAB; position:relative; top: 5px;" />';
} elseif (!$langArr[2]) {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<img src="uploads/tf/flag_de.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px; position:relative; top: 5px;" />';
} else {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0').'" target="_top"><img src="uploads/tf/flag_de.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px; position:relative; top: 5px;" /></a>';
}
 
if ($GLOBALS['TSFE']->sys_language_uid == 2) {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<img src="uploads/tf/flag_en'.($langArr[2]?'':'_d').'.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px;background:#667DAB; position:relative; top: 5px;" />';
} elseif (!$langArr[2]) {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<img src="uploads/tf/flag_en'.($langArr[2]?'':'_d').'.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px; position:relative; top: 5px;" />';
} else {
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=2').'" target="_top"><img src="uploads/tf/flag_en'.($langArr[2]?'':'_d').'.gif" width="20" height="10" border="0" alt="" style="padding: 2px 2px 5px 2px; position:relative; top: 5px;" /></a>';
}
 
$content = ''.implode('',$flags).'&nbsp;&nbsp;';
 
?>

Implementierung

Dieser Code wird, zusammen mit den Flaggendateien, als sprachmenu.inc im uploads/tf/-Ordner gespeichert und mittels TypoScript über einen Marker aufgerufen:

1
2
3
4
page = PAGE
 
page.10.marks.SPRACHE = PHP_SCRIPT
page.10.marks.SPRACHE.file = uploads/tf/sprachmenu.inc

Hinweis: Dieses Menü bedient die Sprachen Deutsch und Englisch, kann aber beliebig erweitert werden.





Über den Autor

Dieser Beitrag wurde von Oliver Schlöbe verfasst. Er arbeitet als Web- und (TYPO3-)-Entwickler, schreibt redaktionell über Windows Vista/ Windows 7, ist aktives Mitglied bzw. Administrator oder Moderator in diversen Webforen, darunter die TYPO3- und WordPress-Communities, und sammelt seine bisherigen Erweiterungen für diverse Systeme unter http://extend.schloebe.de/
Bei Fragen nutzen Sie die Kommentare oder wenden Sie sich an info@typo3.schloebe.de.

Weitere Beiträge von .


Über diesen Eintrag



Interessante Links


Informiert bleiben