Komplexe Function für Navigation
Malcolm Beck´s
- php
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?
grüße
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ß
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
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
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
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ß
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
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ß
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
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ß
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
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ß
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