Dynamische Navigation: Unterschied zwischen den Versionen
K (→CSS) |
(Infobox-Templates eingefügt) |
||
(12 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Module]] | [[Kategorie:Module]] | ||
+ | {{Dynamische Navigation}} | ||
+ | |||
==Beschreibung== | ==Beschreibung== | ||
− | Die dynamische Navigation ist Bestandteil des kostenlosen Grundmoduls von DynPG und bereits im Standard-DynPG integriert. Es ist keine separate Installation notwendig. Sie ermöglicht es Ihnen einfach und flexibel | + | Die dynamische Navigation ist Bestandteil des kostenlosen Grundmoduls von DynPG und bereits im Standard-DynPG integriert. Es ist keine separate Installation notwendig. Sie ermöglicht es Ihnen einfach und flexibel eine dynamisches Navigationsmenü auf Ihrer Homepage zu erstellen. |
− | Ein dynamisches Menü bildet die Gruppenstruktur im Backend, also die Abfolge von Gruppen, Untergruppen und Artikeln in einer Gruppe, als Menü ab | + | Ein dynamisches Menü bildet die Gruppenstruktur im Backend, also die Abfolge von Gruppen, Untergruppen und Artikeln in einer Gruppe, als Menü ab. Sie macht also die logische Struktur ihrer Artikel aus dem Backend in der Webseite sichtbar und navigierbar. Der Vorteil ist, dass man im Backend neue Gruppen o.ä. erstellt und diese dann im Hauptmenü erscheinen. Dies ist auch bei Untergruppen nützlich, z.B. wenn eine neue Untergruppe ''Lokalnachrichten'' zur Hauptgruppe ''News'' hinzukommt. |
− | + | ||
− | Der Vorteil ist, dass man im Backend neue Gruppen o.ä. erstellt und diese dann im Hauptmenü erscheinen. Dies ist auch bei Untergruppen nützlich, | + | |
− | z.B. wenn eine neue Untergruppe ''Lokalnachrichten'' zur Hauptgruppe ''News'' hinzukommt | + | |
− | + | ||
− | + | ||
==Einrichten== | ==Einrichten== | ||
− | |||
===Schritt 1: Artikel erstellen mit Platzhalter für die dynamische Navigation=== | ===Schritt 1: Artikel erstellen mit Platzhalter für die dynamische Navigation=== | ||
− | + | → ''Hauptartikel'': [[DynPG Module einbinden]] | |
− | + | <gallery perrow="4"> | |
+ | Image:dynmenue01.png|1. Wählen Sie im Menü des Backends ''Gruppen'' aus | ||
+ | Image:dynmenue02.png|2. Suchen Sie sich nun eine Gruppe, in der Sie einen Artikel erfassen wollen (z.B. Diverses). | ||
+ | Image:dynmenue03.PNG|3. Klicken Sie auf ''Artikel Formular anzeigen''. | ||
+ | Image:dynmenue04.PNG|4. und danach auf ''Inhalt bearbeiten''. Es erscheint der Editor. | ||
+ | Image:dynmenue05.PNG|5. In diesem wählen Sie das Symbol für die dynamische Navigation. | ||
+ | Image:dynmenue06.PNG|6. Geben Sie nun noch einen Titel ein und bestätigen mit einem Klick auf ''Erstellen''. | ||
+ | Image:dynmenue07.PNG|7. Hat alles geklappt, können Sie im unteren Teil der Seite den neuen Artikel sehen. | ||
+ | </gallery> | ||
− | + | {{Note | |
− | + | |Die ID des Artikels benötigen Sie erneut, wenn Sie in eine PHP-Datei mittels eines Globals die dynamische Navigation einbinden.}} | |
− | + | ||
===Schritt 2: PHP-Datei für die dynamische Navigation erstellen=== | ===Schritt 2: PHP-Datei für die dynamische Navigation erstellen=== | ||
− | + | Nehmen wir an, es würde folgende Ordner-Struktur vorliegen: | |
:*<tt>http-docs/dynpg</tt> : hier liegt das DynPG-CMS | :*<tt>http-docs/dynpg</tt> : hier liegt das DynPG-CMS | ||
:*<tt>http-docs/index.php</tt> : die Hauptseite Ihrer Website | :*<tt>http-docs/index.php</tt> : die Hauptseite Ihrer Website | ||
Zeile 29: | Zeile 32: | ||
:*<tt>http-docs/inc/navi.php</tt> : In diese Datei platziert man häufig den Code für die Navigation, dadurch ist er leichter wiederverwendbar | :*<tt>http-docs/inc/navi.php</tt> : In diese Datei platziert man häufig den Code für die Navigation, dadurch ist er leichter wiederverwendbar | ||
− | Den | + | Den relativ komplexen Code der <tt>inc/navi.php</tt> kann man anhand der [[Muster-Web-Sites|Musterwebsites]] nachvollziehen. Für eine genauere Erklärung der einzelnen verwendeten Globals siehe die [[Funktionsreferenz/Globals|Globals-Übersicht von DynPG]] und weiter unten die [[#Globalsreferenz|Funktionsübersicht der dynamischen Navigation]]: |
− | + | ||
+ | '''Datei <tt>inc/navi.php</tt>:''' | ||
<code>[php, N] | <code>[php, N] | ||
<?php | <?php | ||
Zeile 91: | Zeile 95: | ||
==Die dynamische Navigation im Backend== | ==Die dynamische Navigation im Backend== | ||
+ | → ''Hauptartikel'': [[Erstellen des Navigationsmenüs im Backend]] | ||
Wie bereits erwähnt, bildet die dynamische Navigation die Gruppenstruktur des Backends auf einer Webseite ab. In der Musterwebsite 3 ist im Backend zum Beispiel folgende Gruppenstruktur zu erkennen: | Wie bereits erwähnt, bildet die dynamische Navigation die Gruppenstruktur des Backends auf einer Webseite ab. In der Musterwebsite 3 ist im Backend zum Beispiel folgende Gruppenstruktur zu erkennen: | ||
− | [[ | + | |
+ | [[Image:dynmenue08.PNG]]. | ||
+ | |||
Auf der Website sieht dies dann wie folgt aus: | Auf der Website sieht dies dann wie folgt aus: | ||
− | |||
− | |||
− | |||
− | |||
− | + | <center> | |
+ | [[Image:dynmenue09.PNG|400px]] [[Image:dynmenue10.PNG|400px]] | ||
+ | </center> | ||
− | + | Welche Untergruppen angezeigt werden, hängt zum einen davon ab, welcher Navigationspunkt gerade aktiv ist (also angeklickt wurde) und zum anderen von den benutzten [[#Globalsreferenz|Globals]] in der PHP-Datei und den [[Versteckte Gruppen#Veröffentlichungsoptionen|Veröffentlichungseinstellungen]] der Gruppe im Backend. | |
− | ([[ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
==Globalsreferenz== | ==Globalsreferenz== | ||
− | + | Dieser Abschnitt erklärt die Globals aus dem PHP-Code von [[#Schritt 2: PHP-Datei für die dynamische Navigation erstellen|Schritt 2 des Punkts ''Einrichten'']]. | |
− | + | {{Note | |
− | + | | Die Parameter haben Default-Werte, müssen also nicht immer gesetzt werden.}} | |
+ | |||
+ | ===Globals für das Plugin=== | ||
*'''<tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');</tt>''' | *'''<tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');</tt>''' | ||
− | :Hiermit wählt man den Template-Ordner für die dynamische Navigation aus. Diese Template-Ordner liegen in <tt>dynpg/plugins/DPGdynmenu/templates</tt>. Aus diesem Ordner wird die Template-Datei <tt>menu.tpl</tt> zur Generierung des Menüs genommen. Dies ist unabhängig vom Global <tt>$GLOBALS["DynPG"]->SetupTemplate(...);</tt>, der | + | :Hiermit wählt man den Template-Ordner für die dynamische Navigation aus. Diese Template-Ordner liegen in <tt>dynpg/plugins/DPGdynmenu/templates</tt>. Aus diesem Ordner wird die Template-Datei <tt>menu.tpl</tt> zur Generierung des Menüs genommen. Dies ist unabhängig vom Global <tt>$GLOBALS["DynPG"]->SetupTemplate(...);</tt>, der das Template der Artikelansichten bestimmt. |
+ | |||
*'''<tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', PARAMETERNAME, PARAMETERWERT);</tt>''' | *'''<tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', PARAMETERNAME, PARAMETERWERT);</tt>''' | ||
− | :{| class=" | + | :{| class="wikitable" |
! <tt>PARAMETERNAME</tt> !! <tt>PARAMETERWERT</tt> !! Beschreibung | ! <tt>PARAMETERNAME</tt> !! <tt>PARAMETERWERT</tt> !! Beschreibung | ||
+ | |||
|- | |- | ||
− | + | | <tt>'order'</tt> | |
+ | | <tt>Array('INDEX')</tt> oder <tt>Array('NAME')</tt> | ||
+ | | Reihenfolge der Gruppen in der Navigation nach Name oder im Backend gesetzten Index | ||
+ | |||
|- | |- | ||
− | + | | <tt>'sort'</tt> | |
+ | | <tt>Array('ASC')</tt> oder <tt>Array('DESC')</tt> | ||
+ | | aufsteigende oder absteigende Sortierung | ||
+ | |||
|- | |- | ||
− | + | | <tt>'order_articles'</tt> | |
+ | | z.B. <tt>Array('INDEX')</tt> | ||
+ | | sortiert Artikel in der dynamischen Navigation (falls diese angezeigt werden) | ||
+ | |||
|- | |- | ||
− | + | | <tt>'sort_articles'</tt> | |
+ | | z.B. <tt>Array('ASC')</tt> | ||
+ | | bestimmt aufsteigende oder absteigende Sortierreihenfolge der Artikel | ||
+ | |||
|- | |- | ||
− | + | | <tt>'href_page_groups'</tt> | |
+ | | z.B. <tt>'../folgeseite.php'</tt> | ||
+ | | Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf den Gruppennamen, sofern die Gruppe Untergruppen hat. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG <tt>'../'</tt> wichtig, siehe Ordnerstruktur weiter oben!) | ||
+ | |||
|- | |- | ||
− | ||<tt>'href_page_articles'</tt> | + | ||<tt>'href_page_articles'</tt> |
+ | | z.B. <tt>'../folgeseite.php'</tt> | ||
+ | | Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf den Gruppennamen, sofern die Gruppe Artikel enthält. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG <tt>'../'</tt> wichtig, siehe Ordnerstruktur weiter oben!) | ||
+ | |||
|- | |- | ||
− | + | | <tt>'href_page_detail'</tt> | |
+ | | z.B. <tt>'../folgeseite.php'</tt> | ||
+ | | Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf einen Artikelnamen. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG <tt>'../'</tt> wichtig, siehe Ordnerstruktur weiter oben!) | ||
+ | |||
|- | |- | ||
− | + | | <tt>'href_subpages'</tt> | |
+ | | z.B. <pre>Array( | ||
GRUPPENNUMMER => Array( | GRUPPENNUMMER => Array( | ||
'page' => 'PHP-SEITE{query}', | 'page' => 'PHP-SEITE{query}', | ||
Zeile 151: | Zeile 174: | ||
'page' => 'PHP-SEITE{query}', | 'page' => 'PHP-SEITE{query}', | ||
'successors' => BOOLEAN | 'successors' => BOOLEAN | ||
− | ) | + | ) |
− | )</pre> | + | )</pre> |
+ | | Ermöglicht es, für bestimmte Gruppen auf eine spezielle <tt>PHP-SEITE</tt> zu verlinken. Hierzu geben Sie anstatt <tt>GRUPPENNUMMER</tt> die Gruppennummer der Gruppe aus dem Backend ein. Statt <tt>PHP-SEITE</tt> fügen Sie den Namen und Pfad zur Zieldatei an, ausgehend vom Hauptverzeichnis des CMS!. Lassen Sie den Anhang <tt>{query}</tt> genau so stehen, falls in die Zieldatei auch DynPG über Globals eingeben wurde. <tt>BOOLEAN</tt> ersetzen Sie mit <tt>true</tt> wenn für Untergruppen dieser Gruppe auch auf diese spezielle PHP-Seite verlink werden soll, ansonsten mit <tt>false</tt>. | ||
Passen Sie auf, dass nach jedem <tt>GRUPPENNUMMER => Array(...)</tt> ein Komma notiert ist, allerdings nicht beim letzten. | Passen Sie auf, dass nach jedem <tt>GRUPPENNUMMER => Array(...)</tt> ein Komma notiert ist, allerdings nicht beim letzten. | ||
|- | |- | ||
− | + | | <tt>'full_load'</tt> | |
+ | | <tt>false</tt> oder <tt>true</tt> | ||
+ | | zeigt unabhängig von angeklickten Gruppen den kompletten Navigationsbaum mit Untergruppen an | ||
+ | |||
|- | |- | ||
− | + | | <tt>'full_load_articles'</tt> | |
+ | | <tt>false</tt> | ||
+ | | | ||
+ | |||
|- | |- | ||
− | + | | <tt>'limit_articles'</tt> | |
+ | | <tt>false</tt> oder eine Zahl | ||
+ | | Sofern dieser Parameter eine Zahl als Wert erhält, bestimmt er die Anzahl der Artikel pro Gruppe, die in der dynamischen Navigation angezeigt werden, wenn eine Gruppe statt Untergruppen Artikel enthält. | ||
+ | |||
|- | |- | ||
− | || <tt>'expand_subtree'</tt> | + | | <tt>'load_articles'</tt> |
+ | | <tt>true</tt> oder <tt>false</tt> | ||
+ | | Bestimmt ob Artikel im Menü angezeigt werden sollen. Bei <tt>false</tt> werden nur Gruppen im Menü angezeigt und keine Artikel (unabhängig von anderen Einstellungen, d.h. diese Eigenschaft überschreibt andere). Bei <tt>true</tt> werden Artikel im Menü angezeigt, es sei denn bestimmte Artikel werden durch andere Einstellungen ausgeblendet. | ||
+ | |||
+ | |- | ||
+ | | <tt>'expand_subtree'</tt> | ||
+ | | <tt>Array(4)</tt> oder <tt>Array(4,5)</tt> etc. | ||
+ | | zeigt die Untergruppen von Gruppe 4 (bzw. 4 und 5) in jedem Fall an. Sei Gruppe 4 bspw. die Gruppe ''News'' des Backends, dann werden die beispielhaften Untergruppen ''Lokalnachrichten'' und ''Weltnachrichten'' immer zur Navigation angeboten, auch wenn sich ein Benutzer auf der Website gerade einen Artikel aus der Gruppe ''Kontakt'' anschaut | ||
+ | |||
|- | |- | ||
− | + | | <tt>'implode_subtree'</tt> | |
+ | | <tt>Array(4)</tt> oder <tt>Array(4,5)</tt> etc. | ||
+ | | zeigt die Untergruppen von Gruppe 4 (bzw. 4 und 5) in jedem Fall NICHT an. Anmerkung: der Parameter <tt>expand_subtree</tt> überschreibt diese Einstellung. Ist also eine Gruppe in beiden Parametern aufgeführt, so werden die Untergruppen dieser Gruppe immer angezeigt, da der Parameter <tt>expand_subtree</tt> wichtiger ist. | ||
+ | |||
|- | |- | ||
− | + | | <tt>'real_expand'</tt> | |
+ | | <tt>false</tt> oder <tt>true</tt> | ||
+ | | Verwenden Sie das Template ''intelligent'' für die dynamische Navigation, setzen Sie diesen Parameter auf <tt>true</tt>, ansonsten auf <tt>false</tt> | ||
+ | |||
+ | |||
|- | |- | ||
− | + | | <tt>'max_depth'</tt> | |
+ | | <tt>null</tt> oder <tt>0</tt> oder <tt>1</tt> etc. | ||
+ | | Tiefe bis zu der (Unter-)Gruppen angezeigt werden. | ||
+ | |||
|- | |- | ||
− | + | | <tt>'min_depth'</tt> | |
+ | | <tt>null</tt> oder <tt>0</tt> oder <tt>1</tt> etc. | ||
+ | | Tiefe, die eine Gruppe mindestens haben muss um angezeigt zu werden, z.B. 1 um oberste Ebene der Gruppen aus dem Backend auszublenden. | ||
+ | |||
+ | |- | ||
+ | | <tt>'fetch_only'</tt> | ||
+ | | <tt>null</tt> oder <tt>int</tt> | ||
+ | | Selektiert nur die angegebene Gruppe und deren Untergruppen oder alles falls null. | ||
+ | |||
+ | |- | ||
+ | | <tt>'parse_article_lead'</tt> | ||
+ | | <tt>false</tt> oder <tt>true</tt> | ||
+ | | Falls <tt>true</tt> wird das Textersetzen auf nicht leere Leadfelder der Artikel ausgeführt und kann zur Verlangsamung des Menus führen. Das sollte nur eingeschaltet werden, wenn der Lead innerhalb des Menus auch wirklich dynamischen Inhalt enthält, welcher dort auch angezeigt werden soll. | ||
+ | |||
+ | |- | ||
+ | | <tt>'parse_group_shorttext'</tt> | ||
+ | | <tt>false</tt> oder <tt>true</tt> | ||
+ | | Falls <tt>true</tt> wird das Textersetzen auf nicht leere Kurztextfelder der Gruppen ausgeführt und kann zur Verlangsamung des Menus führen. Das sollte nur eingeschaltet werden, wenn der Kurztext innerhalb des Menus auch wirklich dynamischen Inhalt enthält, welcher dort auch angezeigt werden soll. | ||
+ | |||
|- | |- | ||
− | + | | <tt>'hide_not_public_groups'</tt> | |
+ | | <tt>false</tt> oder <tt>true</tt> | ||
+ | | Falls <tt>true</tt> werden nicht publizierte Gruppen und deren Untergruppen vom Menu nicht zurückgegeben. | ||
|} | |} | ||
Zeile 194: | Zeile 265: | ||
:andere Teile der Website haben sicherlich andere Templates. Wir setzen daher hier wieder auf das Standard-Template zurück | :andere Teile der Website haben sicherlich andere Templates. Wir setzen daher hier wieder auf das Standard-Template zurück | ||
− | ==CSS== | + | == CSS == |
+ | |||
+ | === Grober Aufbau === | ||
Die CSS-Dateien für die dynamische Navigation liegen im Verzeichnis <tt>dynpg/plugins/DPGdynmenu/styles</tt>. Die Datei <tt>menu.css</tt> ist hierbei meist die ausschlaggebende, so zum Beispiel in der Navigation der Musterwebsite 3. | Die CSS-Dateien für die dynamische Navigation liegen im Verzeichnis <tt>dynpg/plugins/DPGdynmenu/styles</tt>. Die Datei <tt>menu.css</tt> ist hierbei meist die ausschlaggebende, so zum Beispiel in der Navigation der Musterwebsite 3. | ||
− | + | Die dynamische Navigation wird von einem <tt>div</tt>-Tag mit der Id <tt>course_categories_menu</tt> umschlossen. Diese Angaben gelten also grundsätzlich für die gesamte dynamische Navigation und werden gegebenenfalls weitervererbt. | |
− | + | ||
− | Die dynamische Navigation wird von einem <tt>div</tt>-Tag mit der Id <tt>course_categories_menu</tt> umschlossen. | + | |
− | + | ||
− | Diese Angaben gelten also grundsätzlich für die gesamte dynamische Navigation und werden gegebenenfalls weitervererbt. | + | |
Im <tt>menu.css</tt> der Muster-Website 3 steht beispielsweise: | Im <tt>menu.css</tt> der Muster-Website 3 steht beispielsweise: | ||
<code>[css, N] | <code>[css, N] | ||
Zeile 211: | Zeile 280: | ||
</code> | </code> | ||
− | Um zu verhindern, dass die CSS-Angaben dieser Datei auch auf andere Teile der Website Einfluss haben, ist vor allen anderen CSS-Definitionen der Datei ebenfalls <tt>div#course_categories_menu</tt> notiert. Dadurch wirken sich die Angaben nur auf die dynamische Navigation aus. | + | {{Caution |
+ | |Um zu verhindern, dass die CSS-Angaben dieser Datei auch auf andere Teile der Website Einfluss haben, ist vor allen anderen CSS-Definitionen der Datei ebenfalls <tt>div#course_categories_menu</tt> notiert. Dadurch wirken sich die Angaben nur auf die dynamische Navigation aus.}} | ||
− | Innerhalb des <tt>course_categories_menu</tt> - <tt>div</tt> - Tags gibt es für jede Gruppe der obersten angezeigten Gruppenebene ein <div>-Tag mit der CSS- | + | === Div-Tags für Gruppen oberster Ebene === |
+ | Innerhalb des <tt>course_categories_menu</tt> - <tt>div</tt> - Tags gibt es für jede Gruppe der obersten angezeigten Gruppenebene ein <nowiki><div></nowiki>-Tag mit der CSS-ID <tt>group_fold_NUMMER</tt> wobei <tt>NUMMER</tt> der Gruppennummer der Gruppe aus dem Backend entspricht. In der Navigation der Muster-Website 3 gibt es also folgende Tags: | ||
<code>[html, N] | <code>[html, N] | ||
<div id="course_categories_menu"> | <div id="course_categories_menu"> | ||
Zeile 234: | Zeile 305: | ||
Damit würde der Text der Gruppe ''News'' (und eventueller Untergruppen) in der dynamischen Navigation blinken. | Damit würde der Text der Gruppe ''News'' (und eventueller Untergruppen) in der dynamischen Navigation blinken. | ||
− | Innerhalb der <tt>group_fold_NUMMER</tt> - <tt>div</tt> - Tags gibt es nun ein <tt>div</tt> - Tag, dass (neben einer weiteren CSS- | + | === Div-Tags für Unterpunkte === |
+ | |||
+ | Innerhalb der <tt>group_fold_NUMMER</tt> - <tt>div</tt> - Tags gibt es nun ein <tt>div</tt> - Tag, dass (neben einer weiteren CSS-ID) eine CSS-Klasse hat. Diese CSS-Klasse wird nach folgendem Muster gebildet: | ||
'''<tt>level_''A''_''B''_''C''_''D''_''E''</tt>''' | '''<tt>level_''A''_''B''_''C''_''D''_''E''</tt>''' | ||
− | {| class=" | + | {| class="wikitable" |
! Buchstabe !! mögliche Werte !! Beschreibung | ! Buchstabe !! mögliche Werte !! Beschreibung | ||
|- | |- | ||
Zeile 271: | Zeile 344: | ||
Weitere Informationen über die CSS-Klassen kann man schnell erhalten, indem man sich den HTML-Code eines generierten dynamischen Menüs anschaut, zum Beispiel aus der Muster-Website 3. | Weitere Informationen über die CSS-Klassen kann man schnell erhalten, indem man sich den HTML-Code eines generierten dynamischen Menüs anschaut, zum Beispiel aus der Muster-Website 3. | ||
− | == | + | == Template == |
− | Diese Templates liegen im Ordner <tt>dynpg/plugins/DPGdynmenu/templates</tt>. Hier finden sie Ordner, die jeweils eine <tt>menu.tpl</tt> enthalten. Welcher dieser Ordner aktiv ist, bestimmen Sie durch das Global <tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');</tt>. | + | Diese Templates für das Navigationsmenü liegen im Ordner <tt>dynpg/plugins/DPGdynmenu/templates</tt>. Hier finden sie Ordner, die jeweils eine <tt>menu.tpl</tt> enthalten. Welcher dieser Ordner aktiv ist, bestimmen Sie durch das Global <tt>$GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');</tt>. |
− | Die Templates dienen als Vorlage für die Generierung des HTML-Codes der dynamischen Navigation. In ihnen werden auch die CSS-Klassen definiert, welche in [[#CSS|CSS]] erklärt wurden. Außerdem finden hier Templateplatzhalter der Form <tt><nowiki>{$PLATZHALTER}</nowiki></tt> Verwendung, die DynPG dynamisch durch Inhalt ersetzt. | + | Die Templates dienen als Vorlage für die Generierung des HTML-Codes der dynamischen Navigation. In ihnen werden auch die CSS-Klassen definiert, welche in [[#CSS|CSS]] erklärt wurden. Außerdem finden hier Templateplatzhalter der Form <tt><nowiki>{$PLATZHALTER}</nowiki></tt> Verwendung, die DynPG dynamisch durch Inhalt ersetzt. Das Template ''horizontal'' generiert beispielsweise ein horizontales Menü, während das Template ''intelligent'' ein vertikales Menü erzeugt. |
− | + | == Feste Links einbauen == | |
− | + | ||
− | + | ||
− | + | ||
− | ==Feste Links einbauen== | + | |
Hierzu erstellt man im Backend eine Gruppe mit dem Namen des festen Links und merkt sich die Gruppennummer. Mittels des Plugin-Parameters <tt>'href_subpages'</tt> setzt man für diese Gruppennummer nun als Ziel die Datei <tt>counter.php</tt> fest und übergibt dieser als Parameter das feste Linkziel. Beispiel: Wir wollen einen Link auf die Google-Webseite setzen. Also erstellen wir im Backend eine Gruppe mit dem Namen ''Google-Websuche'' und notieren die Gruppennummer (z.B. 33). In die PHP-Datei unserer dynamischen Navigation fügen wir nun folgendes ein: | Hierzu erstellt man im Backend eine Gruppe mit dem Namen des festen Links und merkt sich die Gruppennummer. Mittels des Plugin-Parameters <tt>'href_subpages'</tt> setzt man für diese Gruppennummer nun als Ziel die Datei <tt>counter.php</tt> fest und übergibt dieser als Parameter das feste Linkziel. Beispiel: Wir wollen einen Link auf die Google-Webseite setzen. Also erstellen wir im Backend eine Gruppe mit dem Namen ''Google-Websuche'' und notieren die Gruppennummer (z.B. 33). In die PHP-Datei unserer dynamischen Navigation fügen wir nun folgendes ein: | ||
Zeile 296: | Zeile 365: | ||
</code> | </code> | ||
− | ==Mehrsprachiges Menü== | + | == Anpassen des Navigationsmenüs == |
+ | |||
+ | Siehe Artikel: [[Anpassen des Navigationsmenüs]] | ||
+ | |||
+ | == Mehrsprachiges Menü == | ||
+ | → ''Hauptartikel'': [[Tutorial - Mehrsprachige Webseiten]] | ||
− | Hierzu gibt es | + | Hierzu gibt es im [[:Kategorie:Tutorials|Tutorialbereich]] ein Tutorial zur [[Tutorial - Mehrsprachige Webseiten|Erstellung mehrsprachiger Webseiten]]. Die grundsätzliche Idee ist bei z.B. zwei Sprachen zwei Gruppenbäume im Backend aufzubauen. Die oberste Gruppe des ersten Baumes wäre beispielsweise die Gruppe ''Deutsch'', die oberste Gruppe des zweiten Baumes wäre zum Beispiel ''English''. |
− | In der zweiten Ebene kommen dann unter ''Deutsch'' bzw. ''English'' Untergruppen wie ''News''/''Nachrichten'', ''Produkte''/''Products'', ''Hilfe''/''Support'' und so weiter. Man erstellt sich nun zwei PHP-Dateien (<tt>navi_de.php</tt>, <tt>navi_en.php</tt>) wie oben beschrieben [[#Einrichten| | + | In der zweiten Ebene kommen dann unter ''Deutsch'' bzw. ''English'' Untergruppen wie ''News''/''Nachrichten'', ''Produkte''/''Products'', ''Hilfe''/''Support'' und so weiter. Man erstellt sich nun zwei PHP-Dateien (<tt>navi_de.php</tt>, <tt>navi_en.php</tt>) wie oben beschrieben [[#Einrichten|einrichten]]. In diesen wird dann mit den Befehlen aus [[#Globalsreferenz|Globalsreferenz]] der jeweils nicht passende Baum ausgeblendet. |
− | ==Siehe auch== | + | == Siehe auch == |
− | + | * [[Implementation eines kompletten Hauptmenüs]] | |
− | *[[Implementation eines kompletten Hauptmenüs]] | + | * [[Anpassen des Navigationsmenüs]] |
− | *[[ | + | * [[Snippet-Beispiele]] |
− | + | ||
− | *[[Snippet-Beispiele]] | + |
Aktuelle Version vom 26. September 2011, 15:31 Uhr
Inhaltsverzeichnis
Beschreibung
Die dynamische Navigation ist Bestandteil des kostenlosen Grundmoduls von DynPG und bereits im Standard-DynPG integriert. Es ist keine separate Installation notwendig. Sie ermöglicht es Ihnen einfach und flexibel eine dynamisches Navigationsmenü auf Ihrer Homepage zu erstellen.
Ein dynamisches Menü bildet die Gruppenstruktur im Backend, also die Abfolge von Gruppen, Untergruppen und Artikeln in einer Gruppe, als Menü ab. Sie macht also die logische Struktur ihrer Artikel aus dem Backend in der Webseite sichtbar und navigierbar. Der Vorteil ist, dass man im Backend neue Gruppen o.ä. erstellt und diese dann im Hauptmenü erscheinen. Dies ist auch bei Untergruppen nützlich, z.B. wenn eine neue Untergruppe Lokalnachrichten zur Hauptgruppe News hinzukommt.
Einrichten
→ Hauptartikel: DynPG Module einbinden
Bemerkung: | Die ID des Artikels benötigen Sie erneut, wenn Sie in eine PHP-Datei mittels eines Globals die dynamische Navigation einbinden. |
Nehmen wir an, es würde folgende Ordner-Struktur vorliegen:
- http-docs/dynpg : hier liegt das DynPG-CMS
- http-docs/index.php : die Hauptseite Ihrer Website
- http-docs/folgeseite.php : eine andere PHP-Datei der Website
- http-docs/inc/navi.php : In diese Datei platziert man häufig den Code für die Navigation, dadurch ist er leichter wiederverwendbar
Den relativ komplexen Code der inc/navi.php kann man anhand der Musterwebsites nachvollziehen. Für eine genauere Erklärung der einzelnen verwendeten Globals siehe die Globals-Übersicht von DynPG und weiter unten die Funktionsübersicht der dynamischen Navigation:
Datei inc/navi.php:
<?php $GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'intelligent'); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'real_expand', TRUE); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'order', Array('INDEX')); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'sort', Array('ASC')); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'href_page_groups', '../folgeseite.php'); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'href_page_articles', '../folgeseite.php'); $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', 'href_page_detail', '../folgeseite.php'); $GLOBALS["DynPG"]->SetParam_PlugIn_Param( 'DPGdynmenu', 'href_subpages', Array( 0 => Array( 'page' => '../formular.php{query}', 'successors' => true ), 21 => Array( 'page' => '../blog.php{query}', 'successors' => true ), 15 => Array( 'page' => '../sitemap.php{query}', 'successors' => true ), 16 => Array( 'page' => '../veranstaltungen.php{query}', 'successors' => true ), 21 => Array( 'page' => '../blog.php{query}', 'successors' => true ), 6 => Array( 'page' => '../index.php{query}', 'successors' => true ) ) ); $GLOBALS["DynPG"]->SetupTemplate('uneditable'); $GLOBALS["DynPG"]->SetParam_A_Anytime(TRUE); $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(FALSE); $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(FALSE); $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(FALSE); $GLOBALS["DynPG"]->SetParam_A_Article(1); $GLOBALS["DynPG"]->Write_Article(); $GLOBALS["DynPG"]->SetupTemplate('default'); ?>
Man kann nun in der index.php mittels
<?php include("inc/navi.php"); ?>
die Navigation einbinden, ebenso z.B. auch in der folgeseite.php.
Die dynamische Navigation kann nun an verschiedenen Stellen angepasst werden. Neben den Globals in der PHP-Datei (Globalsreferenz) ist dies im Backend durch das Erstellen von Gruppen und Artikeln möglich (Dynamische Navigation im Backend). Erweiterte Möglichkeiten ergeben sich durch das CSS und die Templates.
→ Hauptartikel: Erstellen des Navigationsmenüs im Backend
Wie bereits erwähnt, bildet die dynamische Navigation die Gruppenstruktur des Backends auf einer Webseite ab. In der Musterwebsite 3 ist im Backend zum Beispiel folgende Gruppenstruktur zu erkennen:
Auf der Website sieht dies dann wie folgt aus:
Welche Untergruppen angezeigt werden, hängt zum einen davon ab, welcher Navigationspunkt gerade aktiv ist (also angeklickt wurde) und zum anderen von den benutzten Globals in der PHP-Datei und den Veröffentlichungseinstellungen der Gruppe im Backend.
Globalsreferenz
Dieser Abschnitt erklärt die Globals aus dem PHP-Code von Schritt 2 des Punkts Einrichten.
Bemerkung: | Die Parameter haben Default-Werte, müssen also nicht immer gesetzt werden. |
Globals für das Plugin
- $GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');
- Hiermit wählt man den Template-Ordner für die dynamische Navigation aus. Diese Template-Ordner liegen in dynpg/plugins/DPGdynmenu/templates. Aus diesem Ordner wird die Template-Datei menu.tpl zur Generierung des Menüs genommen. Dies ist unabhängig vom Global $GLOBALS["DynPG"]->SetupTemplate(...);, der das Template der Artikelansichten bestimmt.
- $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGdynmenu', PARAMETERNAME, PARAMETERWERT);
PARAMETERNAME PARAMETERWERT Beschreibung 'order' Array('INDEX') oder Array('NAME') Reihenfolge der Gruppen in der Navigation nach Name oder im Backend gesetzten Index 'sort' Array('ASC') oder Array('DESC') aufsteigende oder absteigende Sortierung 'order_articles' z.B. Array('INDEX') sortiert Artikel in der dynamischen Navigation (falls diese angezeigt werden) 'sort_articles' z.B. Array('ASC') bestimmt aufsteigende oder absteigende Sortierreihenfolge der Artikel 'href_page_groups' z.B. '../folgeseite.php' Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf den Gruppennamen, sofern die Gruppe Untergruppen hat. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG '../' wichtig, siehe Ordnerstruktur weiter oben!) 'href_page_articles' z.B. '../folgeseite.php' Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf den Gruppennamen, sofern die Gruppe Artikel enthält. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG '../' wichtig, siehe Ordnerstruktur weiter oben!) 'href_page_detail' z.B. '../folgeseite.php' Seite auf die standardmäßig weiterverlinkt wird bei einem Klick auf einen Artikelnamen. Wird dieser Parameter nicht angegeben, so wird auf die aktuelle PHP-Seite verlinkt. (ACHTUNG '../' wichtig, siehe Ordnerstruktur weiter oben!) 'href_subpages' z.B. Array( GRUPPENNUMMER => Array( 'page' => 'PHP-SEITE{query}', 'successors' => BOOLEAN ), ... ... ... GRUPPENNUMMER => Array( 'page' => 'PHP-SEITE{query}', 'successors' => BOOLEAN ) )
Ermöglicht es, für bestimmte Gruppen auf eine spezielle PHP-SEITE zu verlinken. Hierzu geben Sie anstatt GRUPPENNUMMER die Gruppennummer der Gruppe aus dem Backend ein. Statt PHP-SEITE fügen Sie den Namen und Pfad zur Zieldatei an, ausgehend vom Hauptverzeichnis des CMS!. Lassen Sie den Anhang {query} genau so stehen, falls in die Zieldatei auch DynPG über Globals eingeben wurde. BOOLEAN ersetzen Sie mit true wenn für Untergruppen dieser Gruppe auch auf diese spezielle PHP-Seite verlink werden soll, ansonsten mit false. Passen Sie auf, dass nach jedem GRUPPENNUMMER => Array(...) ein Komma notiert ist, allerdings nicht beim letzten.
'full_load' false oder true zeigt unabhängig von angeklickten Gruppen den kompletten Navigationsbaum mit Untergruppen an 'full_load_articles' false 'limit_articles' false oder eine Zahl Sofern dieser Parameter eine Zahl als Wert erhält, bestimmt er die Anzahl der Artikel pro Gruppe, die in der dynamischen Navigation angezeigt werden, wenn eine Gruppe statt Untergruppen Artikel enthält. 'load_articles' true oder false Bestimmt ob Artikel im Menü angezeigt werden sollen. Bei false werden nur Gruppen im Menü angezeigt und keine Artikel (unabhängig von anderen Einstellungen, d.h. diese Eigenschaft überschreibt andere). Bei true werden Artikel im Menü angezeigt, es sei denn bestimmte Artikel werden durch andere Einstellungen ausgeblendet. 'expand_subtree' Array(4) oder Array(4,5) etc. zeigt die Untergruppen von Gruppe 4 (bzw. 4 und 5) in jedem Fall an. Sei Gruppe 4 bspw. die Gruppe News des Backends, dann werden die beispielhaften Untergruppen Lokalnachrichten und Weltnachrichten immer zur Navigation angeboten, auch wenn sich ein Benutzer auf der Website gerade einen Artikel aus der Gruppe Kontakt anschaut 'implode_subtree' Array(4) oder Array(4,5) etc. zeigt die Untergruppen von Gruppe 4 (bzw. 4 und 5) in jedem Fall NICHT an. Anmerkung: der Parameter expand_subtree überschreibt diese Einstellung. Ist also eine Gruppe in beiden Parametern aufgeführt, so werden die Untergruppen dieser Gruppe immer angezeigt, da der Parameter expand_subtree wichtiger ist. 'real_expand' false oder true Verwenden Sie das Template intelligent für die dynamische Navigation, setzen Sie diesen Parameter auf true, ansonsten auf false
'max_depth' null oder 0 oder 1 etc. Tiefe bis zu der (Unter-)Gruppen angezeigt werden. 'min_depth' null oder 0 oder 1 etc. Tiefe, die eine Gruppe mindestens haben muss um angezeigt zu werden, z.B. 1 um oberste Ebene der Gruppen aus dem Backend auszublenden. 'fetch_only' null oder int Selektiert nur die angegebene Gruppe und deren Untergruppen oder alles falls null. 'parse_article_lead' false oder true Falls true wird das Textersetzen auf nicht leere Leadfelder der Artikel ausgeführt und kann zur Verlangsamung des Menus führen. Das sollte nur eingeschaltet werden, wenn der Lead innerhalb des Menus auch wirklich dynamischen Inhalt enthält, welcher dort auch angezeigt werden soll. 'parse_group_shorttext' false oder true Falls true wird das Textersetzen auf nicht leere Kurztextfelder der Gruppen ausgeführt und kann zur Verlangsamung des Menus führen. Das sollte nur eingeschaltet werden, wenn der Kurztext innerhalb des Menus auch wirklich dynamischen Inhalt enthält, welcher dort auch angezeigt werden soll. 'hide_not_public_groups' false oder true Falls true werden nicht publizierte Gruppen und deren Untergruppen vom Menu nicht zurückgegeben.
Sinnvolle Globals vom DynPG-CMS
- $GLOBALS["DynPG"]->SetupTemplate('uneditable');
- ermöglicht Navigation in der Seite obwohl Editiermodus im Backend angeschaltet ist
- $GLOBALS["DynPG"]->SetParam_A_Anytime(TRUE);
- Menü soll immer angezeigt werden
- $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(FALSE);
- keine weitere Navigation(Breadcrumb) anzeigen
- $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(FALSE);
- kein Link zu Print-Seite anzeigen
- $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(FALSE);
- keine Artikelüberschrift (des Artikels mit dem DynMenü-Platzhalter) und kein Artikelleadtext anzeigen
- $GLOBALS["DynPG"]->SetParam_A_Article(1);
- Artikel mit dem Dynmenü-Platzhalter setzen (Hier die Artikelnummer aus Einrichten einfügen!)
- $GLOBALS["DynPG"]->Write_Article();
- Artikel ausgeben
- $GLOBALS["DynPG"]->SetupTemplate('default');
- andere Teile der Website haben sicherlich andere Templates. Wir setzen daher hier wieder auf das Standard-Template zurück
CSS
Grober Aufbau
Die CSS-Dateien für die dynamische Navigation liegen im Verzeichnis dynpg/plugins/DPGdynmenu/styles. Die Datei menu.css ist hierbei meist die ausschlaggebende, so zum Beispiel in der Navigation der Musterwebsite 3.
Die dynamische Navigation wird von einem div-Tag mit der Id course_categories_menu umschlossen. Diese Angaben gelten also grundsätzlich für die gesamte dynamische Navigation und werden gegebenenfalls weitervererbt. Im menu.css der Muster-Website 3 steht beispielsweise:
div#course_categories_menu { margin: 0; padding: 0; width: 180px; }
Div-Tags für Gruppen oberster Ebene
Innerhalb des course_categories_menu - div - Tags gibt es für jede Gruppe der obersten angezeigten Gruppenebene ein <div>-Tag mit der CSS-ID group_fold_NUMMER wobei NUMMER der Gruppennummer der Gruppe aus dem Backend entspricht. In der Navigation der Muster-Website 3 gibt es also folgende Tags:
<div id="course_categories_menu"> <div id="group_fold_2"></div> <!--Produkte--> <div id="group_fold_3"></div> <!--Support--> <div id="group_fold_9"></div> <!--News--> <div id="group_fold_4"></div> <!--Über uns--> <div id="group_fold_5"></div> <!--Kontakt--> <div id="group_fold_21"></div> <!--Blog--> <div id="group_fold_15"></div> <!--Sitemap--> <div id="group_fold_6"></div> <!--Home--> </div>
Möchte man nun Eigenschaften nur an einem bestimmten Teil der Navigation machen, so könnte man im CSS-File folgende Angabe machen:
div#course_categories_menu div#group_fold_9 { text-decoration:blink; }
Damit würde der Text der Gruppe News (und eventueller Untergruppen) in der dynamischen Navigation blinken.
Div-Tags für Unterpunkte
Innerhalb der group_fold_NUMMER - div - Tags gibt es nun ein div - Tag, dass (neben einer weiteren CSS-ID) eine CSS-Klasse hat. Diese CSS-Klasse wird nach folgendem Muster gebildet:
level_A_B_C_D_E
Buchstabe | mögliche Werte | Beschreibung |
---|---|---|
A | 0 oder 1 oder 2 etc. | gibt das Level der Gruppe an, also die Verzweigungstiefe in der sich die Navigation befindet |
B | r (nicht letzter), e (letzter) | gibt an, ob nach dieser Gruppe noch weitere aufgelistet werden (z.B. in Musterwebsite 3 ist die Gruppe 6 "Home" die letzte des Menüs) |
C | a (ist aktiv), i (ist nicht aktiv) | gibt an, ob die Gruppe aktiv ist, d.h. ob sie durch einen Klick ausgewählt wurde |
D | exp (ausgeklappt), cll (eingeklappt) | gibt an, ob die Untergruppen dieser Gruppe ausgeklappt sind oder nicht |
E | _hover (Mauszeiger ist über dem Element), nichts (Mauszeiger ist nicht über dem Element) | gibt an, ob sich der Mauszeiger über dem Gruppennamen befindet oder nicht |
Mithilfe dieses Schemas kann man nun bestimmen, welche CSS-Klassen man in der CSS-Datei angeben muss um bestimmte Effekte hervorzurufen. Möchte man beispielsweise, dass alle Elemente der zweitobersten Ebene blinken, wenn der Mauszeiger über dem Element ist, so notiert man in der CSS-Datei:
div#course_categories_menu div#level_1_r_a_exp_hover, div#course_categories_menu div#level_1_r_a_cll_hover, div#course_categories_menu div#level_1_r_i_exp_hover, div#course_categories_menu div#level_1_r_i_cll_hover, div#course_categories_menu div#level_1_e_a_exp_hover, div#course_categories_menu div#level_1_e_a_cll_hover, div#course_categories_menu div#level_1_e_i_exp_hover, div#course_categories_menu div#level_1_e_i_cll_hover { text-decoration:blink; }
Diese Struktur der div-Tags wiederholt sich mit tieferen Gruppenebenen / Untergruppen. Zum Beispiel tauchen die div-Tags der Untergruppen vom Über uns-Menüpunkt aus der Muster-Website 3 innerhalb des group_fold_4 - div - Tags auf.
Weitere Informationen über die CSS-Klassen kann man schnell erhalten, indem man sich den HTML-Code eines generierten dynamischen Menüs anschaut, zum Beispiel aus der Muster-Website 3.
Template
Diese Templates für das Navigationsmenü liegen im Ordner dynpg/plugins/DPGdynmenu/templates. Hier finden sie Ordner, die jeweils eine menu.tpl enthalten. Welcher dieser Ordner aktiv ist, bestimmen Sie durch das Global $GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGdynmenu', 'TEMPLATEORDNER');.
Die Templates dienen als Vorlage für die Generierung des HTML-Codes der dynamischen Navigation. In ihnen werden auch die CSS-Klassen definiert, welche in CSS erklärt wurden. Außerdem finden hier Templateplatzhalter der Form {$PLATZHALTER} Verwendung, die DynPG dynamisch durch Inhalt ersetzt. Das Template horizontal generiert beispielsweise ein horizontales Menü, während das Template intelligent ein vertikales Menü erzeugt.
Feste Links einbauen
Hierzu erstellt man im Backend eine Gruppe mit dem Namen des festen Links und merkt sich die Gruppennummer. Mittels des Plugin-Parameters 'href_subpages' setzt man für diese Gruppennummer nun als Ziel die Datei counter.php fest und übergibt dieser als Parameter das feste Linkziel. Beispiel: Wir wollen einen Link auf die Google-Webseite setzen. Also erstellen wir im Backend eine Gruppe mit dem Namen Google-Websuche und notieren die Gruppennummer (z.B. 33). In die PHP-Datei unserer dynamischen Navigation fügen wir nun folgendes ein:
$GLOBALS["DynPG"]->SetParam_PlugIn_Param( 'DPGdynmenu', 'href_subpages', Array( 33 => Array( 'page' => 'counter.php?inc=http://www.google.com', 'successors' => true ) ) );
Siehe Artikel: Anpassen des Navigationsmenüs
Mehrsprachiges Menü
→ Hauptartikel: Tutorial - Mehrsprachige Webseiten
Hierzu gibt es im Tutorialbereich ein Tutorial zur Erstellung mehrsprachiger Webseiten. Die grundsätzliche Idee ist bei z.B. zwei Sprachen zwei Gruppenbäume im Backend aufzubauen. Die oberste Gruppe des ersten Baumes wäre beispielsweise die Gruppe Deutsch, die oberste Gruppe des zweiten Baumes wäre zum Beispiel English.
In der zweiten Ebene kommen dann unter Deutsch bzw. English Untergruppen wie News/Nachrichten, Produkte/Products, Hilfe/Support und so weiter. Man erstellt sich nun zwei PHP-Dateien (navi_de.php, navi_en.php) wie oben beschrieben einrichten. In diesen wird dann mit den Befehlen aus Globalsreferenz der jeweils nicht passende Baum ausgeblendet.