Welcome, Guest. Please login or register.
Did you miss your activation email?
February 12, 2012, 02:57:48 PM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
149649 Posts in 21100 Topics by 7539 Members
Latest Member: ionline
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Mehrsprachig mehrere Menüs Tutorial für show menu2  (Read 2297 times)
kirk
WebsiteBaker Org e.V.

Offline Offline

Posts: 204



WWW
« on: April 15, 2009, 08:37:53 PM »

Hier mal eine Anleitung zum ewigen Thema Mehrsprachig mit mehreren Menüs so wie ich es auf meiner Seite realisiert habe und damit sehr zufrieden bin.

www.micro-agentur.de

Es gibt ein horizontales Hauptmenü, ein vertikales Menü für das sublevel des Hauptmenü, und ein footer Menü. Dabei ist das Ziel das das footer Menü auch mitbekommt welche Sprache ausgewählt ist. Die Sprachwahl wird nicht über show_menu2 aufgerufen sondern  in das Template eingecodet. Dazu später mehr.

Voraussetzung ist ein WB 2.7 mit show_menu2

Im Backend Optionen mehrere Menüs einschalten.

In der info.php des Template für das das zweite footer menü eine id und einen Namen vergeben:


Code:
// Definition der Menüelemente (wenn mehr als 1 Menü verwendet wird)
$menu[1]    = 'Hauptnavigation';
$menu[2]    = 'Footernavigation';

In der index.php die horizontale Hauptnavigation Level1 so aufrufen:

Code:
<?php show_menu2(1SM2_ROOT+1SM2_START); ?>

für das Level2 der Hauptnavigation welches ich auf meiner Seite vertikal einbinde diesen Code:

Code:
<?php show_menu2(1SM2_ROOT+2SM2_START); ?>


Die Footernavigation wird so aufgerufen:

Code:
<?php  // Submenu
    
show_menu2(2$wb->page['root_parent'], SM2_ALL,
        
SM2_ALL SM2_PRETTY); ?>


Jetzt muss im Backend für jede Sprache ein Seitenbaum angelegt werden. Hier als Beispiel DE und EN.
Jede der Sprachen bekommt eine Eingangsseite welche als "Menü Link" Seite realisiert wird. Jede weitere Seite
in diesem Sprach Ast ist dann eine Unterseite der "Menü Link" Seite die wir DE bzw. EN nennen.
Wichtig: Eine der "Menü Link" Seiten muss als erstes angelegt werden damit der URL Aufruf auch gleich den richtigen
Sprachbaum zeigt in diesem Fall DE - Start

- DE           (Hauptnavigation root level)
   - Start     (Hauptnavigation level1 Unterseite von DE)
      Seite1   (Hauptnavigation level2 Unterseite von Start)
      Seite2   (Hauptnavigation level2 Unterseite von Start)
      Seite3   (Hauptnavigation level2 Unterseite von Start)

- EN           (Hauptnavigation root level)
   - Home      (Hauptnavigation level1 Unterseite von EN)
      Page1    (Hauptnavigation level2 Unterseite von Home)
      Page2    (Hauptnavigation level2 Unterseite von Home)
      Page3    (Hauptnavigation level2 Unterseite von Home)


  - Kontakt    (Footernavigation Unterseite von DE)
  - Impressum  (Footernavigation Unterseite von DE)

  - Contact    (Footernavigation Unterseite von EN)
  - Disclaimer (Footernavigation Unterseite von EN)


Jetzt fehlt noch ein Sprachwahl Menü. Das wird nicht mit show_menu2 aufgerufen sondern in die index.php des Templates eingecodet.

Code:
<a href="http://yourdomain/pages/de/start.php"><img src="<?php echo TEMPLATE_DIR?>/img/deflag.jpg" alt="DEUTSCH" border="0" /></a>
<a href="http://yourdomain/pages/en/home.php"><img src="<?php echo TEMPLATE_DIR?>/img/enflag.jpg" alt="ENGLISH" border="0" /></a>

Die dazu gehörigen Sprachflaggen liegen im img Ordner des Templates. Mann kann das natürlich auch mit reinen Text links machen.

Fertig. Das wars.

Ich hatte mich selbst lange Zeit durch die vielen Beiträge zu diesem Thema durchbeissen müssen und hoffe euch damit zu helfen.
Ich bin kein Programmierer und meine Anleitung versteht sich nicht als Ultimative Lösung aber so Funktioniert es zumindest bei mir.

