NAVIGATION
This is an old revision of the document!
How can I create a multilingual site?
- Basics :Level and IDs - Navigation - Switch for different domains
Version: V1.2.7 - 1.x.x
Forum: http://forum.phpwcms.org/viewtopic.php?p=83791#p83791
E.g.: An example unsing the two languages english [en] and german [de] (IDs are coincidentally selected)
------------------------------------ L E V E L -: : : : : -0 1 2 3 4 <- LEVEL-No.) -: : : : : -+ home : : ID=0 -+--+ en ID=01 -+--+--+ en_category_01 ID=02 -+--+--+ en_category_02 ID=03 -+--+--+--+ en_category_02_01 ID=05 -+--+--+--+--+ en_category_02_01_01 ID=07 -+--+--+--+--+ en_category_02_01_02 ID=08 -+--+--+--+ en_category_02_02 ID=06 -+--+--+--+ en_category_02_03 ID=09 -+--+--+ en_category_03 ID=04 -+--+--+ en_category_04 ID=10 -: : : : : -+--+ de ID=11 -+--+--+ de_Kategorie_01 ID=12 -+--+--+ de_Kategorie_02 ID=13 -+--+--+--+ de_Kategorie_02_01 ID=15 -+--+--+--+--+ de_Kategorie_02_01_01 ID=17 -+--+--+--+--+ de_Kategorie_02_01_02 ID=18 -+--+--+--+ de_Kategorie_02_03 ID=16 -+--+--+--+ de_Kategorie_02_03 ID=19 -+--+--+ de_Kategorie_03 ID=14 -+--+--+ de_Kategorie_04 ID=20 category -: : : : : -0 1 2 3 4 <- LEVEL No. ------------------------------------
Level based: The level is relatively addressed. We need this for a right navigation.
Every language has its own category trees (ADMIN → site structure).
And every language [en] / [de] has its own template.
<note> Please create the templates first </note>
We need two links in every template for a switch to the other language.
In this example I uses little flag images 23x15px.
In your [en] template please insert e.g.:
<!-- ===== Language switch //--> <div id="language_switch"> <div id="flag_de"><a href="index.php?de" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="german" width="23" height="15" title="switch to german" /></a></div> <div id="flag_en_act"><a href="index.php?en" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="english" width="23" height="15" title="enlish active" /></a></div> </div> <!-- ===== End Language switch //-->
In your [de] template please insert e.g.:
<!-- ===== Language switch [de] //--> <div id="language_switch"> <div id="flag_de_act"><a href="index.php?de" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="deutsch" width="23" height="15" title="Deutsch aktiv" /></a></div> <div id="flag_en"><a href="index.php?en" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="englisch" width="23" height="15" title="umschalten nach Englisch" /></a></div> </div> <!-- ===== End Language switch [de] //-->
A simple navigation at the right/left using the navigation tag {NAV_LIST_UL:F …….. - NAV_LIST_UL V1.3x
E.g. The horizontal output
+---------------------------------------------------------------------+ | [en_category_01] [en_category_02] [en_category_03] [en_category_04] | +---------------------------------------------------------------------+
en: <div class="nlu_horiz1">{NAV_LIST_UL:F,01,1,act_path,active}</div> de: <div class="nlu_horiz1">{NAV_LIST_UL:F,11,1,act_path,active}</div>
(one level deep).
E.g. the vertical sub output for an active en_category_02
+----------------------+ | [en_category_02_01] | | [en_category_02_02] | | [en_category_02_03] | +----------------------+
Please copy this snippet into every language template.
You can lift an ID based navigation to an level based navigation.
I called it level lift. (Have a look too - NAV_LIST_UL (CSS) at the end.
[PHP] if(isset($GLOBALS['LEVEL_ID'][1])) { $level_id = $GLOBALS['LEVEL_ID'][1]; echo '<div class="nlu_navi1">'.LF; echo '{NAV_LIST_UL:F,'.$level_id.',,act_path,active,,,}'; echo '</div>'; } [/PHP]
Where LEVEL_ID'[X] is the level.
forum: http://www.phpwcms.de/forum/viewtopic.php?p=73725#73725
There is a switch working with two domains mydomain1.com and mydomain2.com generating an HTTP Status Code: HTTP Status Code: HTTP/1.1 301 Moved Permanently
<note>
Please use only this entry in config:
$phpwcms['site'] = 'http://'.$_SERVER['SERVER_NAME'].'/';
$_SERVER['SERVER_NAME'] should always contain the current called Domain.
With LEVEL_ID[1] you always know the starting level ID for the menus. </note>
Copy this snippet into the folder include/inc_script/frontend_init/
Condition: → /config/phpwcms/conf.inc.php
<?php // compare against current domain and redirect to correct if neccessary // http://www.phpwcms.de/forum/viewtopic.php?p=73771 // Installation: Put this snippet into the folder /frontend_init/ // and switch at conf.inc.php: $phpwcms['allow_ext_init'] = 1; // E.g.: // Startpoint from mydomain1.com is the ID=01 -> $LEVEL_ID[1] = 1 // Startpoint from mydomain2.com is the ID=11 -> $LEVEL_ID[1] = 11 // // PHPWCMS_URL -> http://mydomainX.com/ // returnGlobalGET_QueryString() -> ?alias // $aktion[0] == 0 -> pointer at the root level if(isset($LEVEL_ID[1])) { // Pointer behind the root level ? // Yes -> check active Domain behind root level if($LEVEL_ID[1] == 1 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) { // E.g. Using the ID=1 (for maydomain1.com) but with the domain maydomain2.com, than switch back to .mydomain1.com // E.g. http://www.mydomain2.com/index.php?1-contact switch to http://www..mydomain1.com/index.php?1-contact headerRedirect('http://www.mydomain1.com/index.php'.returnGlobalGET_QueryString()); } else { // The same for the domain mydomain2.com if($LEVEL_ID[1] == 11 && strpos(PHPWCMS_URL, 'mydomain2.com') === false) { headerRedirect('http://www.mydomain2.com/index.php'.returnGlobalGET_QueryString()); } } } else { // check root level for active Domain if($aktion[0] == 0) { // pointer on the root level e.g. http://mydomain1.com/ ?? if(strpos(PHPWCMS_URL, 'mydomain1.com')) { // Yes, go to my startpage for the domain 1 header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http:/www.mydomain1.com/index.php?mydomain1_start'); } elseif(strpos(PHPWCMS_URL, 'mydomain2.com')) { // The same for domain 2 header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http://www.mydomain2.com/index.php?mydomain2_start'); } else { //redirect to "default" -> Fallback if there is an third domain or what ever header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http://www.default.com/index.php?default_start'); } } } ?>