Sprachmenü ohne Flaggen  t3n Social News

Das Standard Sprachmenü von Typo3 arbeitet mit Flaggen. Doch abhängig vom gewählten Design kann ein rein textliches Sprachmenü von Vorteil sein. Dafür habe ich ein wenig Hand angelegt.

Das Textmenü verfügt über die selben Eigenschaften wie das Flaggen-Sprachmenü: Ausgrauen bei Nicht-Verfügbarkeit und Markierung bei Aktivität.

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
34
35
36
37
38
39
40
41
42
43
<?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($_SERVER['SCRIPT_FILENAME'] != 'index.php') {
	$query = 'index.php?';
}
$query .= $_SERVER['QUERY_STRING'];
$langstrings = array("&L=1", "&L=0");
 
if ($_GET['L'] == "1") {
	$query = str_replace($langstrings,"",$query);
	($langArr[1]) ? $langtext = 'German' : $langtext = 'Deutsch';
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars($query.'&L=0').'" target="_top">'.$langtext.'</a>';
} else {
	$query = str_replace($langstrings,"",$query);
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars($query.'&L=0').'" target="_top"></a>';
}
if ($_GET['L'] == "0" OR empty($_GET['L'])) {
	$query = str_replace($langstrings,"",$query);
	if($langArr[1]) {
		$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars($query.'&L=1').'" target="_top">'.($langArr[1]?'':'<span style="color:#ddd">').'English'.($langArr[1]?'':'</span>').'</a>';
	} else {
		$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').''.($langArr[1]?'':'<span style="color:#ddd">').'English'.($langArr[1]?'':'</span>').'';
	}
} else {
	$query = str_replace($langstrings,"",$query);
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars($query.'&L=1').'" target="_top"></a>';
}
 
$content = implode('',$flags).' | ';
 
?>

Implementierung

Dieser Code wird 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




Ü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