Malcolm Beck´s: Komplexe Function für Navigation

hi,

ich brauch mal einen Denkanstoss.
Ich hab mir eine kleine Funktion gebaut, die eine Navigation zusammenbaut und die Aktuell angezeigte Seite entlinkt, jetzt möchte ich noch ein ausklappmenu mit einbauen, weiss aber nicht wie ich es angehen soll.

So soll es aussehen:

-Link1
   -unterlink1=1
   -unterlink1=2
   -unterlink1=3
-Link2
-Link3

Meine bisherige Function sieht wie folgt aus

<?php  
error_reporting(E_ALL);  
  
function Linksbauen($menu_title,$meine_link) {  
  
$MenuListeBauen = '';  
 foreach($meine_link as $menu_link_ziel => $menu_link_name )  {  
   if($_SERVER['REQUEST_URI'] == $menu_link_ziel) {  
 $MenuListeBauen .= "<li><em>$menu_link_name</em></li>\n";  
  }  
   else {  
 $MenuListeBauen .= '<li><a href="'.$menu_link_ziel."\">$menu_link_name</a></li>\n";  
         }  
   }  
 echo "<ul id='$menu_title'>$MenuListeBauen</ul>";  
}  
  
Linksbauen("ausklappnavi1", array(  
"/beispiele/equipment.php" => "Equipment",  
"/beispiele/equipment.php?site=equipment_1" => "Justage44",  
"/beispiele/equipment.php?site=equipment_2" => "Tipps und Tricks33")  
);  
?>

Wie krieg ich da noch ein Ausklappmenu zwischen gepackt?

So sieht es derzeit aus.

grüße