Kirk
« Last Edit: June 23, 2009, 12:02:59 AM by kirk » Logged
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4755



« Reply #1 on: April 15, 2009, 08:50:56 PM »

Lieber Kirk.

Vielen Dank für diese ausführliche Anleitung.

Grade heute muss ich eine - bisher auf HTML Basis betriebene - multilinguale Seite in WB portieren. Und es ist meine erste solche Seite.

Vielleicht hast Du, oder auch jemand anderes, sich mit dem Thema beschäftigt, wie es wäre, dass ich auf genau der selben Seite bleiben könnte - nur, im Falle ich drücke auf die Flagge der anderen Seite - eben in der neuen Sparche.

Ich versuche mich deutlicher auszudrücken:
Dein obiges Beispiel der Seitenbäume:
Quote
- DE           (Hauptnavigation root level)
   - Start     (Hauptnavigation level1 Unterseite von DE)
      Seite1   (Hauptnavigation level2 Unterseite von Start)
      Seite2   (Hauptnavigation level2 Unterseite von Start)
      Seite3   (Hauptnavigation level2 Unterseite von Start)

- EN           (Hauptnavigation root level)
   - Home      (Hauptnavigation level1 Unterseite von EN)
      Page1    (Hauptnavigation level2 Unterseite von Home)
      Page2    (Hauptnavigation level2 Unterseite von Home)
      Page3    (Hauptnavigation level2 Unterseite von Home)

Wenn ich jetzt auf EN/Page2 bin, ist es irgendwie möglich, durch das betätigen der Flagge DE auf DE/Seite2 befördert zu werden?
Etwas das in dieser Richtung gehen würde - auch wenn ich alle Seiten unterhalb EN/DE gleich bennenen müsste, also ungefähr so:
Quote
- DE           
   - Start   
      page_1   
      page_2   
      page_3 

- EN         
   - Start   
      page_1   
      page_2   
      page_3 


Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
kirk
WebsiteBaker Org e.V.

Offline Offline

Posts: 204



WWW
« Reply #2 on: April 15, 2009, 09:17:29 PM »

Hi Stefek,

Nein da hab ich mich nicht mit befasst. Da gibt es aber Language Matrix schau mal im amasp nach.

Ich selbst bin der Meinung wenn ich über eine Suchmaschine auf eine falsche Sprache gelandet bin und ich sehe das es noch eine meine Sprache gibt möchte ich doch ohne hin das ganze von vorne gucken.

Kirk
Logged
doc
Guest
« Reply #3 on: April 15, 2009, 09:22:22 PM »

@Stefek:
Geht auch mit show_menu2 und ein paar Zeilen PHP Code. Weitere Infos in diesem Thread, oder eben mit dem Language Matrix Modul. Mir persönlich gefällt show_menu2 besser, da flexibler.

Christian
Logged
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4755



« Reply #4 on: April 15, 2009, 10:11:44 PM »

Ich selbst bin der Meinung wenn ich über eine Suchmaschine auf eine falsche Sprache gelandet bin und ich sehe das es noch eine meine Sprache gibt möchte ich doch ohne hin das ganze von vorne gucken.

Hallo Kirk,
im Prinzip hast Du ja recht, doch manchmal habe ich die Erfahrung gemacht, dass ich über google auf eine Seite komme (EN) und dann festgestellt habe, dass sie multilangal ist und dann klicke ich auf die Flagge und lande auf der Startseite... wühl... wühl.. manchmal ist grade die Seite so verschachtelt auf einer unterebene, dass ich doch wieder den Zurückbutton betättige und das ganze auf englisch studiere...

Das würde ich zumindest ansatzweise vermeiden.

Christian,
danke für den Link.
Das ganze sieht für meine Begriffe sehr umständlich und kompliziert aus.
Zugegebener maßen hat es mit meinem Mangel an Verständnis für PHP zu tun.

Danke jedenfalls Euch Beiden.

Vielleicht ist diese Problematik eines Admin-Tools wert?
Nicht kurzfristig, aber wenn jemand es umsetzen könnte, wäre sicher gut.

Gruß,
Stefek

Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
doc
Guest
« Reply #5 on: April 15, 2009, 10:14:35 PM »

Hi Stefek,

Quote from: Stefek
Das ganze sieht für meine Begriffe sehr umständlich und kompliziert aus.
Bei WB führen viele Wege nach Rom. Habe das ganze mal für nen Kunden so umgesetzt, waren so 10-15 Zeilen PHP Code im Templlate. Andere Wege (z.B. Language Matrix mit Pflege der IDs via Backend) führen aber auch ans Ziel.

