[TYPO3-UG Italy] Language switch dinamico RISOLTO con CODICE
Francesco Pessina
typo3news at yahoo.it
Mon Mar 27 15:03:40 CEST 2006
Grazie infinite Mauro, l'idea di spazzolare la tabella sys_language per
ricercare le lingue disponibili/attive e' stata ottima!
Per cortesia verso chi magari vuole implementare una soluzione analoga
alla mia, posto il mio codice:
***** FILE: /media/scripts/myLanguageSelector.inc ******
$query = "SELECT * FROM sys_language WHERE hidden=0 ORDER BY uid";
$res = mysql(TYPO3_db,$query);
// list selector
$pointer = " id=\"current\" ";
$langCode = array();
$langCode[] =
"<li".($GLOBALS["TSFE"]->sys_language_uid==0?$pointer:"")."><a
href=\"index.php?id=".$GLOBALS["TSFE"]->id."&L=0\"
title=\"English\">English</a></li>";
mysql_data_seek($res, 0);
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
// Set UID and title for language.
// If the language UID is the current, an "id" is added in the link
marker.
$currentUID = $row["uid"];
$currentTitle = $row["title"];
$langCode[] =
"<li".($GLOBALS["TSFE"]->sys_language_uid==$currentUID?$pointer:"")."><a
href=\"index.php?id=".$GLOBALS["TSFE"]->id."&L=".$currentUID."\"
title=\"".$currentTitle."\">".$currentTitle."</a></li>";
}
// Make the little menu. Notice, the menu does ONLY transfer the page-id
and the "L" variable (which is also SPECIFIC for this website because
"L" has been used in the extension template used to control the language
setup)
$content = implode("",$langCode);
**********************************************************
***** Template->Setup ************************************
# Define the Template for Web page
temp.mainTemplate = TEMPLATE
temp.mainTemplate {
template = FILE
template.file = fileadmin/<percorso tuo template>/<tuo template>
...
subparts {
LANGUAGE = PHP_SCRIPT
LANGUAGE.file = media/scripts/my_languageMenu.inc
...
}
...
}
page = PAGE
page.typeNum = 0
...
#load into the PAGE object the TEMPLATE
page.10 < temp.mainTemplate
************************************************************
***** FILE: /fileadmin/<percorso tuo template>/<tuo template> *****
<html>
<head>
...
</head>
<body>
...
<ul>
<!--###LANGUAGE### START-->LANGUAGE SWITCH<!--###LANGUAGE### STOP-->
</ul>
...
</body>
</html>
*******************************************************************
NOTE DI UTILIZZO
================
La prima posizione dell'array $langCode (si trova subito dopo la sua
dichiarazione) contiene la lingua di default di Typo3 che non compare
(ovviamente) nell'elenco delle lingue aggiuntive in "sys_language".
Pertanto e' necessario aggiungerla a mano in modo statico (cambiare le
info se la default language non e' l'inglese).
Inoltre le voci del Language Selector che compaiono lato Web (Front-End)
sono recuperate dal nome (title) del "Website Language" definito in
Typo3. Per chi vuole il "meglio del meglio" puo' modificare il codice
PHP utilizzando il "flag.gif" (che si puo' associare nella fase di
creazione della lingua aggiuntiva) anziche' il banale "title".
L'output generato e' una lista HTML (<ul><li>..</li></ul>) rispetto alle
classiche soluzioni basate su tabella. Questo perche' i miei CSS rendono
tale lista in una "tabbed" list, di grande effetto grafico... :-)
Saluti,
Francesco
Mauro Lorenzutti ha scritto:
> Ciao Francesco,
>
>> Vorrei implementare un "language switch" (ovvero una serie di link che
>> "cambiano" il sito dalla lingua italiana alla inglese ad esempio, come
>> indicato nel tutorial di Kasper, "Multi language sites in TYPO3",
>> http://typo3.org/documentation/tips-tricks/multi-language-sites-in-typo3/)
>> in modo dinamico, cioe' nel senso che in base alle "Website Languages"
>> abilitate e attive in Typo3, mi crea, dinamicamente, la lista di queste
>> lingue.
>
>> Mi spiego meglio:
>> - Ho attivato le lingue Inglese (default), Italiano (attiva), Tedesco
>> (attiva), Francese (nascosta) e Spagnolo (nascosta)
>> - si dovrebbe realizzare, lato FrontEnd, una lista (e relativi link) del
>> tipo: English, Italiano, Deutsch.
>> - quando si attiva/nasconde una determinata lingua, questa
>> compare/scompare dalla lista.
>
>> E' meglio implementarlo direttamente in TypoScript all'interno del Setup
>> del Template oppure direttamente nel Template integrando del codice PHP?
>> Qualcuno mi puo' dare qualche info su come recuperare le lingue attive?
>
> Puoi fare uno script php e poi richiamarlo via TypoScript.
> Tutte le lingue che crei vengono salvate nella tabella 'sys_language'.
> Per listare l'elenco delle lingue attive ricordati di aggiungere nella
> clausola where 'hidden!=1', cioè non estrai le lingue nascoste.
>
> Saluti,
> Mauro Lorenzutti
>
>
> e-mail: mauro.lorenzutti at webformat.com
>
> ---------------------------------------------------------
> WEBFORMAT srl | Corte Europa, 12 | I-33097 SPILIMBERGO PN
> Tel +39-0427-926.389 -- Fax +39-0427-927.653
> info at webformat.com -- www.webformat.com
> ---------------------------------------------------------
>
More information about the TYPO3-UG-italy
mailing list