--
I have a Dream...
Bugs erzeugen gegenbugs.
Wir müssen Bugs mit Bugs bekämpfen!
  1. Hallo,

    Wenn du das Menü im Quellcode angibst, kannst du verschachtelte Arrays nehmen und diese dann rekursiv durchlaufen (in ein <li> kann ein weiteres <ul> rein usw.). Oder suchst du etwas anderes - aus dem "Ausklappmenü" werde ich nicht ganz schlau?

    Gruß

    1. hi,

      Wenn du das Menü im Quellcode angibst, kannst du verschachtelte Arrays nehmen und diese dann rekursiv durchlaufen (in ein <li> kann ein weiteres <ul> rein usw.). Oder suchst du etwas anderes - aus dem "Ausklappmenü" werde ich nicht ganz schlau?

      Gehen wir vom folgenden beispiel aus:
      http://start-navi.de/beispiele/beispiel.php

      Da ist jetzt Equipment ausgewählt, Equipment hat unterkategoerien, wenn man auf Justagge44 klickt sollen die Equipment unterkategoerien ausgeblendet und die Justage44 uinterkategoerien eingeblendet werden.
      Das soll dann komplett über die function die ich hab gesteuert werden, weiss aber nicht wie ich das bewerkstelligen sol.

      grüße

      --
      I have a Dream...
      Bugs erzeugen gegenbugs.
      Wir müssen Bugs mit Bugs bekämpfen!
      1. Hello,

        Gehen wir vom folgenden beispiel aus:
        http://start-navi.de/beispiele/beispiel.php

        Das kommt doch darauf an, woher Du die Navigation ünberhaupt bekommst (Datenbankabfrage, Textfiles, o.a. ) und wie Du sie dann vorbereitest.

        Ich hatte doch neulich hier mit Hilfe der Anderen eine List-Funktion erstellt.
        Die könntest Du dafür umbauen.

        http://selfhtml.bitworks.de/forum/get_thread_titles_05.php

        Im Moment benötigt sie noch eine Textdatei (CSV) als Input
        Dafür kann man natürlich auch ein Array nehmen.
        Dann muss man eben die Struktrur entsprechend anpassen.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. hi Tom und josh,

          http://selfhtml.bitworks.de/forum/get_thread_titles_05.php
          Im Moment benötigt sie noch eine Textdatei (CSV) als Input
          Dafür kann man natürlich auch ein Array nehmen.
          Dann muss man eben die Struktrur entsprechend anpassen.

          Das ist viel zu kompliziert für mein vorhaben, wobei ich gerade gemerkt habe, das dass, was ich habe, auch viel zu verwirrend ist, sogar für mich.

          Ich muss das nochmal komplett überdenken und überarbeiten.

          Danke trotzdem.

          grüße

          --
          I have a Dream...
          Bugs erzeugen gegenbugs.
          Wir müssen Bugs mit Bugs bekämpfen!
      2. Hallo,

        Du lässt dann (genau dann) das Untermenü ausgeben, wenn der übergeordnete Menüpunkt die aktuelle Seite ist. Bei mehr als nur zwei Menüebenen wird es kompliziert, in diesem Fall musst du zunächst das ganze Array durchsuchen, bis die aktuelle Seite gefunden wird. Dabei ermittelst du einen Pfad, welcher angibt, wo ein Untermenü zu erstellen ist.

        Gruß

        1. Hello,

          Du lässt dann (genau dann) das Untermenü ausgeben, wenn der übergeordnete Menüpunkt die aktuelle Seite ist. Bei mehr als nur zwei Menüebenen wird es kompliziert, in diesem Fall musst du zunächst das ganze Array durchsuchen, bis die aktuelle Seite gefunden wird. Dabei ermittelst du einen Pfad, welcher angibt, wo ein Untermenü zu erstellen ist.

          um es genau zu nehmen, weiß E. , z.B. aus einem Link auf seine Seite, der irgendwoher kommen kann, ja nur die Bezeichnung oder Nummer der anzuzeigenden Seite.

          Nun muss er sich von diesem Datensatz erst einmal bis an den Wurzelpunkt des Menubaumes zurückbewegen, auf dem Weg dahin die LEmente einsammeln und dann von dort aus das Menu aufbauen lassen. Dabei könnte es (im nächsten Entwicklungsschritt) sogar dazu kommen, dass bestimmte Besucher bestimmte Zweige im Menubaum gar nicht sehen dürfen, oder dass bestimmte Menupunkte "not in List" sind, also zwar im Menubaum auf dem Speichermedium vorhanden sind, aber im Menu nicht angezeigt werden sollen, weil z.B. die Auflistung in den Contentbereich (also nicht im Menubereich) hineingetragen werden soll.

          Wenn er das dynamisch mit einer Datenbank bauen will, dann muss jedes (Sub-)Menuelement mindestens wissen, zu welchem Parent es gehört.

          Ich habe eine solche Navigation mit einer MySQL-Datenbank mal gebaut. Die Funktionen dafür sollten noch auffindbar sein.
          Allerdings werden die für Malcom noch eine Nummer zu heftig sein, denn sie berücksichtigen bereits Benutzerrechte, Eigentümer, Sperrvermerke, Trustee-Rechte auch einzelne Seiten oder auch ganze Subbäume etc. Allerdings haben sie damals noch nicht mit <li> und einem sauberen CSS gearbeitet, sondern mit einem total verkorksten CSS und <p> oder <div>

          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hallo,

            Nun muss er sich von diesem Datensatz erst einmal bis an den Wurzelpunkt des Menubaumes zurückbewegen, auf dem Weg dahin die LEmente einsammeln und dann von dort aus das Menu aufbauen lassen. Dabei könnte es (im nächsten Entwicklungsschritt) sogar dazu kommen, dass bestimmte Besucher bestimmte Zweige im Menubaum gar nicht sehen dürfen, oder dass bestimmte Menupunkte "not in List" sind, also zwar im Menubaum auf dem Speichermedium vorhanden sind, aber im Menu nicht angezeigt werden sollen, weil z.B. die Auflistung in den Contentbereich (also nicht im Menubereich) hineingetragen werden soll.

            So ungefähr hatte ich das gemeint, danke für die etwas auführlichere Version. :-)

            In diesem Moment stellt sich natürlich die Frage, wie eine (gute) Navigation aufgebaut sein soll, dass man sich darin schnell bewegen kann und gleichzeitig nicht von einer Liste erschlagen wird, die länger ist als der Content von der Seite selbst. Bei kleinen Homepages ist das noch kein Problem, aber bei Seiten im Große-Firma-Maßstab sollte man sicherlich darüber nachdenken. Es ist mir schon öfters vorgekommen, dass ich mich auf solch einer Seite schlichtweg verrannt habe. In dieser Hinsicht habe ich den heiligen Gral noch nicht gefunden.

            Gruß

            1. Hello,

              In diesem Moment stellt sich natürlich die Frage, wie eine (gute) Navigation aufgebaut sein soll, dass man sich darin schnell bewegen kann und gleichzeitig nicht von einer Liste erschlagen wird, die länger ist als der Content von der Seite selbst. Bei kleinen Homepages ist das noch kein Problem, aber bei Seiten im Große-Firma-Maßstab sollte man sicherlich darüber nachdenken. Es ist mir schon öfters vorgekommen, dass ich mich auf solch einer Seite schlichtweg verrannt habe. In dieser Hinsicht habe ich den heiligen Gral noch nicht gefunden.

              Da hatte unser Team sich auf folgende Regelung geeinigt:

              Link zur Startseite

              Kategorie 1
                Kategorie 2
                Kategorie 3
                  Kategorie 3.1
                  Kategorie 3.2
                    Kategorie 3.2.1
                    Kategorie 3.2.2 *
                Kategorie 4
                Kategorie 5

              Für den Fall, dass Kategorie 3.2.2 gerade angezeigt wird und selber keine Unterkategorien mehr besitzt

              Link zur Startseite

              Kategorie 3.1
                  Kategorie 3.2
                    Kategorie 3.2.1
                    Kategorie 3.2.2 *
                      Kategorie 3.2.1.1
                      Kategorie 3.2.1.2
                  Kategorie 3.3

              Kategorie 3.2.2 ist aktiv. Sie besitzt hier Unterkategorien, Kategorie 3.3 ist soeben hinzugekommen ...

              Es werden also immer die Schwesterkategorien, die Subkategorien und die übergeordnete Ebene angezeigt, wenn vorhanden. Der Link zur Startseite sollte zusätzlich immer vorhanden sein.

              Es sind also immer nur drei Ebenen in der Anzeige zuzüglich Direktlink zur Startseite des Angebotes. Mindestens diese sollte ja für alle Besucher des Portals lesbar sein ;-)

              So kann man die Navigation einigermaßen selbsterklärend und übersichtlich halten.
              In der Titelleiste stand dann immer der gesamte Pfad, soweit das möglich war, sonst linksseitig gekürzt.

              Das Projekt ist ein gutes Jahr als Studie für ein "Minimal-CMS" gelaufen und alle Teilnehmer haben es sofort kapiert, wie es funktioniert.

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hallo,

                Das ist auch die Navigationsstruktur, die man häufig sieht. Nur was ist, wenn nun z. B. in jeder Ebene 10 Kategorien sind? Irgendwann leidet nämlich die Übersicht.

                Gruß

                1. Hello,

                  Das ist auch die Navigationsstruktur, die man häufig sieht. Nur was ist, wenn nun z. B. in jeder Ebene 10 Kategorien sind? Irgendwann leidet nämlich die Übersicht.

                  Du hast dann immer maximal 31 Links im Menu, da ja immer nur drei Ebenen und der Link auf die Startseite angezeigt werden.

                  Ein harzliches Glückauf

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hallo,

                    Ah, ich habe vorhin überlesen, dass es maximal drei Ebenen gibt. Mehr wird man tatsächlich selten brauchen, und ansonsten kann man in ausgewählten Fällen eine seperate Navigation einbinden.

                    Gruß

                    1. Hello,

                      Ah, ich habe vorhin überlesen, dass es maximal drei Ebenen gibt. Mehr wird man tatsächlich selten brauchen, und ansonsten kann man in ausgewählten Fällen eine seperate Navigation einbinden.

                      Nein, es gibt unendlich viele Ebenen in der Struktur auf dem Datenträger oder im "Ressource-Repository", aber man zeigt im Menu immer nur maximal drei Ranks und den Stammlink zur Wurzel an. Mehr hat ja auch keinen wirklichen Nutzen. Und nur der Pfad zur aktiven Seite und deren eventuell vorhandenen Unterseiten ist dann aufgeklappt.

                      Das kann man natürlich auch beliebig anders machen. Unsere testuser fanden es aber so ganz praktisch.

                      Ein harzliches Glückauf

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de