Ein Admin-Tool benötigt es dafür wahrlich nicht, maximal ein simples Codesnippet. Vielleicht bastelt ja mal jemand was.

Gruss Christian
« Last Edit: April 15, 2009, 10:16:57 PM by doc » Logged
Bastian

Offline Offline

Posts: 161



WWW
« Reply #6 on: April 30, 2009, 09:02:01 PM »

Hallo Zusammen,
versuche nun schon Seit 3 Tagen die Navigation zusammen zu bauen, bekomme es leider nicht hin
Verschieden Menus, weil ich dazwischen Überschriften rein machen muss
Und dann brauch ich noch eine Horizontale Leiste, in der die Submenüs dargestellt werden
Menu Aufrufe in der Info habe ich, habe dem Submenuseiten ein eigenes Menu zugewiesen, Richtig falsch?

DE                                               Submenu von Menu 1,2,3,....... (seite 1.1.1, seite 1.1.2 oder seite 2.1.1, seite 2.1.2)
 Menu 1
   Seite 1.1
   Seite 1.2
 Menu 2
   Seite 2.1
   Seite 2.2
 Menu 3
   Seite 3.1
   Seite 3.2
 
EN
 Menu 1
   Seite 1.1
   Seite 1.2
 Menu 2
   Seite 2.1
   Seite 2.2
 Menu 3
   Seite 3.1
   Seite 3.2

Kann mir mal einer die Menüaufrufe dazu sagen, oder einen evtl Lösungsansatz?

VIELEN DANK
MFG Bastian
 
« Last Edit: May 04, 2009, 04:00:18 PM by Bastian » Logged
Bastian

Offline Offline

Posts: 161



WWW
« Reply #7 on: May 05, 2009, 11:44:23 AM »

Keiner ne lösung?  sad
Logged
kweitzel
Forum administrator
*****
Offline Offline

Posts: 6820


WWW
« Reply #8 on: May 05, 2009, 05:52:08 PM »

Ansatz:

1) Nimm ShowMenu2.
2) Menü 1 wenn Du die Sprachen nicht mitangezeigt bekommen willst start bei root+1 und ein Limit von 1 Level
3) Menü 2 (horizontal) start mit root+2 und current children (wenn Du innerhalb des Astes bleiben willst)

http://code.jellycan.com/sm2test/

Gruß

Klaus
Logged

WebsiteBaker Org e.V. - for WebsiteBaker

Bastian

Offline Offline

Posts: 161



WWW
« Reply #9 on: May 08, 2009, 01:47:55 PM »

Ansatz:

1) Nimm ShowMenu2.
2) Menü 1 wenn Du die Sprachen nicht mitangezeigt bekommen willst start bei root+1 und ein Limit von 1 Level
3) Menü 2 (horizontal) start mit root+2 und current children (wenn Du innerhalb des Astes bleiben willst)

http://code.jellycan.com/sm2test/

Gruß

Klaus

Hallo Klaus,
Das ist schon richtig, aber ich habe ja mehrer Menüs auf der Linken Seite, deren Untermenus alle an der Selben Stelle erscheinen sollen.
Mit deiner Lösung muss ich aber keine verschiedenen Menüs haben, ich rufe da ja 2 mal das selbe auf, nur eben auf verschiedenen Ebenen anfangen und enden?

Gruß Bastian
Logged
kweitzel
Forum administrator
*****
Offline Offline

Posts: 6820


WWW
« Reply #10 on: May 08, 2009, 07:44:50 PM »

Seitenbaum:
- EN (Root)
-- Seite 1 (Root + 1)
-- Seite 2 (Root + 1)
--- Unterseite 2.1 (Root + 2)
--- Unterseite 2.2 (Root + 2)
-- Seite 3 (Root+1)

Also, Hauptmenü wird das Sprachinterne Menü, 1 Level unterhalb der Root und Untermenü der Level 2 unterhalb der Sprachauswahl. Den kannst Du ja so tief wie gewünscht definieren (also auch mit Sub-Sub-Seiten). Macht die Sache etwas einfacher zu managen.

Gruß

Klaus
Logged

WebsiteBaker Org e.V. - for WebsiteBaker

Bastian

Offline Offline

Posts: 161



WWW
« Reply #11 on: May 08, 2009, 10:39:23 PM »

