Ikzelf gebruik nog wel eens de volgende logica....
Structuur van de pagina's:
- Home
- NL
- NLpage1
- NLpage2
- EN
- Enpage1
- Enpage2
- FR
- FRpage1
- FRpage2
Code:
{cms_selflink page="en" image="uploads/flags/lang_en.gif" alt="English" imageonly=1}
{cms_selflink page="fr" image="uploads/flags/lang_fr.gif" alt="French" imageonly=1}
{cms_selflink page="nl" image="uploads/flags/lang_nl.gif" alt="Nederlands" imageonly=1}
{menu} dient met de parameter (start_level) te worden uitgebreidt, zodat enkel de sub-pagins's van de gekozen taal getoond worden.
Code:
{menu template='simple_navigation.tpl' start_level='2' collapse='1'}
Wat ik een voordeel vind van deze methode, is dat de structuur onder de verschillende talen niet identiek hoeft te zijn.
De logica hieronder kan EXTRA worden gebruikt, maar is niet noodzakelijk voor de werking.
Extra 1:
Mocht je ook nog willen dat gebaseerd op de taal van de bezoeker, deze automatisch naar zijn specifieke taal homepage gaat, dan als extraatje ....
Maak een UDT "browserlanguage" aan:
Code:
{
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if (substr($lang, 0, 2) == 'en')
{
header("Location: index.php?page=en");
} elseif (substr($lang, 0, 2) == 'fr')
{
header("Location: index.php?page=fr");
} else {
header("Location: index.php?page=nl");
}
}
De logica hierbij is dat gekeken wordt wat zijn taal is, en dat als deze bekend is, als hoofdpagina je daarheen stuurt, anders naar de standaard-pagina, hierboven 'nl'. Let wel, dit zijn de aliassen....
'Home' bevat enkel deze UDT als content, en aangezien Home mijn default pagina is, doet deze een re-direct naar de taal-homepage.
Extra 2:
Overigens heb ik ook nog wel een voorbeeld, hoe je middels smarty, binnen 1 template de logica kunt laten meelopen, waarmee je search e.d. ook als label, afhankelijk van de taal in de goede taal weergeeft...
Ook dit is niet nodig voor de werking, je kunt ook met meerdere templates werken, of 1 als je geen search e.d. gebruikt.
{get_root_page_alias assign="root_page_alias"}
{if $root_page_alias eq 'fr'}
{search searchtext="frans" lang="fr_FR"}
{elseif $root_page_alias eq 'en'}
{search searchtext="engels" lang="en_US"}
{else}
{search searchtext="nederlands" lang="nl_NL"}
{/if}
Hierbij wordt de toppagina (zijnde de gekozen taal) uitgelezen middels een UDT, genaamd "get_root_page_alias".
global $gCms;
global $smarty;
$manager =& $gCms->GetHierarchyManager();
$var = 'root_page_alias';
if( isset($params['assign']) && $params['assign'] != '' )
{
$var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= 0 )
{
$currentContent =& $currentNode->getContent();
$result = $currentContent->Alias();
$currentNode =& $currentNode->getParentNode();
}
$smarty->assign($var,$result);
Ronny