Dynamisches Menü in PHP welches nicht auf sich verweist. | 24. Mai 2004 um 00:00 Uhr /
Es sollte mittlerweile bekannt sein dass es nicht empfehlenswert ist auf die Seite zu verlinken auf welcher sich der Besucher gerade befindet. Warum das so ist kann man auf Jakob Nielsens Seite nachlesen.
Die Schwierigkeit dabei liegt darin dass das Menü auf jeder Seite anders
aussieht. Man muss je nach dem welche Seite geladen ist an einer anderer Stelle
das <a href="ziel.html"></a> raus lassen. Man könnte jetzt in
jede HTML Datei ein angepasstes Menü einfügen. Doch was ist wenn man nach einiger
Zeit feststellt dass man doch noch gerne einen Menüpunkt dazu haben möchte,
hunderte von Seiten von Hand nacheditieren? Nein, wir wollen versuchen so viel
wie möglich zu automatisieren, auszulagern und zentral für alle Seiten zu
verwalten.
Menü-Einträge Array
<?php
$menu_data = array(
"aktuell" => array("Aktuell", "/"),
"person" => array("Zur Person", "/person.html"),
"artikel" => array("Artikel", "/artikel/"),
"service" => array("Service", "/service/"),
"links" => array("Links", "/links.html"),
"impressum" => array("Impressum", "/impressum.html")
);
?>
Als erstes erstellen wir uns ein zweidimensionales Array welches alle Informationen zu den einzelnen Menüpunkten enthält. Jede Zeile des obigen Codes stellt einen Menüpunkt dar.
"artikel" => array("Artikel", "/artikel/"),
Der Schlüssel "artikel" in der ersten Dimension bezeichnet die Seite.
Man könnte da jetzt auf die Bezeichnung verzichten und PHP numerische Werte für
diese Schlüssel geben lassen aber ich finde es so schöner für den Menschen der es
sich dann, wenn es dazu kommt diese Schlüssel auf den einzelnen Seiten zu vergeben,
viel leichter tut und nicht so einfach durcheinander kommt wie mit nichts sagenden
Zahlen.
Der Wert array("Artikel", "/artikel/") enthält wiederum ein Array
welches aber keine einzelnen Schlüssel mehr hat sondern nur noch Werte beinhaltet. Die
Schlüsselnamen vergibt PHP jetzt automatisch und man kann mit [0] auf
»Artikel«, welcher den Linktext beinhaltet, und mit [1]
auf »/artikel/«, welcher das href="" Attribut beinhaltet, zugreifen.
Das ganze machen wir jetzt für jeden einzelnen Link und zwar nach der Reihenfolge wie wir die Links haben wollen. Wenn jetzt nach einiger Zeit ein neuer Link dazu kommen sollte müssen wir ihn nur noch an dieser einzelnen Stelle einfügen.
In jeder Datei
<?php $current_page = "artikel"; include('menue.php');?>… Kopfdaten der Seite …
<?php echo $navi ?>… Body der Seite …
Jetzt kommen wir zum Kern unserer Problemlösung. Als erstes muss ich noch anfügen
dass wir in jede unserer Dateien die Variable $current_page rein schreiben
müssen. Sie muss noch vor dem include() Befehl stehen mit welchem wir
unser Menü einfügen. Der Eintrag sollte am besten ganz oben in der Datei stehen und
etwa so wie oben aussehen. Danach kommen Alle Daten die vor dem Menü ausgegeben
werden. Mit dem Befehl echo $navi geben wir das Menü aus. Alles was
danach kommt können wir in gewohnter Weise darunter schreiben.
Die Menü-Schleife
<?php
$navi = "<ul>\n";
foreach ($menu_data as $key => $value) {
$navi .= " <li>";
if($key != $current_page) {
$navi .= "<a href='".$value[1]."'>";
}
$navi .= $value[0];
if($key != $current_page) {
$navi .= "</a>";
}
$navi .= "</li>\n";
}
$navi .= "</ul>";
?>
Jetzt setzen wir das Menü in einer Schleife zusammen. Wir speichern alle Ausgaben erst einmal in der Variablen $navi um sie erst dann an der richtigen Stelle in unserer Seite auszugeben. Der Punkt vor dem Ist-gleich Zeichen sagt aus dass alles was dahinter ist an die Variable angehängt wird. Ansonsten würde sie überschrieben.
foreach ($menu_data as $key => $value)
Die Schleife durchlaufen wir für jeden einzelnen Schlüssel aus dem Array
$menu_data. Der Inhalt des Schlüssels (im obrigen Beispiel
"artikel") wird für jeden einzelnen Durchgang von neuen in die Variable
$key reingeschrieben. Der Wert wiederum (oben array("Artikel",
"/artikel/")) wird in die Variable $value rein geschrieben. Man
beachte dass diese bei jedem einzelnen Schleifendurchgang mit neuen Werten
überschrieben werden.
if($key != $current_page)Nachdem wir in der Variable $current_page abgespeichert haben auf
welcher Seite sich das Menü jetzt befindet können wir bei jedem Schleifendurchgang
überprüfen ob der Menüpunkt zur aktuellen Seite gehört und falls nicht <a
href='".$value[1]."'> anhängen. In $value[1] steht ja bekanntlich
der Pfad zum dazugehörigen Link. Genau so verfahren wir dann, nachdem wir den Linktext
$value[0] angehängt haben, mit dem hinteren Teil
</a>.
Unser Menü ist Fertig
Jetzt haben wir ein Menü dass sich durch die Zentrale Lage leicht pflegen lässt und nicht auf die Seite selbst verweist wo es eingesetzt ist. Dieses kann man jetzt natürlich mittels CSS so formatieren wie man es haben will. Für Anfänger in Sachen CSS sicherlich interessant der Listamatic von Maxdesign.
Pingbacks
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.