Hallo Klaus,
das funktioniert top, wenn mann keine getrennten Menus verwenden muss, wegen überschriften und leerzeile zwischen den Menüs.
da ich aber getrennte (mehrere) Menüs verwenden muss, habe ich das Problem mit dem Submenü
und der anzeige, bekomme das nicht zum laufen.
in meinem Post mit der Struktur meine ich Menü als Menü, nicht nur Seite wink

Deine Lösung geht nur, wenn ich NICHT mehrere Menüs verwende.

Gruß Bastian
Logged
kweitzel
Forum administrator
*****
Offline Offline

Posts: 6820


WWW
« Reply #12 on: May 09, 2009, 07:33:09 PM »

Sorry, aber ich denke Du kannst das mit einem Menüaufruf erledigen. Hauptsächlich durch CSS Styling und der Möglichkeit von ShowMenu2 einzelne Klassen zuzuweisen.

Mach Doch mal einen einzelnen simplen ShowMenu Aufruf und schau Dir die verschiedenen zugewiesenen Klassen an (siehe auch showmenu2 read me Datei):

Quote
HTML-AUSGABE
============
Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden.
Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei
einzelne Menüpunkte, wenn es erforderlich ist, auch mehrere Klassen erhalten können.

KLASSE             ZUORDNUNG
------------        -------------------------------------------------------
menu-top          Nur der erste Menüpunkt.
menu-parent     Jeder Hauptmenüpunkt.
menu-current    Nur der Menüpunkt der aktuellen Seite.
menu-sibling     Alle "Geschwister" der aktuellen Seite.
menu-child       Jedes Untermenü der aktuellen Seite.
menu-expand   Jedes Menü das Untermenüs hat.
menu-first        Der erste Punkt eines jeden Menüs oder Untermenüs.
menu-last        Der letzte Punkt eines jeden Menüs oder Untermenüs.

Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLASS Flag gesetzt
ist:

menu-N           Jeder Menüpunkt, wobei das N für die ABSOLUTE Menütiefe,
                      beginnend bei 0, des jeweiligen Menüpunktes steht.
                      Die oberste Ebene ist also immer menu-0, die nächste
                      Ebene menu-1 usw.
menu-child-N   Jedes Untermenü der aktuellen Seiten, wobei das N für die
                      RELATIVE Tiefe des Untermenüs, beginnend bei 0, steht.


Die Dazugehörige HTML Ausgabe:
Code:
<ul class="menu-top menu-0">
  <li class="menu-0 menu-first">  ... </li>
  <li class="menu-0 menu-expand menu-parent">  ...
  <ul class="menu-1">
    <li class="menu-1 menu-expand menu-first">  ...
    <ul class="menu-2">
      <li class="menu-2 menu-first">  ...
      <li class="menu-2 menu-last">  ...
    </ul>
    </li>
    <li class="menu-1 menu-expand menu-parent">  ...
    <ul class="menu-2">
      <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
      <ul class="menu-3">
        <li class="menu-3 menu-child menu-child-0 menu-first">  ...
        <ul class="menu-4">
          <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
          <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
        </ul>
        </li>
        <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
      </ul>
      </li>
      <li class="menu-2 menu-sibling menu-last">  ... </li>
    </ul>
    </li>
    <li class="menu-1">  ... </li>
    <li class="menu-1 menu-expand menu-last">  ...
    <ul class="menu-2">
      <li class="menu-2 menu-first menu-last">  ... </li>
    </ul>
    </li>
  </ul>
  </li>
  <li class="menu-0 menu-last">  ... </li>
</ul>

Du kannst die Menüs durch Styling sowie Margins oder Paddings optisch voneinander trennen da es sich um ineinander verschachtelte Listen handelt.

Gruß

Klaus
Logged

WebsiteBaker Org e.V. - for WebsiteBaker

Bastian

Offline Offline

Posts: 161



WWW
« Reply #13 on: May 12, 2009, 10:26:20 AM »

Hallo Zusammen,

Danke Klaus, für deine Bemühungen, komme damit aber nicht klar > wg. Überschriften dazwischen
ich komme nicht weiter  angry

