Sponsored Links |
|
||||
![]()
Das ist etwas was ein CMS macht. Ein Skript das nur ein Menü erzeugt macht keinen Sinn.
Das was du willst ist ein Ersatz für die Framelösung der 90'er durch eine PHP Datei. Sowas machte man vor 10/20 Jahren. Das Verfahren kannst du hier z.b. nachlesen Navigation mit PHP Das sollte auch heute noch so funktionieren. |
Sponsored Links |
|
||||
![]() Zitat:
HTML-Code:
<?php if (!isset($hmenu)) $hmenu=""; function href ($seite, $menu, $hmenu) { if ($menu != $seite) echo "href='$seite.php'"; if ($hmenu== $seite) echo ' class="akt"'; } ?> <div id="nav"> <h3>Index</h3> <ul> <li><a <?php if ($menu != "start") {echo 'href="/reisen/schottland2006/"';} else {echo "class='akt'";} ?>>Schottland</a></li> <li><a <?php href("anreise",$menu,$hmenu) ?>>Anreise</a></li> <li><a <?php href("lochlomond",$menu,$hmenu) ?>>Loch Lomond</a></li> <li><a <?php href("balloch",$menu,$hmenu) ?>>Balloch Park</a></li> <li><a <?php href("mambeg",$menu,$hmenu) ?>>Mambeg</a></li> <li><a <?php href("benmore",$menu,$hmenu) ?>>Benmore</a></li> <li><a <?php href("tour1",$menu,$hmenu) ?>>Tour 1</a></li> <li><a <?php href("glennevis",$menu,$hmenu) ?>>Glen Nevis</a></li> <li><a <?php href("skye",$menu,$hmenu) ?>>Skye</a></li> <li><a <?php href("glenfinnan",$menu,$hmenu) ?>>Glenfinnan</a></li> <li><a <?php href("mallaig",$menu,$hmenu) ?>>Mallaig / Arsaig</a></li> <li><a <?php href("fortwilliam",$menu,$hmenu) ?>>Fort William</a></li> <li><a <?php href("bennevis",$menu,$hmenu) ?>>Ben Nevis</a></li> <li><a <?php href("glenfinnanstation",$menu,$hmenu) ?>>Glenfinnan Station</a></li> <li><a <?php href("highlandgames",$menu,$hmenu) ?>>Highland Games</a></li> </ul> <p>Fortsetzung ist in Arbeit...</p> <div class="border"></div> <p><a href="/reisen/">Mehr Reisen</a></p> <p><a href="/"><img src="/homelogo2.gif" width="40" height="29" alt="4haus Startseite"></a></p> <p><a href="/impressum.html">Impressum</a></p> </div> Sowas wie 1 Lese aus, wie der URL der angefragten Seite heißt. 2 Treffe das Element li, welches den dazu passenden URL hat 3 Füge in diesem Element li das Attribut "aria-current="page"" ein 4 Liefere die Seite aus
__________________
|
|
||||
![]()
Jetzt bist du wieder an der Stelle, wo du HTML mit PHP parsen willst. Das hatte ich dir schon mal erklärt, das das nicht sinnvoll ist.
Und wie gesagt das was du vorhast ist eine Technik, die vor ca. 10 Jahren oft angewendet wurde. Wenn du nach "Navigation PHP" suchst findest du hunderte Möglichkeiten dies umzusetzen. An sich ist das keine grosse Sache. Aber wie genau du es brauchst, kommt dann darauf an, wie du deine Seite strukturieren möchtest und welche Anforderungen du an das Skript stellst. (Und "elegant" ist keine technische Beschreibung, um das wirklich zu beantworten) Aber wie gesagt, es gibt hunderte, vermutlich tausende Optionen, such dir was aus https://www.google.de/search?q=php%20navigation So haben damals viele angefangen. Aber fast immer merkten die Leute, dass das was du da machst, einfach der Beginn eines jeden CMS ist. Weil danach schnell neue Wünsche kommen und irgendwann hast du etwas zusammengefrickeltes und kommst nicht mehr sinnvoll weiter. Da du z.b. schon die Mehrsprachigkeit angesprochen hast oder auch vielleicht selber merkst, dass u.U. die eine oder andere Sache Neu oder Anders umgesetzt werden muss als du anfänglich gedacht hast, kann ich dir nur raten gleich ein fertiges System zu nutzen anstatt jede Funktion per Hand irgendwie umzusetzen. Dann kannst du dich auch auf die tatsächlich interessanten Sache fokusieren. Wie z.b. sauberer HTML Code oder sinnvolles CSS. Bzw. was noch wichtiger wäre: der Inhalt. |
|
||||
![]()
@protonenbeschleuniger
Es steht außer Frage, dass für komplexe Anforderungen ein CMS die beste Technik ist. Du siehst nicht, dass Du mich davon nicht überzeugen musst. Deiner pauschalen Aussage, dass ein CMS immer das einzige Richtige ist, egal wie einfach eine Website aufgebaut ist, stimme ich nicht zu. Und mit mir auch andere, Erfahrenere nicht. Aber das nur am Rande. Mehr möchte in diesem Thread dazu nichts sagen. Dass es tausende Möglichkeiten gibt eine Navi mit PHP zu realisieren weiß ich und genau das ist der Grund, warum ich hier um eine Empfehlung für einen wirklich eleganten Weg suche. Es ist OK, wenn Du mir kein konkretes Skript empfehlen möchtest. Aber bitte respektiere doch einfach meine Bitte um Empfehlung. Wenn niemand etwas empfehlen möchte: auch kein Problem. Eine Empfehlung ist was ganz anderes als "guck mal bei Google" oder "guck, mal das gibt es". Eine Empfehlung ist eine persönliche Wertung, eine bewußte Auswahl aus einer Vielzahl, mit guten benennbaren Gründen. Und genau das erhoffe ich mir.
__________________
|
|
|||
![]()
Was ist denn "elegant" für dich? Du könntest zb die von dir gepostete Lösung umschreiben, dass es für jedes Element durchläuft und nicht hardcodiert eine Liste ist. Das muss man dir aber nicht vorkauen, das kannst du auch selber.
Zweitens: was meinst du mit Punkt 1 deiner Liste? Was liest von wo was genau aus? Das Menü kann nichts auslesen. Auch ist Punkt 4 sinnlos, ich dachte es geht um ein Menü. Oder kann es sein dass du nicht ganz verstanden hast wie php eigentlich funktioniert? (Das ist nicht böse gemeint, ich besitze ebenfalls nur Grundwissen darüber) |
|
||||||
![]() Zitat:
Zitat:
Das ein CMS immer das Richtige ist wäre kompletter Unsinn und habe ich nie gesagt. Aber in deinem Fall bin ziemlich sicher, dass es so ist (seltsamerweise hast du sogar mal danach gefragt) Zitat:
Wie gesagt es gibt hunderte, tausende, wenn nicht Millionen davon im Netz. Aber einen "eleganten" (was immer das sein soll) Weg gibt es nicht. Es ist genau so wie ich sage, es gibt tausende Wege und Optionen und du musst den für dich am besten passenden finden, dabei versuchen ich dir zu helfen. Aber das Problem ist, dass dein Ansatz einen fertigen HTML Code zu parsen, um dann mit PHP diesen zu ändern ist nicht sinnvoll. Zitat:
Zitat:
Benutzt du eine absolute oder relative URL im HTML Code? Verwendest du mod_rewrite oder hast es vor? Gibt es Mehrsprachigkeit oder Mobile Versionen? Gibt es Parameter oder wird es welche geben die du der URL übergeben musst? Kann diese Umlaute enthalten oder nicht. Wegen dieser Problematik verwenden die meisten Skripte den einfachsten und zuverlässigsten Weg, der Seite einen Namen zu geben (so wie es auch ein CMS machen würde). Der ist aber für dich nicht "elegant". Zitat:
Wobei PHP hier eine Zwischenlösung anbieten würde. Da PHP im Grunde eine Templatesprache ist, kannst du dort auch den HTML Code und die Programmlogik vermischen. (So wie es z.b. WP macht) Die einfachste PHP Lösung die du willst, sind nur ein paar Zeilen PHP-Code:
PHP-Code:
|
|
||||
![]()
@protonenbeschleuniger
Danke erstmal für Deine ausführliche Antwort. Dann ist zumindest geklärt, dass Du ein CMS doch nicht immer für den Königsweg hältst. Da so wenige Zeilen PHP für das Erzeugen des Menüs ausreichen, ist mir nicht klar, dass Du in diesem konkreten Fall, dennoch ein CMS für geeigneter hältst. Die Website besteht ja ansonsten nur noch aus einer Handvoll wiederkehrenden Bestandteilen, die sich mühelos als Includes einfügen lassen. Die Mehrsprachigkeit ist hier übrigens erstmal außen vor. In diesem Thread soll es nur eine einsprachige Site gehen. Zitat:
Der Usecase ist ja sehr klar. Es geht um einen Autor, der HTML beherrscht, PHP jedoch nicht. Also fällt es dem Autor leicht, das Ziel-HTML festzulegen. Das PHP-Skript soll allein den Code "anreichern" um etwas, was manuell mühsam und fehlerträchtig wäre. Man kann Ziele aus sehr verschiedenen Blickwinkel festegen. Aus Sicht eines PHP-Programmierers mag es bessere Lösungen geben. Die Perspektive eines HTML-Autors ist naturgemäß eine andere. Warum findest Du das Konzept "Reichere gegebenen HTML-Code an" und "Entferne aus gegebenem HTML-Code etwas" daher so völlig falsch? Und weiter: Was findest Du falsch daran, per PHP gezielt auf den DOM, auf Elemente, zuzugreifen. Das ist doch eine hochelegante Technik. Wenn ich es richtig verstehen, gibt es doch für gutes Programmieren den Grundsatz DRY. Und per Selektor kann man in sauberem HTML doch alles wunderbar präzise treffen. Ganz ohne alles redundant nochmal im PHP-Code angeben zu müssen. Mich interessiert dabei in Deiner Antwort Deine Überlegungen zu Konzeptionellem. Zitat:
Mehrsprachigkeit gibt es nicht. Mobile Versionen auch nicht. Parameter gibt es (außer vielleicht im Kontaktformular) nicht. Der URL wird keine Umlaute enthalten. mod_rewrite in der .htaccess werde ich einsetzen. Zitat:
Ein PHP-Skript kann doch auf den DOM zugreifen und Inhalt herausschneiden oder hinzufügen. Also kann man diese Technik doch nutzen. Das Quelldokument liegt auf dem Server. PHP verändert es und liefert es so verändert aus. Was ist an diesem Konzept falsch? Auch wenn die Technik selten verwendet wird, muss es doch nicht heißen, dass sie falsch ist. Ich lasse mich gerne überzeugen. Bitte erläutere mir doch den Denkfehler noch genauer. Danke für Deinen PHP-Code. Ich werde versuchen ihn auf mein Beispiel anzuwenden, wenn es keinen (vernünftigen) Weg gibt, dass das PHP direkt auf den DOM zugreift.
__________________
|
|
||||
![]()
Das sind alles Sachen die ich in den letzten 20 Jahren erfahren habe und das zum Teil auch schmerzlich. Wie gesagt, das was du gerade willst war vor einem Jahrzehnt verbreitet und auch ich habe x-mal angefangen HTML Seiten irgendwie zu strukturieren. Seit ich wordpress entdeckt habe (ca. 2009) würde ich nie mehr auf die Idee kommen es noch mal so zu machen.
Aber jetzt jeden Punkt erklären zu wollen, wäre zu viel, nur kurz: Zitat:
Deine Ausführungen bezüglich HTML vs. PHP Editor sind falsch. Der (heutige) "HTML Editor" arbeitet mit Template und Frameworks, wird aber niemals einfach nur eine HTML Seite erstellen. Aus genau den Gründen die hier genannt wurden. Die Hauptpunkte sind: du verbaust dir die Erweiterbarkeit und Flexibilität die dir ein dynamische Seite bietet. Zitat:
Das Quelldokument ist PHP Code, in dem bestenfalls HTML eingebettet ist, aber das wiederspricht dem https://de.wikipedia.org/wiki/EVA-Prinzip Es gibt eine DOM Bibliothek, die ... (tut mir leid, ich möchte das nicht noch mal erklären, da ich dass schon ausführlich in dem anderen Thread gemacht habe) |
Sponsored Links |
|
||||
![]()
@protonenbeschleuniger
Nun gut, eine Grundlagendebatte können wir hier nicht sinnvoll führen. So spannend sie auch ist. Dein zentraler Satz ist: "Du musst von vorneherein immer alles für möglich halten und berücksichtigen, ansonsten landest du in der erwähnten Sackgasse." Das drückt eben doch nichts anderes aus, als das, was ich schon im letzten Posting vermutet hatte. Du plädierst doch für ein CMS, grundsätzlich und immer. Weil naturgemäß nur ein CMS dem Merkmal "Du musst von vorneherein immer alles für möglich halten" gerecht wird. Hier liegt unser Dissenz. Lassen wir das so stehen. Zum Editor: Ich respektiere Deine Wertung, was ein "heutiger" Editor ist. Aber Du sagst damit eben, dass alles außer einem Templatesystem/CMS falsch ist. Du negierst damit auch, dass einfache Includes für Kopf und Fuß ebenfalls ein Templatesystem darstellen. Und dafür benötigt man nur einen TXT-Editor. Wir kommen hier in der Debatte nicht weiter, weil Du eben einzelne PHP-Skripte völlig langweilig und falsch findest. Das habe ich zu respektieren. Die Sache mit der DOM-Bibliothek verstehe ich leider nicht. Im PHP-Jargon können wir darüber nicht reden, weil ich den nicht verstehe. Wenn ich Dich richtig verstehe, dann ist das, was ich in Umgangssprache beschrieben habe, technisch mit PHP absolut unmöglich. Mit Wordpress werde ich leider nicht warm. Schon das GUI ist unglaublich überladen, wenn man nur mit etwas Einfachem beginnen möchte. Es gibt dort eben nicht das Konzept des Bottom-Up. Mit Wordpress kann man nicht minimalistisch und mit total schlankem HTML-Code beginnen. Dafür müsste man Programmierer sein und ein ganzes Thema und auch ein Plugin bauen. Wenn man es sprachlich genau nimmt, dann beginnt bei Wordpress alles in einer bereits "erweiterten" Form. Eine "noch nicht erweiterte Form", siehe unten, lässt sich mit Wordpress unmöglich produzieren. HTML-Code:
<!doctype html> <html> <head> <title>Lorem | Site Title</title> </head> <body> <header> <a href="/">Logo</a> <nav> <ol> <li><a href="/">Startseite</a> </li> <li aria-current="page"><a href="/lorem">Lorem</a></li> </ol> </nav> </header> <main> <h1>Lorem</h1> ... </main> <footer> <nav> <ol> <li><a href="/impressum">Impressum</a></li> <li><a href="/agb">AGB</a></li> </ol> </nav> </footer> </body> </html> Bottom-Up eben. Zu Deinem PHP-Code für das Menü: Ich bin dran. Noch ist es mir nicht gelungen, es zum Laufen zu kriegen. Die Erkennung der aktuellen Seite funktioniert bisher nicht. Zum Array: Eigentlich besteht so eine Matrix doch nur aus 2 Spalten und nicht vier, oder? 1 Linktext 2 Referenzierungspfad für href
__________________
Geändert von AndreasB (17.03.2018 um 11:22 Uhr) |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
FAQ -- Häufig gestellte Fragen und häufig gegebene Antworten | mazzo | CSS | 10 | 05.04.2012 17:32 |
grafische Navigation horizontal zentrieren, klappt nicht | lila_3 | CSS | 4 | 30.11.2010 10:25 |
IE verschiebt Navi Menü | macmensa | CSS | 7 | 17.08.2009 16:45 |
Probleme mit horizontaler Navi rechts | lila_3 | CSS | 2 | 14.07.2009 21:36 |
Dateien auslagern - Include und PHP | ArcVieh | Serveradministration und serverseitige Scripte | 17 | 27.03.2008 18:09 |