NAVIGATION
Wie kann ich eine mehrsprachige Seite erstellen?
Version: V1.2.7 - 1.x.x
Forum: http://forum.phpwcms.org/viewtopic.php?p=83791#p83791
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 bei Verwendung einer geteilten Navigation (z.B. horizontal und vertikal) relativ adressiert. Siehe “Level-Lift” unten.
Jede Sprache [en] & [de] hat einen eigenen Kategorienbaum (ADMIN → Seitenstruktur).
Und jede Spache [en] & [de] hat ihre eigene Vorlage (Template).
<note important> Bitte erstellen Sie zuerst die Vorlagen für die einzelnen Sprachen Erst danach werden die Sprachbäume angelegt.
Es hat sich als sinnvoll herausgestellt, die Seite in einer Sprache fertigzustellen und dann den kompletten Sprachbaum für die Verwendung anderer Sprachen zu kopieren. Danach werden den kopierten Kategorien die sprachspezifischen Überschriften und Aliasnamen gegeben.
</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> | english active </div> <!-- ===== Ende Sprach-Schalter //-->
<!-- ===== Spach-Schalter [de] //--> <div id="language_switch"> Deutsch aktiv | <a href="index.php?en" target="_self">umschalten nach 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.
Z.B. 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.
Ich 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.
<note important> Diese Schalter wird nur gebraucht, wenn jede Sprache über eine eigene Domain angesteuert wird. </note>
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.
</note>
Kopieren Sie den Programmteil in das Verzeichnis include/inc_script/frontend_init/
Bedingung: → /config/phpwcms/conf.inc.php
In das Skript müssen natürlich Ihre Domain- und Start-Aliasnamen eingetragen werden.
(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'); } } } ?>