Textbasiertes Sprachmenü  t3n Social News

Gerade habe ich beim Entmotten ein textbasiertes Sprachmenü entdeckt, das ich hier einfach mal veröffentliche.

Das Menü kommt ohne Flaggen aus, wird per PHP generiert und lässt sich per Klick umschalten. Ist eine Seite in einer alternativen Sprache nicht verfügbar, wird der Menüpunkt ausgegraut. Ansonsten verhält es sich wie ein normales Sprachmenü, in diesem Fall eben nur ohne Flaggen.

In Aktion sieht das Menü so aus (natürlich in ein Design eingepasst; in der Rohfassung erzeugt es einfach nur die Links für die Sprachen):

[inspic=47,fullscreen,148]

Die PHP-Datei sprachmenu.inc:

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
<?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 = 'de' : $langtext = 'de';
	$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars($query.'&L=0').'" target="_top">'.$langtext.'</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]?'':'').'ru'.($langArr[1]?'':'').'</a>';
	} else {
		$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').''.($langArr[1]?'':'').'ru'.($langArr[1]?'':'').'';
	}
}
 
if ($_GET['L'] == "0" OR empty($_GET['L'])) {
	$langvar = 'de';
}
if ($_GET['L'] == "1") {
	$langvar = 'ru';
}
$content = $langvar;
$content .= implode('',$flags);
?>

Per TypoScript kann das ganze dann so inkludiert werden:

1
2
page.10.marks.SPRACHE = PHP_SCRIPT
page.10.marks.SPRACHE.file = fileadmin/sprachmenu.inc

Wirklich flexibel ist es natürlich nicht, aber als Ansatz ist es vielleicht hilfreich für den einen oder anderen.





Ü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