abonnieren.
VoodiX schrieb am 25.05.2004
Hi, bin beim überfliegen des Codes auf nen Fehler im ersten Code Bespiel gestoßen. das 'äußere' Array verdient zum einen eine schließende Klammer ) und zum anderen verdient die Variablen-Deklaration ein Semikolon am Ende, wird selten die letzte Anweisung sein.
Die Idee, so einen Artikel hier zu veröffentlichen finde ich gut, Basiswissen wird sicherlich vorrausgesetzt, ist aber in Ordnung.
Jeena Paradies aus Bamberg schrieb am 25.05.2004
Hi, danke für die Berichtigungen, das ist wohl beim kopieren irgendwie verloren gegangen.
Es ging mir vor allem um die Idee und um zu zeigen dass es gar nicht so aufwendig ist sich an diese Richtlinie zu halten um dem User das Surfen angenehmer zu machen.
Arnold aus Eichstätt schrieb am 30.05.2004
Hi, ich bastele an einer Seite, doch von php habe ich KEINE ANUNG so ein Script macht mich verrückt. Es würde mir viel leichter fallen die Sache zu Begreifen wenn ich ein paar vertig verlinkte Seiten, mit vertigen Skripts sehen könnte. Währe eifach super. Im ganzen Internet fand ich hunderte von Komplet vertigen Gästebüchern...... doch keinen einzigen vertigen (nur als Beispiel) Dynamischen Menü.
Thomas schrieb am 17.07.2004
hallo!
bin grad dabei deine Anleitung zu befolgen und ein Menu zu programmieren. Dabei ist mir aufgefallen, dass in deinem Beispiel "Die Menü-Schleife" in Zeile 9 bei 'if......current_page' bei curren ein 'r' fehlt.
MfG
Thomas
Jeena schrieb am 19.07.2004
Danke für deinen Hinweiß, ich habe das sofort geändert.
Jeena
Frank Bodammer schrieb am 31.07.2004
Hallo Jeena!
Ich hätte da noch eine Frage zu diesem Menü: Wie kann man nun auch noch erreichen, dass die Pfadangaben automatisch vom PHP-Skript gemacht werden, also immer die ../../../index.php etc.? Sonst muss man ja auf jeder Seite die arrays ändern?
Wie hast du das auf deiner Seite gelöst?
MfG,
Frank
Jeena aus Bamberg schrieb am 03.08.2004
Hi Frank,
Ich habe es bisher eigentlich so gemacht dass ich relative Pfadangaben vermiden habe und immer absolute also ab der Wurzel genommen habe. Das sieht dann ungefähr so aus:
/pfad/index.php
/news.php
Wenn wir jetzt also als Wurzelverzeichniss http://jeenaparadies.de/ nehmen und auf http://jeenaparadies.de/weblog/index.php verweisen wollen dann schreiben wir da einfach /weblog/ und fertig. Mit relativen Pfadangaben ist das natürlich etwas schwierig zu realisieren, man müsste da immer ermitteln wo man gerade ist und daraus dann den relativen Pfad zusammenbasteln.
Jeena
Orlando schrieb am 19.08.2004
Hallo Jeena,
wenn ich in jeder Seite deklarieren muss, um welche es sich handelt, ist der Vorteil gegenüber einem simplen HTML-Menü gering. Ideal wäre es, würde das Script erkennen, auf welcher Seite des Arrays es eingebunden wurde und dann diesen Link auslässt. Der Pfad lässt sich bestimmt ermitteln und anschließend in $current_page speichern.
Grüße,
Roland
Jeena Paradies aus Bamberg schrieb am 22.08.2004
Das ist eine gute Anmerkung, sieht aber bei jedem anders aus, je nach dem wie er seine Daten bereitstellt. Manche werden sicherlich sogar nur mit einer index.php?id=impressum arbeiten dann ist es das einfachste die $current_page = $_GET['id']; zu setzen.
Wenn diese, oder eine andere Extraktion jemand gemacht und dokummentert hat ist er herzlich eingeladen den Link hier zu posten oder es hier zu beschreiben.
Tom aus Sankt Andreasberg schrieb am 16.09.2004
Hallo Jeena,
da fehlen die urlencode() in der Ausgabe der Links
$navi .= "<a href='".implode('/',array_map('urlencode',explode('/',$value[1])))."'>";
Und für den Key genauso. Man weiß ja nie, was für Zeichen drinstehen.
Grüße
Tom
Funky aus Hasloch schrieb am 30.09.2004
Der aktuelle Pfad lässt sich ganz einfach ermitteln mit
$current_page = basename($PHP_SELF,".php");
Schöne Grüße
Funky
Thorsten schrieb am 09.10.2004
Hallo Jeena,
ein PHP-Menue in der Form ist eine gute Idee. Man muss weniger hmtl-coden. Ich bin kein PHP-Programmierer, sonst würde ich die
Änderung vielleicht selber hinbekommen, deswegen folgende Schwierigkeit:
Dein Script bewirkt den HTML-Code (hier Beispiel aufgerufene aktuell.php) :
<ul>
<li>Aktuell</li>
<li><a href='person.php'>Zur Person</a></li>
<li><a href='links.php'>Links</a></li>
</ul>
Jetzt gibt es per CSS in diesem Fall begrenzte Formatierungsmöglichkeiten und zwar auf <li> u. <a href...> . Alle <li>
Formatierung wirken sich auch auf die Formatierungen des Links aus. Ein <span> Befehl mit einem Pseudoformat <class> würde das
Erscheinungsbild des Menues bereichern und eine Trennung von Link und Liste bewirken. Beispiel s.u.
Wie müßte der PHP-Code z.B. mit einer weiteren Abfrage geändert werden um z.B. folgende Ausgabe zu erhalten:
<ul>
<li><span class="spezial">Aktuell</span></li>
<li><a href='person.php'>Zur Person</a></li>
<li><a href='links.php'>Links</a></li>
</ul>
alternativ, wenn auch die "current"-Page ein Menue-Link ist:
<ul>
<li><a href="aktuell.php class="spezial">Aktuell</a></li>
<li><a href='person.php'>Zur Person</a></li>
<li><a href='links.php'>Links</a></li>
</ul>
Ich hoffe, dass ich mich irgendwie verständlich ausgedrückt habe? :)
Gruss
Thorsten
Jeena Paradies aus Bamberg schrieb am 10.10.2004
Erst mal zum zweiten Beispiel. Um das zu ermöglichen braucht man eigentlich gar kein PHP script welches das Menü zusammensetzt. Da reicht eigentlich schon SSI [ http://www.drweb.de/ssi/ssi_uebersicht.shtml ] um eine ausgelagerte Datei zu importieren. Wie die ausgelagerte Datei aussehen muss hat John Hicks auf http://www.hicksdesign.co.uk/journal/271/highlighting-current-page-with-css beschrieben.
Nun zum ersten Problem. Das ist eigentlich auch gar nicht so schweer. Die Menü-Schleife muss ein wenig geändert werden, damit sie, falls kein Link eingefügt wird ein <span> anstatt nichts einfügt. Siehe alles zwischen den Klammern der zwei else Anweisungen.
<?php
$navi = "<ul>\n";
foreach ($menu_data as $key => $value) {
$navi .= " <li>";
if($key != $current_page) {
$navi .= "<a href='".$value[1]."'>";
}
else {
$navi .= "<span>";
}
$navi .= $value[0];
if($key != $current_page) {
$navi .= "</a>";
}
else {
$navi .= "</span>";
}
$navi .= "</li>\n";
}
$navi .= "</ul>";
?>
Aber ich muss noch dazu anfügen, dass fast immer möglich ist ohne die extra spans auszukommen. Deshalb würde ich das erst mal ohne spans versuchen hinzubekommen was ich designmäßig vorhabe.
Thorsten schrieb am 11.10.2004
Hi,
vielen Dank für Deine Mühe, hast mir echt weitergeholfen.
Gruss
Thorsten
Claudia schrieb am 01.11.2004
$current_page = basename($PHP_SELF,".php");
funktioniert nicht
Jeena Paradies aus Bamberg schrieb am 01.11.2004
Das wird daran liegen dass die Variable $PHP_SELF nichts enthält. Das was man eigentlich braucht ist der Inhalt der Variable $_SERVER["PHP_SELF"] und davon dann den Dateinamen ohne die Endung ».php«. Das hier müsste für dich eigentlich funktionieren:
$current_page = basename ( $_SERVER["PHP_SELF"], ".php" );
Jeena
claudia aus salzburg schrieb am 28.02.2005
hallo!
ich hab folgendes problem! ich versuch auch vergeblich so ein dynamisches menü zu erstellen, aber ich hab ehrlich gesagt nicht allzuviel ahnung vom programmieren und es is auch niemand weit und breit ders mir erkären könnte.
ich würds gern mal nach deiner anleitung versuchen, damit ich aber kapier wo man die verschiedenen codestücke reinschreibt wärs ein hit mal so ein komplettes dyn. menü im code zu sehen, ich den das würd mir aufschluss geben!
wäre super wenn du mir helfen könntest!
lg claudia
Jeena Paradies aus Varberg schrieb am 28.02.2005
Hallo Claudia,
Ich hoffe diese Musterdatei hilft dir beim Einbinden des Menüs:
php-menu.txt
Diese Datei muss anstatt die Endung .txt bei dir die Endung .php haben, damit der PHP code auch ausgeführt wird und nicht angezeigt wird. Falls noch Fragen Auftauchen einfach hier noch einmal nachfragen.
Alexander Brock aus DE-MA schrieb am 04.04.2005
Hi,
Ich habe ein Menüscript, das auch tiefer verschachtelte Menüs darstellen kann.
Das Script
Beispiel
Es muss im Script nur eingebunden und mit
menu($eintrage);
aufgerufen werden, den Rest macht es von selbst.
Gruß
Alexander
Jeena Paradies aus Varberg1 schrieb am 04.04.2005
Also die Ausgabe verspricht ein gutes script, das einzige was mir aufgefallen ist, ist dass die Startseite auf der Startseite selbst immer noch als Link dargestellt wird.
Leider kann man das Script nicht herunterladen, denn funpic verbietet deeplinks. Wenn du möchtest dann schicke es mir und ich werde es auf meinen Webspace hochladen und verlinken.
Jeena Paradies aus Varberg schrieb am 07.04.2005
So, ich habe es jetzt hochgeladen und alle können sich das Script herunterladen: implementierung.zip
Alexander Brock aus DE-MA schrieb am 10.04.2005
Ich habe noch ein wenig an dem Script gefeilt und zwei Bugs entfernt. Jeena hat es hochgeladen und jetzt will ich eine kleine Einführung in die Verwendung des Scriptes geben.
Die wichtigste Datei, die menu.php besteht aus zwei Teilen:
* einem Array aus Menü-Einträgen
* der eigentlichen Funktion
Im folgenden Text wird nur das Array behhandelt.
Hier ist ein sehr einfaches Beispiel:
$eintrage = array(
array(
"href" => "/hobbies/",
"title" => "Hobbies",
)
array(
"href" => "/zeug/",
"title" => "Sammlung von Zeug",
)
);
Dieses Array besteht aus zwei assoziativen Arrays, die jeweils die Elemente "href" und "title" enthalten. href gibt den absoluten Pfad des Scriptes an (es muss ein absoluter Pfad zu einem Verzeichnis sein und der Pfad muss mit / enden und beginnen). title gibt den Link-Text an.
Bis jetzt ist dieses Script keinen Deut besser als das von Jeena, aber nun wird es interessant: Das Script kann beliebig tief verschachtelte Menüs darstellen! Dazu folgendes Beispiel:
$eintrage = array(
array(
"href" => "/hobbies/",
"title" => "Hobbies",
array(
array(
"href" => "/hobbies/emff/",
"title" => "EMFF"
),
array(
"href" => "/hobbies/gimp/",
"title" => "Gimp",
)
)
)
);
Dieses Array enthält das bekannte Eintag-Array ($eintrage[0]) mit den Elementen href und title, und zusätzlich ein Array für ein Untermenü ($eintrage[0][0]). Dieses Untermenü-Array darf wieder die gleichen Arrays enthalten wie das erste Array.
Das Script wird in den Dateien eingebunden und an der gewünschten Stelle mit "echo menu($eintrage)"; aufgerufen.
Gruß
Alexander Brock
Günther aus Mainz schrieb am 11.05.2005
Hallo zusammen,
Ich stehe vor folgendem Problem:
Ich möchte gern ein Menü mit zwei Ebenen realisieren. Das Schema etwa wie:
1. Kapitel
2. Kapitel
2.1 Abschnitt
2.2 Abschnitt
2.3 Abschnitt ...
3. Kapitel
Vorgaben sind:
Erstens, dass der Menüpunkt der aktuell angezeigten Seite nicht verlinkt ist; (Dazu gibt es hier schon gute Lösungen)
Zweitens soll die Ausgabe des Menüs als Liste <ul><li></li></ul> erfolgen
Drittens, jetzt kommt das Problem, dass der jeweilige Kapitel-Menüpunkt auch nicht verlinkt ist, wenn einer der zugehörigen Abschnitt-Menüpunkte aktuell angezeigt wird.
Frage: Wie kann ich in einem Array das erste Key-Value-Paar separieren und dann mit beliebigen Formatangaben versehen, wenn es gerade nicht die aktuell angezeigte Seite ist?
Ich füge den bisherigen Code an:
Mehrere Arrays:
$arr1['Kapitel 1'] = array("root" => $siteRoot."index.php");
$arr2['Kapitel 2'] = array("root" => $siteRoot."kapitel20.php",
"Abschnitt 1" => $siteRoot."kapitel21.php",
"Abschnitt 2" => $siteRoot."kapitel22.php",
"Abschnitt 3" => $siteRoot."kapitel23.php",
"Abschnitt 4" => $siteRoot."kapitel24.php",
"Abschnitt 5" => $siteRoot."kapitel25.php");
$arr3['Kapitel 3'] = array("root" => $siteRoot."kapitel3.php");
Jetzt der Code für das 2. Kapitel mit der Verschachtelung:
if($PHP_SELF != $arr2['root']){
foreach($arr2 as $key => $value) {
if($PHP_SELF != $value['root']) {
echo "<li class='navoff'><a href=\"".$value['root']."\">1 $key</a></li>\n";
}
else {
echo "<li id='navon'>2 $key</li>\n";
echo "<ul>";
foreach($value as $key2 => $value2) {
if(array_search($PHP_SELF,$value)) {
if($key2 != "root") {
if($PHP_SELF == $value2) {
echo "<li id='subnavon'>$key2</a></li>\n";
}
else {
echo "<li class='subnavoff'><a href=\"".$value2."\">$key2</a></li>\n";
}
}
}
}
echo "</ul>";
}
}
}
Es kann sein, dass ich mit dem Code komplett auf dem Holzpfad bin und bin dankbar für eure Kommentare.
Gruß Günther
Jeena Paradies aus Varberg schrieb am 11.05.2005
Hallo Günther,
Dein Problem ist sehr komplex und meine persönliche Zeit gerade jetzt leider sehr begrenzt. Ich würde dir empfehlen deine Frage auch noch einmal im SELFHTML Forum zu stellen. Dort sind viele kompetente Leute unterwegs, die dir sicherlich schneller helfen können.
Günther aus Mainz schrieb am 11.05.2005
Hallo Jeene,
danke erstmal für deine schnelle Rückmeldung und den Tipp mit dem Selfhtml-Forum, ich werde da mein Glück versuchen. Ich hatte schon befürchtet, dass das Problem schwieriger sein könnte.
(Übrigens finde ich dein Froum im Vergleich zu vielen anderen Foren sehr angenehm.)
Jeena Paradies aus Varberg schrieb am 11.05.2005
Danke für die Blumen. Allerdings ist das hier eigentlich kein Forum in dem Sinne. Es ist eine Art Onlne-Tagebuch (ein so genanntes Fach-Weblog) das ich führe, in welches in in unregelmäßigen Zeitabständen Artikel zum Thema Webdesign poste, die dann alle kommentieren können. Die Aktuellsten Beiträge findest du immer auf der Startseite des Weblogs.
Viel Glück bei der lösung deines Problems!
Jeena Paradies aus Varberg schrieb am 28.05.2005
Alexander Brock hat mir gerade eine neue Version seines mittlerweile sehr soliden Scriptes geschickt. Herunterladen kann man es hier: menuescript-1.0.0.zip. Dieses Zip enthält auch eine Bedienungsanleitung.
Olaf Neumann aus Gelsenkirchen schrieb am 26.06.2005
Hallo Leute!
Ich bin noch relativ unerfahren, was php-menüs angeht. Bisher habe ich PHP in Verbindung mit MySQL benutzt, das übliche halt.
Normalerweise programmiere ich stets die Menüs in HTML, was aber bei größeren Projekten mit einer menge Arbeit verbunden ist, zumal eine Kategorien ziemlich oft erweitert bzw. geändert werden.
Ein Freund hat mich auf die Idee gebracht, mal es mit PHP zu probieren.
Ein Versuch sieht so ähnlich aus:
<?php
include("menu.php");
?>
Das menu.php sieht dann verkürzt so aus:
<ul>
<li><a href="index.html">Home</a></li>
usw.
</ul>
Die include Datei wird in einen <div>Container geladen.
Können hierbei die Spider einer Suchmaschine überhaupt noch den Links folgen?
MfG
Olaf Neumann
Jeena Paradies aus Varberg schrieb am 26.06.2005
Ja, das ist eine einfache Variante, und ja die Suchmaschinen bekommen - wie übrigens auch alle Browser - ganz normales HTML ausgeliefert, sie merken nicht einmal dass da PHP dahinter werkelt. Übrigens brauchst du da gar keinen div-Container außenrum, das ul ist ja schon ein eigener Container.
Olaf Neumann aus Gelsenkirchen schrieb am 26.06.2005
Hallo Jeena!
Danke für deine schnelle Antwort. Wie gesagt, ich halte alles etwas einfacher, als wie bei deinem Menü. Ich bin auch nicht der große PHP-Fan, vielleicht daher meine Zurückhaltung. Nochmals besten Dank und weiterhin viel Erfolg.
MfG
Olaf Neumann
Nina schrieb am 05.07.2005
Wenn ich das Menü (aus dem letzten hier angebenenen Zip-File) einbaue, dann steht auf der Seite vor der Menüausgabe diese komische Zeichenkette:

Irgendeine Idee woher das kommt?
Nina schrieb am 05.07.2005
Ich habe die Lösung gerade gefunden. Falls bei euch das Problem auch auftritt, ist die Lösung ganz einfach:
Achtet darauf, dass in eurem Editor am besten gar kein Zeichensatz mitgegeben wird, sondern ihr zB. in ANSI speichert. In meinem Fall habe ich den ganz normalen Windows Editor genommen. Wenn man damit dann eine PHP-Datei abspeichert, muss man darauf achten, dass beim Speichern unten "ANSI" ausgewählt ist.
Alexander aus dem guten alten Mannheim schrieb am 05.07.2005
Hallo Nina,
Die Dateien in dem Paket sind alle mit dem Zeichensatz UTF-8 gespeichert,
wenn ich also Umaulte verwendet hätte würdest du da ein Problem bekommen.
Das letzte verlinkte Script ist allerdings schon wieder veraltet, ich habe
es weiterentwickelt, die Handhabung vereinfacht,
ein weiteres Feature hinzugefügt und eine Dokumentation erstellt,
ich werde das ganze in den nächsten Tagen mal hochladen.
Gruß
Alexander
Chris schrieb am 06.07.2005
Also, das Script von Alexander Brock wäre ja super. Aber... es stört mich dass man für das Untermenu einen eigenen Ordner mit einer Index-Datei haben muss. Ich finde es ist umständlich. Gibts eine Möglichkeit, damit man die Dateien alle im gleichen Ordner haben kann?
Alexander aus dem guten alten Mannheim schrieb am 07.08.2005
Hallo Chris,
Das ist leider eines der Mankos dieses Scriptes, für das ich (noch) keine Lösung anbieten kann.
Es gibt allerdings eine neue Version, und eine "richtige" Dokumentation dieser Software:
http://vmenue.vm.funpic.de/
Gruß
Alexander
Ben aus Hamburg schrieb am 30.08.2005
Hallo Jeena am 28.5.05 hast du ein Script von Alexander online gestellt, hab mir das mal angekuckt und das ist vom Grundsatz her das was ich suche nur ich möchte nicht per Verzeichnis sonder direkt auf eine Datei verlinken, kann man das dementsprechend anpassen?
Dein Script verstehe ich leider nicht vielleicht kannst du das ja mal als kleine Beispiel (z. Download) online stellen damit ich mir das mal fertig ankucken kann weil da scheint das ja möglich zu sein mit der verlinkung auf eine Datei und nicht auf ein ganzes Verzeichnis! Wäre super nett wenn du mir weiterhelfen könntest!!! MfG
Ben
Alexander aus dem guten alten Mannheim schrieb am 31.08.2005
Hallo Ben,
Nein. Wirklich nicht. Schon gar nicht die neue Version 1.1.
Auf vmenue.funpic.de gibt es die Dokumentation meines Scriptes und u.a. ein fix-und-fertig-Beispiel zum herunterladen.
Bei Jeenas Script ist das möglich, aber es gibt nur eine Menü-Ebene und weder Sitemap noch Breadcrumb-Navigation.
Bei meinem Script muss man Verzeichnisse verwenden (bzw. so tun als ob), dafür hat man Verschachtelung, Sitemap und Breadcrumb-Navigation.
Gruß
Alexander
sirena aus Basel am Rhein schrieb am 11.09.2005
Hallo zusammen
Ich trage mit einem Verweis bei:
Hier eine dynamische Navigation, mit welcher man auf eine Seite verlinken kann. Die Navigation ist in einer Tabelle. Hintergrund, Rahmen, Farben etc., kann alles geändert werden.
Beschreibung:
www.nak-webmaster.de
Demo:
Dynamisches Menue
Gruss sirena
Alexander aus dem guten alten Mannheim schrieb am 12.09.2005
Hallo sirena,
Das von dir verlinkte Script verfehlt völlig seinen Zweck:
Es verlinkt immer auch auf die aktuelle Seite und der Autor
hat nicht verstanden, dass eine Liste von Links eben nur eine
Liste ist und nicht eine Tabelle mit einer Zelle in der
viele Container sind die jeweils einen Link enthalten.
Eine Liste wird mit <ul> oder <ol> ausgezeichnet,
nicht aber mit Tabellen und Divs.
Außerdem kann das Script nur zwei Ebenen.
Also wenn du ein Menüscript brauchst nimm entweder Jeenas
(das ist einfach zu handhaben) oder meins
(das kann Verschachtelung, Sitemap und Breadcrumb).
Gruß
Alexander
Frank aus Gera/Deutschland schrieb am 19.09.2005
Hallo an alle
Über das „Googeln“ bin ich auf diese Site gekommen. Auch ich habe eine Frage zur Problematik Menu. Ich hatte eine Internetsite mit Frames gemacht. Von Frames möchte ich nun aber aus diversen Gründen weg kommen.
Da ich in der neuen Site von überall aus überall hinkommen will, stand nun für mich auch die Frage, wie mach ich’s am besten,- Antwort-mit PHP. Was PHP betrifft, bin ich ein Anfänger, versuche aber, mich reinzudenken. Ein Programmierer bin ich nicht, eher der „PHP Anpasser“.
Nach vielen Onlinelesen denke ich nun, die beste Lösung ist eine, ich nenne sie mal menu.php per <?php include("menu.php"); ?> einzubinden. Ich will aber ein Menu haben, welches sich nicht nach unten aufklappt, sondern zur Seite weg, wie bei http://www.udm4.com/.
Ich finde dieses Menu mit einer jeweiligen anpassbaren Strukturierung (Ebenen) sehr gut. Dabei muss ich im vorliegenden Fall eine .js Datei und eine .css Datei einbinden.
Das habe ich offline, installiert habe ich als Server Xampp, auch per localhost hinbekommen. Aber nur in der ersten Ebene, denn irgendwie ist es nicht möglich in eine nächste oder gar übernächste Ebene zu verlinken.
Ein Freund gab mir nun den Tipp, die Verlinkung mit absoluten Links zu bewerkstelligen. Das würde zur Not auch gehen. Ich denke aber, das kann nicht der Weisheit letzter Schluss sein, da ich so wiederum die Links (Site) nicht offline testen kann. Ich müsste also erst den absoluten Link einfügen, die Site hochladen und könnte dann erst sehen ob alles funktioniert.
Ich weis es nicht, aber ich glaube nicht das es nicht auch anders gehen kann.
Wer kann mir hier weiterhelfen oder hat einen Vorschlag dazu ?
Vielen Dank an alle und viele Grüße aus Gera in Thüringen
Jeena Paradies aus Varberg schrieb am 19.09.2005
Zum horizontalen Menü gibt es hier viele Beispiele wie es mit einer Liste umgesetzt werden kann: .
Und zu den permanenten Links kann ich dir nur empfehlen zu Hause einen Virtual Host einzurichten, den du dann zum Beispiel mittels http://meine-seite.test erreichen kannst. Dann hast du das problem mit der Testumgebung weg.
Frank aus Gera/Deutschland schrieb am 20.09.2005
Hallo,
vielen Dank für Deine Antwort.
Frage:
Ich arbeite mit Dreamweaver. Wenn ich ein neues Projekt starte, dann richte ich mir über die Site-Optionen in Dreamweaver einen Host ein, nach dem Prinzip wie Du es genannt hast. Mit Xampp habe ich meinen Server.
Oder sehe ich hier etwas falsch ?
Wie gesagt, das Prüfen der Links offline hat per localhost funktioniert.
Außerdem möchte ich kein horizontales Menu, sondern ich möchte ein vertikales, welches horizontal in tiefere Ebenen ausklappen kann.
Ich habe noch einmal auf der angegebenen Site nachgeschaut und dort auch eine PHP Version (4.44) entdeckt. Vielleicht kann dazu jemand der bei PHP durchsteigt etwas sagen ?
Vielen Dank und viele Grüße aus Gera/ Thüringen
Frank
Jeena Paradies aus Varberg schrieb am 20.09.2005
Mit virtual Host meine ich das hier: http://httpd.apache.org/docs/2.0/de/vhosts/ und beim ausklappbaren Menü hilft dir vielleicht dieser Link: http://www.porjes.com/jsmenus/jssidemenu4.html
Frank aus Gera/Deutschland schrieb am 23.09.2005
Hallo Jeena,
vielen Dank für die Links.
Jedoch ist nicht das dabei was ich such. Wahrscheinlich habe ich es auch nicht richtig erklärt. Ich suche also ein Menü welches sich NICHT nach unten aufklappt sondern zur Seite weg mit mehreren Untermenüs, und diese auch wieder zur Seite weg. Ein php Beispiel ist unter http://www.udm4.com/ zu sehen und auch zum download angeboten. Meine Frage ist nun, wie passe ich es so an, das ich die Links lokal testen kann und die Site auch so mit diesen lokal gesetzten Links hochladen kann. Meine Frage bezieht sich hier hauptsächlich auf die Links. Geht es auch anders oder muß man immer mit absoluten Links, in Form von http://www.xyz.de - arbeiten?-- Wie gesagt, dann kann ich aber nicht lokal testen?!
Vielen Dank und viele Grüße aus Gera/ Thüringen Frank
Jeena Paradies aus Varberg schrieb am 23.09.2005
So langsam verstehe ich was du meinst. Von einem solchen Menü kann ich dir aber nur abraten, warum habe ich im folgenden Artikel dargelegt: Spastiker im Internet - denn nicht nur Blinde surfen
Du verstehst das mit den absoluten Links etwas falsch. Gut erklärt ist es auf SELFHTML unter: Mit absoluten Pfadangaben relativ zum Basis-URI referenzieren, ich denke das sollte dir helfen.
Steffen schrieb am 09.11.2005
Gibt es eine Möglichkeit dieses Script auch auf einem Server im Unterverzeichnis laufen zu lassen?
Bei mir funktioniert es nämlich nicht richtig!
Jeena Paradies aus Varberg schrieb am 09.11.2005
Natürlich, du musst dann nur die Pfade anpassen. Ansonsten ist die Beschreibung "funktioniert nicht richtig" so wage, dass man dir konkret nicht helfen kann, leider.
Andreas aus Offenburg schrieb am 18.12.2005
Hi,
finde das script nur bedingt sinnvoll.
Das Problem das ich sehe ist dass in jeder aufgerufenen Seite/Funktion eine Codeimplementierung benötigt, was damit den Einsatz in CMS Systemen, wo Menüeinträge zur Laufzeit hinzugefügt bzw. entfernt werden, ausschließt.
Hier wäre es dann z.B. sinnvoller eine Rückkopplung über die aufgerufene URL auszuwerten.
Gruß Andreas
Alexander Brock aus dem guten alten Mannheim schrieb am 18.12.2005
Hallo Andreas,
Es hindert dich niemand, anstelle von $current_page = "foo"; $current_page = $_SERVER['REQUEST_URI']; zu verwenden, und dann ein entsprechendes Menü-Array zu erzeugen.
Außerdem macht mein Script so etwas ähnliches (mit $_SERVER['PHP_SELF']).
Gruß
Alexander
Andreas aus Offenburg schrieb am 19.12.2005
Hi,
genau so bzw fast:
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$content .= "<tr align=\"left\"><td><a ";
if ($row['url'] == $url)
$content .= "id=\"activenav\" ";
$content .= "href=\"{$row['url']}\" $target class=\"mainnav\" >{$row['title']}</a></td></tr>";
So benötige ich keinerlei Code in den aufgerufenen Seiten.
Gruß Andreas
Jeena Paradies aus Varberg schrieb am 19.12.2005
Wobei du dein Menü sehr komisch mit einer Tabelle (?) generierst und auch den aktuellen Menüpunkt verlinkst, was ja gerade verhindert werden sollte. Das was du da hast kann man ohne PHP und alleine mit CSS viel einfacher hinbekommen, wozu dann der Umweg über PHP?
Das Beispiel ist kein Fertigscript sondern soll vor allem zum verstehen und probieren anregen, fertige sachen gibt es schon genügend.
Anonym schrieb am 19.12.2005
Hi Jeena,
das Menü ist nicht hard coded sondern die Menüeinträge stehen in einer MySQL Tabelle.
Beispiel auf meiner Seite wie Link oben.
Gruß Andreas