Hier wil ik laten zien hoe ik met standaard CMS Made Simple functies mijn meertalige website heb gemaakt.
Ik kan dit echt niet in 10 regels doen, ik zal proberen het zo duidelijk mogelijk te maken. Laat je niet afschrikken door de omvang van het artikel en de hoeveelheid code. Wanneer je het artikel goed bekijkt, dan zul je zien dat er slecht kleine wijzigingen nodig zijn om het werkend te maken. En je hebt zeker niet alle behandelde opties nodig voor een kleine meertalige website...
Naast wat te spelen met standaard CMSMS tags, moet je een UDT maken.
Deze tag leest de taal instelling van de, door de bezoeker gebruikte webbrowser. Deze waarde wordt in het sjabloon gebruikt met de parameter $lang. Afhankelijk van de taal instelling zal de bezoeker naar de homepage in zijn eigen taal worden doorverwezen, en zal de inhoud Error 404 sjabloon worden bepaald.
Enkele mogelijkheden:
- Pretty urls zoals http://www.buispost.eu/nl en http://www.buispost.eu/nl/contact
- Het openen van website op http://www.buispost.eu leidt de bezoeker naar de eigen taal homepage, afhankelijk van de browser taalinstelling
- Gebruikt verschillende sjablonen voor de talen, dus maakt geen gebruik van cookies
- Indien ingesteld, zullen interne links werken naar dezelfde pagina in een andere taal. Indien niet ingesteld zal deze naar de taal homepage gaan.
- Meertalige Breadcrumbs
- Error 404 pagina in browsertaal
- Formulieren in verschillende talen
- Zoek functie in verschillende talen
Oké, een paar tekortkomingen:
- Je kun een actieve parent niet apart stylen, als gevolg van de Internal Link naar de homepage. Ik gebruik deze hier om mooiere urls te krijgen. De custom-url optie in de komende 1.9 zal dit waarschijnlijk oplossen. Ik zal het artikel aanpassen na de vrijkomen van 1.9.
- Modules zoals News, CompanyDirectory, etc. ondersteunen de taalstap in de url helaas niet. Maar door het gebruik van verschillende detailpagina's wordt de lay-out wel in de juiste taal weergegeven.
1. Installeer pretty url
Met de toepassing van pretty url (mod_rewrite) op de website krijg je de mooiste resultaten. Tenminste dat is mijn mening... ;)
Kijk hier hoe je pretty url moet instellen:
http://forum.cmsmadesimple.org/index.ph ... 912.0.html
Of doe een zoektochtje door het forum of in de wiki.
(Opm.: Als je vragen hebt over het installeren van pretty url, gebruik dan aub niet dit artikel... Het is een beetje off-topic)
2. Pagina structuur
1 default [standaard pagina]
2 Start [Belangrijk: stel pagina alias in de Opties tab in 'nl']
2.1 Start [Interne Link naar 2 ^ ]
2.2 Nederlands 1
2.3 Nederlands 2
3 Accueil [Belangrijk: stel pagina alias in 'fr']
3.1 Accueil [Interne Link naar 3 ^ ]
3.2 Frans 1
3.3 Frans 2
4 Anfang [Belangrijk: stel pagina alias in 'd']
4.1 Anfang [Interne Link naar 4 ^ ]
4.2 Duits 1
4.3 Duits 2
5 Homepage [Belangrijk: stel pagina alias in 'e']
5.1 Homepage [Interne Link naar 5 ^ ]
5.2 Engels 1
5.3 Engels 2
6 Error 404 [Errorpage 404]
3. Maak UDT get_browserlanguage
Open de juiste homepage op basis van de taalinstelling van de browser
UDT: get_browserlanguage
Code: Select all
$gCms = cmsms();
// Read browser language
$foo = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
// Only need the first two characters
$lang = substr($foo,0,2);
// Passing the parameter $lang to the template
$smarty = &$gCms->GetSmarty();
$smarty->assign('lang', $lang);
4. Roep UDT aan in de standaard index pagina
Open Pagina 1 - index
Zet de WYSIWYG editor uit in de Opties tab.
Plaats nu in het content veld:
Code: Select all
{get_browserlanguage}
{if $lang == 'nl'}
{redirect_page page="nl"}
{elseif $lang == 'fr'}
{redirect_page page="fr"}
{elseif $lang == 'de'}
{redirect_page page="d"}
{else}
{redirect_page page="e"}
{/if}
5. Maak HTML Blokken met de land-vlaggen
Maak voor iedere taal een HTML Blok.
Deze blokken tonen de vlaggen op de frontend en maakt de linken naar de pagina alternatieven in de andere talen. Als het niet ingesteld is, ga je naar de taal homepage.
Upload je eigen afbeelding naar je eigen map, en wijzig het pad in de onderstaande code.
Als jezelf geen afbeeldingen hebt... Kijk eens hier: http://en.wikipedia.org/wiki/List_of_countries
HTML Blok, genaamd: flag-nl
Code: Select all
{if $dutch_version}
{cms_selflink page=$dutch_version image="images/layout/flag-nl.png" title="Nederlandstalige versie" alt="Nederlandstalige versie" imageonly=1}
{else}
{cms_selflink page="nl" image="images/layout/flag-nl.png" title="Nederlandstalige versie" alt="Nederlandstalige versie" imageonly=1}
{/if}
Code: Select all
{if $french_version}
{cms_selflink page=$french_version image="images/layout/flag-fr.png" title="Version Française" alt="Version Française" imageonly=1}
{else}
{cms_selflink page="fr" image="images/layout/flag-fr.png" title="Version Française" alt="Version Française" imageonly=1}
{/if}
Code: Select all
{if $german_version}
{cms_selflink page=$german_version image="images/layout/flag-de.png" title="Deutschsprachige Version" alt="Deutschsprachige Version" imageonly=1}
{else}
{cms_selflink page="d" image="images/layout/flag-de.png" title="Deutschsprachige Version" alt="Deutschsprachige Version" imageonly=1}
{/if}
Code: Select all
{if $english_version}
{cms_selflink page=$english_version image="images/layout/flag-uk.png" title="English version" alt="English version" imageonly=1}
{else}
{cms_selflink page="e" image="images/layout/flag-uk.png" title="English version" alt="English version" imageonly=1}
{/if}
6. Maak een HTML-Blok footer voor iedere taal
Je kunt voor iedere taal een aparte footer maken.
Naast kleine wijzigingen in de tekst, kun je ook verschillende links naar pagina's plaatsen. Zoals naar de juiste homepage, sitemap, copyright tekst, enz.
Je moet de blokken de volgende namen geven:
- footer-nl
- footer-fr
- footer-d
- footer-e
7. Maak HTML sjablonen
Waar je mee begint is eerst een werkend sjabloon te maken voor één taal!!
Als deze klaar is, dan kun je hem kopiëren voor iedere taal.
In de volgende voorbeeld sjablonen vind je verschillende opties voor een basis layout.
In rood zie je de kleine wijzigingen voor iedere taal.
De code moet jezelf toevoegen aan je eigen sjabloon, en ook zelf nog even stylen.
Nederlandstalig sjabloon
Code: Select all
{process_pagedata}
{sitename} - {title}
{metadata}
{cms_stylesheet}
{menu template="accessible_simple_navigation.tpl" start_element='2.1' show_root_siblings="1" number_of_levels='3'}
{content block="german_version" assign="german_version" wysiwyg="false" oneline="true" label="Page alias German Alternative"}
{content block="english_version" assign="english_version" wysiwyg="false" oneline="true" label="Page alias English Alternative"}
{content block="french_version" assign="french_version" wysiwyg="false" oneline="true" label="Page alias French Alternative"}
{global_content name='flag-d'}
{global_content name='flag-e'}
{global_content name='flag-fr'}
{breadcrumbs starttext='U bent hier' root='nl' delimiter='>'}
{title}
{content}
{global_content name='footer-nl'}
Code: Select all
{process_pagedata}
{sitename} - {title}
{metadata}
{cms_stylesheet}
{menu template="accessible_simple_navigation.tpl" start_element='3.1' show_root_siblings="1" number_of_levels='3'}
{content block="dutch_version" assign="dutch_version" wysiwyg="false" oneline="true" label="Page alias Dutch Alternative"}
{content block="german_version" assign="german_version" wysiwyg="false" oneline="true" label="Page alias German Alternative"}
{content block="english_version" assign="english_version" wysiwyg="false" oneline="true" label="Page alias English Alternative"}
{global_content name='flag-nl'}
{global_content name='flag-d'}
{global_content name='flag-e'}
{breadcrumbs starttext='Vous êtes ici' root='fr' delimiter='>'}
{title}
{content}
{global_content name='footer-fr'}
Code: Select all
{process_pagedata}
{sitename} - {title}
{metadata}
{cms_stylesheet}
{menu template="accessible_simple_navigation.tpl" start_element='4.1' show_root_siblings="1" number_of_levels='3'}
{content block="dutch_version" assign="dutch_version" wysiwyg="false" oneline="true" label="Page alias Dutch Alternative"}
{content block="english_version" assign="english_version" wysiwyg="false" oneline="true" label="Page alias English Alternative"}
{content block="french_version" assign="french_version" wysiwyg="false" oneline="true" label="Page alias French Alternative"}
{global_content name='flag-nl'}
{global_content name='flag-e'}
{global_content name='flag-fr'}
{breadcrumbs starttext='Sie sind hier' root='d' delimiter='>'}
{title}
{content}
{global_content name='footer-d'}
Code: Select all
{process_pagedata}
{sitename} - {title}
{metadata}
{cms_stylesheet}
{menu template="accessible_simple_navigation.tpl" start_element='5.1' show_root_siblings="1" number_of_levels='3'}
{content block="dutch_version" assign="dutch_version" wysiwyg="false" oneline="true" label="Page alias Dutch Alternative"}
{content block="german_version" assign="german_version" wysiwyg="false" oneline="true" label="Page alias German Alternative"}
{content block="french_version" assign="french_version" wysiwyg="false" oneline="true" label="Page alias French Alternative"}
{global_content name='flag-nl'}
{global_content name='flag-d'}
{global_content name='flag-fr'}
{breadcrumbs starttext='You are here' root='e' delimiter='>'}
{title}
{content}
{global_content name='footer-e'}
Error 404 sjabloon
Code: Select all
{process_pagedata}
{sitename} - {title}
{metadata}
{cms_stylesheet}
{get_browserlanguage}
{if $lang == "nl"}
{menu template='accessible_simple_navigation.tpl' start_element='2.1' show_root_siblings="1" number_of_levels='3'}
{elseif $lang == "fr"}
{menu template='accessible_simple_navigation.tpl' start_element='3.1' show_root_siblings="1" number_of_levels='3'}
{elseif $lang == "de"}
{menu template='accessible_simple_navigation.tpl' start_element='4.1' show_root_siblings="1" number_of_levels='3'}
{else}
{menu template='accessible_simple_navigation.tpl' start_element='5.1' show_root_siblings="1" number_of_levels='3'}
{/if}
{if $lang != "nl"}
{global_content name='flag-nl'}
{/if}
{if $lang != "fr"}
{global_content name='flag-fr'}
{/if}
{if $lang != "de"}
{global_content name='flag-d'}
{/if}
{if $lang != "en"}
{global_content name='flag-e'}
{/if}
{title}
{content label="Dutch text" assign="content_dutch"}
{content block="german" wysiwyg="true" label="German text" assign="content_german"}
{content block="english" wysiwyg="true" label="English text" assign="content_english"}
{content block="french" wysiwyg="true" label="French text" assign="content_french"}
{if $lang == "nl"}
{$content_dutch}
{elseif $lang == "fr"}
{$content_french}
{elseif $lang == "de"}
{$content_german}
{else}
{$content_english}
{/if}
{if $lang == "nl"}
{global_content name='footer-nl'}
{elseif $lang == "fr"}
{global_content name='footer-fr'}
{elseif $lang == "de"}
{global_content name='footer-d'}
{else}
{global_content name='footer-e'}
{/if}
8. Wijzig sjabloon voor de juiste taal
Handig om de sjabloon kiezer op de eerste tab te hebben in de editor:
Websitebeheer >> Algemene instellingen >> Uitgebreide setup >> Basis Gegevens >> Selecteer 'Sjabloon'
Nu kun je iedere pagina openen en het juiste taal sjabloon er aan koppelen.
9. Stel pagina alternatieven in
Wanneer alle pagina's gereed zijn, kun je voor iedere pagina de alternatieven instellen.
In de pagina editor vind je drie velden waarin je de pagina alias van dezelfde pagina in een andere taal kunt zetten.
Klikken op de land vlag zal dan dezelfde pagina in een andere taal openen
10. De Error 404 foutpagina
In de editor van de Error 404 pagina vind je 4 schermen.
Elke taal heeft zijn eigen WYSIWYG blok.
Voor iedere taal kun je hier je eigen bericht plaatsen.
Wanneer een bezoeker een niet bestaande pagina opent, zal er een Error 404 pagina worden gemaakt op basis van de ingestelde browsertaal.
Bijv. de browsertaal is ingesteld op Frans.
De navigatie is in het Frans, de content tekst is in het Frans, de footer tekst is in het Frans, enz...
Je hebt nu een meertalige website...
Hopelijk kun je hier iets mee, Rolf :)