NAVIGATION
This is an old revision of the document!
Wie kann ich eine mehrsprachige Seite erstellen?
- Grundlagen :Ebenen (Level) und IDs - Navigation - Schalter für unterschiedliche Domains
Version: V1.2.7 - 1.x.x
Forum: http://forum.phpwcms.org/viewtopic.php?p=83791#p83791
Z.B.: Ein Beispiel in dem die beiden Sprachen Englisch [en] und Deutsch [de] verwendet werden (IDs sind frei erfunden).
------------------------------------ L E V E L -: : : : : -0 1 2 3 4 <- LEVEL-Nr.) -: : : : : -+ 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 Kategorie -: : : : : -0 1 2 3 4 <- LEVEL Nr. ------------------------------------
Ebenen basiert: Die Ebenen (Level) werden relativ adressiert. Wir brauchen das für die richtige Navigation.
Jede Sprache [en] & [de] hat einen eigenen Kategorienbaum (ADMIN → Seitenstruktur).
Und jede Spache [en] & [de] hat seine eigene Vorlage (Template).
<note> Bitte erstellen Sie als erstes die Vorlagen für die einzelnen Sprachen </note>
Wir benötigen zwei Links in jeder Vorlage, um auf die jeweils andere Sprache umschalten zu können.
Einfache Version:
<!-- ===== Spach-Schalter [en] //--> <div id="language_switch"> <a href="index.php?de" target="_self">Switch to german</a> | <a href="index.php?en" target="_self">enlish active</a> </div> <!-- ===== Ende Sprach-Schalter //-->
<!-- ===== Spach-Schalter [de] //--> <div id="language_switch"> <a href="index.php?de" target="_self">Deutsch aktiv</a> | <a href="index.php?en" target="_self">Englisch</a> </div> <!-- ===== Ende Sprach-Schalter //-->
In diesem Beispiel wird ein kleines Flaggenbild mit den Abmessungen 23x15px verwendet (CSS eingebunden).
In der Vorlage [en] kann verwendet werden z.B.:
<!-- ===== Spach-Schalter [en] //--> <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> <!-- ===== Ende Sprach-Schalter //-->
In der Vorlage [de] kann verwendet werden z.B.:
<!-- ===== Spach-Schalter [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] //-->
Eine einfache vertikale Navigation für die linke oder rechte Seite, die den Tag {NAV_LIST_UL:F …….. verwendet.
E.g. Die horizontale Ausgabe:
+---------------------------------------------------------------------+ | [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>
(Eine Ebene (Level) tief).
Z.B. Die vertikale Sub-Ausgabe für die aktive Kategorie en_category_02 bei der Verwendung von Level-Lift.
[en_category_01] [en_category_02] [en_category_03] [en_category_04]
+----------------------+ | [en_category_02_01] | | [en_category_02_02] | | [en_category_02_03] | +----------------------+
Bitte kopieren Sie den Programmteil in jede Sprachvorlage.
So wird eine ID basierte navigation zu einer Ebenen (Level)-basierten Navigation.
I nenne es Level-Lift. (Bitte auch hier schauen - NAV_LIST_UL (CSS) (am Ende).
[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]
Wobei LEVEL_ID'[X] die Ebene (Level) ist.
Diese Schalter wird nur gebraucht, wenn jede Sprache über eine eigene Domain angesteuert wird.
Forum: http://www.phpwcms.de/forum/viewtopic.php?p=73725#73725
Hier ist ein Schalter, der mit zwei Domains mydomain1.com und mydomain2.com arbeit und folgenden HTTP Status Code generiert:
HTTP Status Code: HTTP/1.1 301 Moved Permanently
<note>
Bitte verwenden Sie ausschließlich diesen Eintrag in der config:
$phpwcms['site'] = 'http://'.$_SERVER['SERVER_NAME'].'/';
$_SERVER['SERVER_NAME'] should always contain the current called Domain.
Mit LEVEL_ID[1] kennen sie immer die Startebenen-ID für die Menüs. </note>
Kopieren Sie den Programmteil in das Verzeichnis include/inc_script/frontend_init/
Bedingung: → /config/phpwcms/conf.inc.php
(Eine kurze Version diese Skipts finden Sie in: /template/inc_Script/frontend_init/disabled/domaincheck.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'); } } } ?>