Hier mal der Aufbau in der Index.php
Code:
<div class="nav">
    <?php if(SHOW_MENU) { /* Only shown menu if we need to */ ?>    
        <?php show_menu2(1$wb->page['root_parent'], SM2_ALLSM2_ALL); ?><br />
        Menü-2 / Überschrift
        <?php show_menu2(2$wb->page['root_parent'], SM2_ALLSM2_ALL); ?><br />
        Menü-3 / Überschrift
        <?php show_menu2(3$wb->page['root_parent'], SM2_ALLSM2_ALL); ?><br />
        Menü-4 / Überschrift
        <?php show_menu2(4$wb->page['root_parent'], SM2_ALLSM2_ALL); ?><br />
        Menü-5 / Überschrift
        <?php show_menu2(5$wb->page['root_parent'], SM2_ALLSM2_ALL); ?><br />
        <?php show_menu2(6$wb->page['root_parent'], SM2_ALLSM2_ALL); ?>
    <?php ?>
</div>
<div class="content">
<div class="subnav" <?php showDiv(0?>>
        <?php if(SHOW_MENU) { /* Only shown menu if we need to */ ?>    
            <?php show_menu2(7'''''''<span>&#38;#183;&nbsp;&nbsp;[a][menu_title]</a>&nbsp;''&nbsp;</span>''<span>''&#38;#183;</span>'); ?>
        <?php ?>

Hier der Aufbau in der Info.php
Code:
// Definition der Menüs

$menu[1]   = 'Top';
$menu[2]   = 'menu-2';
$menu[3]   = 'menu-3';
$menu[4]   = 'menu-4';
$menu[5]   = 'menu-5';
$menu[6]   = 'Bottom';
$menu[7]   = 'Sub';
$menu[8]   = 'Language';


Struktiur der Seite im WB Backend:

Deutsch
- Willkommen / Top
- Seite-1 / Menu-1
- - Seite-1.1 / Menu-Sub
- - Seite-1.2 / Menu-Sub
- Seite-2 / Menu-2
- - Seite-2.1 / Menu-Sub
- - Seite-2.2 / Menu-Sub
- Seite-3 / Menu-3
- - Seite-3.1 / Menu-Sub
- - Seite-3.2 / Menu-Sub
- Seite-4 / Menu-4
- - Seite-4.1 / Menu-Sub
- - Seite-4.2 / Menu-Sub
- Seite5 / Menu-5

usw. / analog für die verschieden Sprachen (menu-Language)

Die Hauptpunkte habe ich nun schon soweit, das sie funktionieren, diese sind fix und sollen nicht verschwinden.

Nur die jeweiligen Unterpunkte, die dann im Submenü ($menu7) erscheinen sollen, erscheinen nicht.
Diese sollen beim Aufruf des jeweiligen Oberpunktes erscheinen, nur diese Ebene, egal ob unterseite oder nicht


Evtl. hat einer ne Lösung für dieses eine Problem, ich währe sehr dankbar.
Ein Snippet in PHP hilft auch, da die Überschriften ja eh schon im Template stehen, und nicht vom Backend geändert werden können.

Ich bin für jeden Rat und jede Hilfe sehr Dankbar.
evtl. hat auch jemand den Code zur Hand, das währe natürlich das non-plus-ultra

Gruß Bastian

Logged
biber.beat

Offline Offline

Posts: 45


« Reply #14 on: May 16, 2009, 11:51:22 AM »

Also ich habe folgende Lösung für die Trennung von einem Submenü in verschiedene Bereiche erarbeitet. In der Anlage findet ihr den Screenshoot. Gezeigt ist ein Untermenü, welches ich durch CSS formatiert habe.

Das Menü wird folgendermaßen erzeugt (index.php):
Code:
<?php show_menu2(2$wb->page['root_parent'], SM2_ALLSM2_ALL SM2_PRETTY SM2_NUMCLASS); ?>
Im Backend habe ich 4 Elternelemente unter das Sprachelement (DE, EN) gepackt. Diese Elternelemente sind dem Menü "Untermenü" zugeordnet, welches ich in der info.php definiert habe. Die Elternelemente dienen als "Headlines".

Das CSS habe ich dann folgendermaßen definiert:
Code:
li.menu-expand{color:#333;padding-bottom:15px;background:transparent url('images/trenner_dick.jpg') no-repeat 0 -10px;}

Die Grafik ist die graue Hinterlegung des Elternelementes. Mit dieser Formatierung ist es möglich, das Menü etwas zu strukturieren. Durch die Hinterlegung weckt man den Eindruck der Trenner.
Praktisch: Man kann so einen globalen Einleitungstext je "Elternelement" schreiben und so die Webseite mit Infos und Personalisierung anreichern.

Dennoch bedarf es aus meiner Sicht mal einer grundlegenden Umprogramierung des showmenu2() in Richtung Mehrsprachigkeit, da man die Submenüs so schlecht ansprechen kann.

Ich hoffe, ich konnte das Thema etwas anreichern.

Henning
Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!