[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