XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   PHP-Skript für das Erzeugen einer unverschachtelten Navi (http://xhtmlforum.de/showthread.php?t=73451)

AndreasB 16.03.2018 11:56

PHP-Skript für das Erzeugen einer unverschachtelten Navi
 
Nein, diesmal soll es nicht um das Entfernen von selbstreferentiellen Links gehen :) Das Thema ist ja durch.

Ich bitte euch hier um eine Empfehlung für ein PHP-Skript, welches zwei einfache unverschachtelte Menüs erzeugen kann.

Etwas, was einfach für jemanden anwendbar ist, der mit PHP kaum Erfahrung hat (wie ich ;).

Welche Vorgehensweise ist da besten?
Soll für das Skript eine Art Tabelle angegeben werden, wo jeweils die URL als auch der Linktext steht?

Oder soll einfach das komplette HTML angegeben werden und das Einzige was das Skript macht, ist das ergänzen der Kennzeichnung "aria-current="page""?

Über euren Rat und Beispiele freue ich mich. Danke.

Die Codevorlage sieht völlig schlicht so aus:

HTML-Code:

<nav>
        <ol>
                <li><a href="/">Startseite</a></li>
                <li><a href="/lorem">Lorem</a></li>
                <li><a href="/ipsum">Ipsum</a></li>
        </ol>
</nav>
...
<footer>
        <ol>
                <li><a href="/impressum">Impressum</a></li>
                <li><a href="/agb">AGB</a></li>
        </ol>
</footer>

Der vom PHP-Skript veränderte Code, hier beispielhaft für die Seite "Lorem" soll so aussehen:

HTML-Code:

<nav>
        <ol>
                <li><a href="/">Startseite</a></li>
                <li aria-current="page"><a href="/lorem">Lorem</a></li>
                <li><a href="/ipsum">Ipsum</a></li>
        </ol>
</nav>
...
<footer>
        <ol>
                <li><a href="/impressum">Impressum</a></li>
                <li><a href="/agb">AGB</a></li>
        </ol>
</footer>


protonenbeschleuniger 16.03.2018 12:11

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.

AndreasB 16.03.2018 13:17

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552093)
Das Verfahren kannst du hier z.b. nachlesen Navigation mit PHP

Danke für den Link.

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>

Ich hatte gehofft, es gäbe elegantere Verfahren.

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

protonenbeschleuniger 17.03.2018 08:35

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.

AndreasB 17.03.2018 08:47

@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.

cloned 17.03.2018 09:35

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)

protonenbeschleuniger 17.03.2018 09:36

Zitat:

Zitat von AndreasB (Beitrag 552102)
@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.

Habe ich auch nicht vor, ich sag dir nur das es so ist, weil man hier im Laufe der Jahre öfters solche Diskussion hatte. Du bist nicht der erste mit solchen Ideen, aber 10 Jahre später als die meisten. damals gab es solche Diskussion hier nahezu täglich.

Zitat:

Zitat von AndreasB (Beitrag 552102)
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.

Ich sehe nur was du gerade machst und worauf hin das läuft. Und das werden dir sicher auch "Erfahrenere" bestätigen.

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:

Zitat von AndreasB (Beitrag 552102)
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.

und genau darauf habe ich dir ja auch geantwortet.

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 von AndreasB (Beitrag 552102)
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.

Dazu müssten wir Wissen was du machen willst. Ich versuche mal die Problematik an den aufgelistet Forderungen
Zitat:

1 Lese aus, wie der URL der angefragten Seite heißt.
2 Treffe das Element li, welches den dazu passenden URL hat
Allein das ist schon eine Wissenschaft für sich.

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:

3 Füge in diesem Element li das Attribut "aria-current="page"" ein
Das ist dein Denkfehler. Ein PHP Skript ist dynamisch und erzeugt den Inhalt. Das was du hast, wäre ein Template, wo man dann aber üblicherweise einen Platzhalter einfügt der dann mit dem dynamisch erzeugten Wert gefüllt wird. Einfacher ist es in dem Fall wenn der ganze HTML Code dynamisch erzeugt wird.

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:

function Menu($current) {
    
$entries = array(
    [
'text' => 'link1''url' => 'url1'],
    [
'text' => 'link2''url' => 'url2'],
    [
'text' => 'link3''url' => 'url3'],
    [
'text' => 'link4''url' => 'url4'],
    );
    foreach(
$entries as $link) {
        
$class '';
        if(
$link['url'] == $current){ $class ' aria-current="page"';}
        
printf('<li%s><a href="%s">%s</a></li>'$class$link['url'], $link['text']);
    }


Dazu musst das Array $entries mit deinen Werten gefüllt werden und fertig. Dann musst du es nur auf deinen Seiten so einbinden:
PHP-Code:

<ul>
<?php
Menu
('url1');
?>
</ul>


AndreasB 17.03.2018 10:35

@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:

Aber das Problem ist, dass dein Ansatz einen fertigen HTML Code zu parsen, um dann mit PHP diesen zu ändern ist nicht sinnvoll.
Was ist an diesem Konzept bitte schlecht?

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:

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.
Im HTML referenziere ich mit absoluten Pfadangaben relativ zum Basis-URL. So wie es in meinem Beispielcode steht.
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:

Das ist dein Denkfehler. Ein PHP Skript ist dynamisch und erzeugt den Inhalt. Das was du hast, wäre ein Template, wo man dann aber üblicherweise einen Platzhalter einfügt der dann mit dem dynamisch erzeugten Wert gefüllt wird. Einfacher ist es in dem Fall wenn der ganze HTML Code dynamisch erzeugt wird.
Ich verstehe nicht, worin mein Denkfehler liegt.

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.

protonenbeschleuniger 17.03.2018 11:07

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:

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.
Damit begibst du dich geradewegs in die Sackgasse. Wenn du schon eine Bedingung, die du eigentlich im Hinterkopf hast, aussen vor läßt zeigt das, dass dir nicht klar ist was Erweiterbarkeit bedeutet und welche Hürden du dir aufbaust. Du musst von vorneherein immer alles für möglich halten und berücksichtigen, ansonsten landest du in der erwähnten Sackgasse.

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:

Ich verstehe nicht, worin mein Denkfehler liegt.

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.
Das ist dein Denkfehler. PHP kennt kein DOM und arbeitet auch nicht damit.

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)

AndreasB 17.03.2018 12:12

@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>

Mit einem CMS, was genau das per Default beherrscht, würde ich gerne in das Gebiet CMS einsteigen.
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

protonenbeschleuniger 17.03.2018 13:09

Zitat:

Zitat von AndreasB (Beitrag 552108)
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.

In deinem Fall ja. Aber nicht grundsätzlich. Es kommt im Detail darauf an, was du machen willst und deine Ziele sind.

Ich kann es aber nur wiederholen. Das, woran du arbeitest ist der typische Idealfall für ein CMS und so wie du es angehst wirst du am Ende entweder ein zusammengefrickeltes, irgendwie laufendes System haben, das du in zwei Jahren nicht mehr anfassen möchtest, wenn eine größere Änderung eingebaut werden soll oder es bleibt halt 10 Jahre so. Bis der Auftraggeber die Seite löscht.

Zitat:

Zitat von AndreasB (Beitrag 552108)

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.

Das verstehe ich nicht.

Ja, das ist ein Template System (wie gesagt PHP ist an sich schon ein solches) und ja sinnvollerweise bearbeitet man den Quellcode mit einem Texteditor.

Es ging aber um deine Trennung zwischen einem HTML und PHP Bearbeitung. Das findest du heute so wie du es beschreibst nicht mehr. Da heute zu beiden Techniken viel mehr gehört brauchst du Leute die jeweils viel mehr können. Aber sobald du - wie hier - mit PHP anfängst, musst dich logischerweise auch mit Programmiertechniken auseinandersetzen, ansonsten machst du den gleichen Fehler wie viele vor dir.

Und das was du hier konkret willst, ist der Grundstein eines CMS.

Wie gesagt google nach "php navigation" du wirst unzählige Threads wie diesen finden und wie Leute versuchen so etwas zu bauen. Fast immer zwischen 2007 und 2009. Danach hat sich kaum noch jemand die Mühe gemacht, weil es dann die vielen kostenlosen CMS Systeme gab.

Heute gibt es keinen "HTML Autor" mehr. Es gibt höchstens noch Grafiker/Designer die vielleicht kein oder wenig HTML/CSS beherrschen und alles mit einem Grafikprogramm entwickeln. Die entwerfen dann vielleicht ein HTML Mockup, das dann aber jemand mit mehr Kenntnissen in das Zielsystem einarbeitet.

Zitat:

Wir kommen hier in der Debatte nicht weiter, weil Du eben einzelne PHP-Skripte völlig langweilig und falsch findest.
Nein. Auch das habe ich nicht gesagt (deine Interpretationen meiner Aussagen verwundern mich,. Ich gebe mir Mühe dir ausführlich zu antworten, ist das wirklich so mißverständlich?). Im gegenteil, ich weise dich auf die Milllionen verfügbaren Skripte im Internet hin.

Aber wir können dir nicht sagen, welches du benutzen solltest/willst oder kannst, weil im Prinzip alle das Gleiche machen aber unterschiedliche Kentnisse, Vorstellungen und/oder Techniken vorraussetzen oder erfüllen.

Das ist das unergiebige an der Diskussion, wir können dir nur konkret helfen, aber der augenblickliche Stand ist, wie wenn du in die Autowerkstatt kommst und sagst: "Ich möchte gerne ein Auto reparieren. Ich kenne mich ein bisschen aus und weiss wie man es fährt, welches Auto soll ich reparieren? Ich würde gerne ein rotes nehmen und es sollte mindestens 180 fahren. Was ist eure Meinung?"

Darauf hin habe ich dir einen VW Käfer gezeigt und versucht zu erklären, dass das zwar einfach zu reparieren ist, wir aber Wissen müssen was kaputt ist und heutige Autos aber viel mehr Komfort hätten.

Daraufhin stellst du fest: Dass du nicht damit warm wirst und erstmal nur die Karossierie reparieren willst und gerne erstmal ein Auto ohne Motor und Reifen hättest.

An dem Punkt sind wir jetzt und ich weiss nicht was ich dir empfehlen könnte. Es gibt bestimmt irgendwo Karroserien, aber sinnvoll ist das nicht.

Zitat:

Die Sache mit der DOM-Bibliothek verstehe ich leider nicht.
Wie gesagt dass hatte ich dir schon erkärt (in den Deppenlinksthread), es gibt eine Bibliothek mit der du unter PHP ein DOM Dokument parsen kannst. Das macht man normalerweise wenn man eine externe Quelle hat und aus dieser z.b. Daten rausziehen möchte (und darf).

Zitat:

Wenn ich Dich richtig verstehe, dann ist das, was ich in Umgangssprache beschrieben habe, technisch mit PHP absolut unmöglich.
Nein, du versteht mich falsch.

Zitat:

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.
Es gibt auch keine. Die aktuelle Seite muss ihre Kennung der Funktion Menu() übergeben.

Zitat:

Zum Array:
Eigentlich besteht so eine Matrix doch nur aus 2 Spalten und nicht vier, oder?

1 Linktext
2 Referenzierungspfad für href
Das ist ein Hash oder assoziatives Array oder genauer ein Array aus solchen.
PHP-Code:

    $entries = array(
    [
'text' => 'link1''url' => 'url1'],
    [
'text' => 'link2''url' => 'url1'],
    [
'text' => 'link3''url' => 'url1'],
    [
'text' => 'link4''url' => 'url1'],
    ); 

Die Texte 'link1' bis 'link4' sind die Texte der Links und 'url1' ist der Platzhalter für den eigentlichen Link. Also z.b. so:
PHP-Code:

    $entries = array(
    [
'text' => 'home''url' => '/'],
    [
'text' => 'neues''url' => '/news'],
    [
'text' => 'kontakt''url' => '/php/kontakt.php'],
    [
'text' => 'extern''url' => 'http://example.org/'],
    ); 

Und wenn auf der news Seite musst du es dann so einbinden:

PHP-Code:

Menu('/news'); 


AndreasB 17.03.2018 14:05

Deinen Code konnte ich jetzt nach Deinen Hinweis erfolgreich anwenden.
Danke :)

Zu den anderen Punkten antworte ich Dir noch.

Ich habe etwas Sorge, Dich vielleicht zu nerven. Das ist jedenfalls nicht meine Absicht.

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552110)
Das ist ein Hash oder assoziatives Array oder genauer ein Array aus solchen.

Ich werde noch versuchen, es so umzubauen, dass daraus was zweispaltiges wird. So dass wirklich nur die Wertepaare im Array stehen.

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552110)
Und wenn auf der news Seite musst du es dann so einbinden:

PHP-Code:

Menu('/news'); 


Ich werde noch versuchen herauszufinden, wie man den Pfad auslesen lassen kann, anstatt ihn manuell angeben zu müssen.

Dann wäre der Code perfekt elegant.

protonenbeschleuniger 17.03.2018 17:40

Zitat:

Zitat von AndreasB (Beitrag 552112)
Ich werde noch versuchen, es so umzubauen, dass daraus was zweispaltiges wird. So dass wirklich nur die Wertepaare im Array stehen.

Womit du mein Ziel der Erweiterbarkeit und Flexibilität zerstören würdest.

Zitat:

Ich werde noch versuchen herauszufinden, wie man den Pfad auslesen lassen kann, anstatt ihn manuell angeben zu müssen.

Dann wäre der Code perfekt elegant.
Nein, schlechter lesbar, schlechter wartbar, evtl. nicht mehr erweiterbar. Das ist das gegenteil von Elegant. Was du meinst ist: kurz.

PHP-Code:

function Menu($current) {
    
$entries = [['link1''url1'],['link2''url2'],['link3''url3'],['link4''url4']];
    foreach(
$entries as $link) {
        
$class '';
        if(
$link[0] == $current){ 
            
printf('<li>%s</li>'$link[0]);
        }else {
            
printf('<li%s><a href="%s">%s</a></li>'' aria-current="page"'$link[1], $link[0]);
        }
    }


In der Version wäre der Parameter für den aktuellen Link der Text, wenn dir der Link nicht gefällt und der "Deppenlink" ist entfernt (auch wenn ich das nicht sinnvoll finde).

Der Aufruf auf der Seite wäre dann so:
PHP-Code:

<ul>
<?php
Menu
('link1')
?>
</ul>


cloned 19.03.2018 09:58

Es ist auch schön zu sehen, dass meine Fragen recht zu Beginn des Threads ignoriert werden. Vor allem die erste Frage würde mich doch sehr interessieren.
Zumindest eine Frage wurde indirekt schon beantwortet: Du weißt nicht wirklich, wie PHP eigentlich funktioniert.

Bezüglich Wordpress: Du hast, wie dir bereits in einem anderen Thread mitgeteilt wurde, 100% kontrolle über das HTML bei wordpress. Wenn es dir nicht passt dann musst du dir dein eigenes Template bauen.
Warum es das nicht "von haus aus" gibt: Weil es nicht benötigt wird.
Aber ich habe zB das hier gefunden. Das ist doch in etwa das, was du willst? HTML5 Blank WordPress boilerplate theme - build themes faster with HTML5 Blank

AndreasB 19.03.2018 16:52

Zitat:

Zitat von cloned (Beitrag 552132)
Bezüglich Wordpress: Du hast, wie dir bereits in einem anderen Thread mitgeteilt wurde, 100% kontrolle über das HTML bei wordpress. Wenn es dir nicht passt dann musst du dir dein eigenes Template bauen.

Ein Theme bauen, welches den von mir erwähnten minimalistischen Code ausgibt, braucht tiefe Kenntnisse in PHP. Die habe ich nicht.

Zitat:

Zitat von cloned (Beitrag 552132)
Warum es das nicht "von haus aus" gibt: Weil es nicht benötigt wird.

Klingt doch arg nach "Was WP nicht kann, brauch niemand."
Lassen wir so stehen.
Zitat:

Zitat von cloned (Beitrag 552132)
Aber ich habe zB das hier gefunden. Das ist doch in etwa das, was du willst? HTML5 Blank WordPress boilerplate theme - build themes faster with HTML5 Blank

Das hatte ich schon vor etlichen Tagen ausprobiert. Auch damit ist der ausgegebene Code voll mit überflüssigem Zeug. Meilenweit weg von meinem Beispiel.

AndreasB 19.03.2018 16:54

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552113)
Womit du mein Ziel der Erweiterbarkeit und Flexibilität zerstören würdest.

Nein, schlechter lesbar, schlechter wartbar, evtl. nicht mehr erweiterbar. Das ist das gegenteil von Elegant. Was du meinst ist: kurz.

Danke erstmal für das Beispiel.

Ich werde noch versuchen, nachzuvollziehen, warum Du zu diesen Schlussfolgerungen kommst.

Lassen wir das erstmal so stehen, ich möchte vermeiden, dass Du sonst genervt bist.

AndreasB 19.03.2018 17:07

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552110)
[...]
Daraufhin stellst du fest: Dass du nicht damit warm wirst und erstmal nur die Karossierie reparieren willst und gerne erstmal ein Auto ohne Motor und Reifen hättest.

An dem Punkt sind wir jetzt und ich weiss nicht was ich dir empfehlen könnte. Es gibt bestimmt irgendwo Karroserien, aber sinnvoll ist das nicht.

Erstmal möchte ich Dir versichern, dass ich Deine ausführliche Antwort schätze und mit Gewinn lese. Auch wenn ich nicht alle Schlußfolgerungen verstehe/teile werden Deine Ausführungen meine weitere Beschäftigung mit CMS beeinflussen.
Danke dafür.

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552110)
Wie gesagt dass hatte ich dir schon erkärt (in den Deppenlinksthread), es gibt eine Bibliothek mit der du unter PHP ein DOM Dokument parsen kannst. Das macht man normalerweise wenn man eine externe Quelle hat und aus dieser z.b. Daten rausziehen möchte (und darf).

Hier hätte ich noch gerne verstanden, warum es für interne Quellen in dem hier diskutierten Fall als eine so falsche Technik gilt, diese Bibliothek zu verwenden.
Dazu werde ich noch weiter recherchieren.

Auch zu dem Thema, welches Du oben erwähnst, der Vermischung von Programmiercode und Inhalt.
Es erscheint mir unvernünftig zu sein.
Vielleicht gibt es bessere Lösungen mit anderen Programmiersprachen, wo Inhalt und Programmierung sauber getrennt sind. Ganz andere Architekturen.

Ich habe noch all das zu lernen. Da stehe ich ganz am Anfang.

cloned 19.03.2018 17:26

@AndreasB
Deine Antworten klingen arg nach "Ich bin das Maß aller Dinge, nur meine Ansichten sind elegant".
Lassen wir mal so stehen.

protonenbeschleuniger 20.03.2018 11:22

Zitat:

Zitat von AndreasB (Beitrag 552148)
Klingt doch arg nach "Was WP nicht kann, brauch niemand."
Lassen wir so stehen.

Nur mal so als Überlegung: Wordpress wurde seit 15 jahren 23 Millionen mal runter geladen, also vermutlich von vielen Mio. Menschen genutzt. In diesen 15 Jahren hatte niemand das Bedürfniss was du möchtest "von Haus aus" einzubauen und du wunderst dich darüber?

zumal das was du willst ja auch geht, aber selbst das Plugin was für dich gefunden wurde, wird nicht mehr gepflegt.

wie gesagt nur als Überlegung.

Zitat:

Hier hätte ich noch gerne verstanden, warum es für interne Quellen in dem hier diskutierten Fall als eine so falsche Technik gilt, diese Bibliothek zu verwenden.
Es wäre Unsinn. Da das was du als interne Quellen bezeichnest der PHP Quellcode ist. Ein DOM Baum entsteht erst im Browser. D.h. du musst im PHP Code den Browser simulieren um einen DOM Baum zu erstellen, damit du ihn dort, wie du es möchtest, manipulieren kannst.

Ich weiss gar nicht was daran so schwer zu verstehen ist, dass das nicht sinnvoll sein kann?

Zitat:

Auch zu dem Thema, welches Du oben erwähnst, der Vermischung von Programmiercode und Inhalt.
Es erscheint mir unvernünftig zu sein.
Vielleicht gibt es bessere Lösungen mit anderen Programmiersprachen, wo Inhalt und Programmierung sauber getrennt sind. Ganz andere Architekturen
Damit hat das nichts zu tun.

Das EVA Prinzip ist insbesondere bei PHP wichtig, weil diese Architektur die Vermischung geradezu provoziert. Das liegt daran, dass am Anfang (Ende der 90er) dieses vermischen von Programmiersprache und HTML vielen elegant vorkam (so wie dir manches elegant vorkommt, dass bei uns Haare raufen auslöst). Dies zeigt sich auch heute noch in vielen PHP Programmcode. Aber man muss auch dazu sagen, darauf gründete sich der Erfolg von PHP gegenüber Perl. (Genaugenommen ist PHP sogar aus Perl entstanden)

Ich habe diese Entwicklung und die Probleme damit hautnah mitbekommen. Am anfang habe ich auch geflucht, dass es so kompliziert war HTML Ausgabe in meinem Programmcode zusammen zu basteln und war fasziniert von PHP. Aber schnell zeigte sich, dass ist kein guter Weg. Änderungen an der Programmierlogik erforderten Eingriffe in Code der durchsetzt war mit HTML Tags und führte oft zu unerwartende Ergebnise in der Ausgabe. Es stellte sich heraus, der Code war einfacher zu pflegen, wenn die HTML Ausgabe nur an einer Stelle erzeugt wurde und am besten noch so, dass man in dieser Logik auch z.b. Javascript ausgeben konnten (was wichtig war, als AJAX populär wurde)

Strukturierung ist das Zauberwort und dabei ist das EVA Prinzip eines, das im Webbereich eine grosse Rolle spielt (daneben gibt es z.b. noch MVC, wo der Fokus aber auf das gesamte System gerichtet ist).

Man muss aber auch ehrlicherweise sagen, das EVA Prinzip macht in PHP nur bedingt Sinn. Ich finde die PHP Templates in Wordpress zeigen einen Weg wie man HTML Code und Programmierlogik vermischen kann.

Was ein simples WP Theme angeht, ich hab zu Hause mal was angefangen. Ich kann das später mal hier abladen.

Das Problem ist aber tatsächlich so, ohne PHP Kenntnisse kommst du da nicht weiter, das ist so gewollt. Es gibt andere Templatesysteme (YAML) die erfordern aber auch Kenntnisse.

Wenn du dich über eine pure HTML/CSS Seite hinaus mit Webtechniken beschäftigen möchtest, kommst du um diese Grundlagen aber nicht herum.

Eigene Theorien oder auf Unkenntniss beruhende Überlegungen haben wir fast alle selbst hinter uns. Aber wie ich schon schrieb, irgendwann landest du dann in einer Sackgasse und bist genervt von dir selber, weil du nicht vorher auf andere gehört hast.

Zumindest mir ging es so. Und ich kann mich noch gut an die Zeit erinnern, wo ich Templates für überflüssiges Zeug hielt und meinen Code möglichst "schlank" halten wollte, weil ich dachte damit wird er schneller.

Der Irrglaube eines Anfängers.

AndreasB 21.03.2018 09:28

Zitat:

Zitat von AndreasB
Ich werde noch versuchen, es so umzubauen, dass daraus was zweispaltiges wird. So dass wirklich nur die Wertepaare im Array stehen.

Zitat:

Zitat von protonenbeschleuniger (Beitrag 552113)
Womit du mein Ziel der Erweiterbarkeit und Flexibilität zerstören würdest.

Hier verstehe ich Dein Argument nicht. Warum würde durch eine zweispaltige Matrix im Gegensatz zu einer vierspaltigen Flexibilität zerstört?
In dem "vierspaltigen Array" gibt es doch total viel Wiederholung.
Soll denn sowas nicht möglichst vermieden werden, damit Code gut wartbar bleibt.
Bitte verstehe das in keiner Weise als Kritik an Deinem Code.
Aber ich möchte gerne verstehen, warum Du meinen Wunsch nach einer zweispaltigen Matrik kritisierst.

HTML-Code:

['text' => 'Home', 'url' => '/'],
['text' => 'Neues', 'url' => '/neues'],
['text' => 'Foo', 'url' => '/foo']

ist doch weniger gut wartbar als
HTML-Code:

§[
        'text'  'url'
        'Home'  '/'       
        'Neues' '/neues'
        'Foo'  '/foo'

Das ist eine rein fiktive Syntax, da ich nicht weiß, ob so eine zweispaltige Matrix in PHP überhaupt möglich ist.
Ich habe das Konzept von Python angewendet, wo Tabulartoren und Zeilenumbrüche Teil der Syntax sind.

Sowas fände ich sehr gut wartbar/lesbar.

protonenbeschleuniger 21.03.2018 10:05

Zitat:

Zitat von AndreasB (Beitrag 552171)
Hier verstehe ich Dein Argument nicht. Warum würde durch eine zweispaltige Matrix im Gegensatz zu einer vierspaltigen Flexibilität zerstört?

In dem "vierspaltigen Array" gibt es doch total viel Wiederholung.
Soll denn sowas nicht möglichst vermieden werden, damit Code gut wartbar bleibt.

Nein. Das sind zwei unterschiedliche Punkte. Bei der Vermeidung von Codewiederhohlung geht es nicht um Daten, sondern um Programmcode und Wartbarkeit wird nicht durch Kürzung des Code erreicht.

Der Vorteil der benannten Parameter ist der, dass du erkennst was welcher Wert ist. Das ist hier unterstes Level, aber es zeigt worum es geht.

Zitat:

Zitat von AndreasB (Beitrag 552171)
HTML-Code:

['text' => 'Home', 'url' => '/'],
['text' => 'Neues', 'url' => '/neues'],
['text' => 'Foo', 'url' => '/foo']

ist doch weniger gut wartbar als
HTML-Code:

§[
        'text'  'url'
        'Home'  '/'       
        'Neues' '/neues'
        'Foo'  '/foo'

Sowas fände ich sehr gut wartbar/lesbar.

(Eigentlich gibt es keinen Grund Pseudocode zu fabrizieren, ich hatte dir den äquivalenten PHP Code schon gezeigt)

Inwiefern besser wartbar? woran erkennst du (in zwei Jahren) was die Werte bedeuten?

Microoptmierung ist der Beginn des Chaos. Nur weil du vielleicht 50 Bytes und 0.1µS Laufzeit sparst hast du nichts gewonnen.

Oder was machst du, wenn du das Array erweitern möchtest?
z.b. so
PHP-Code:

    $entries = array(
    [
'text' => 'home''url' => '/''title' => 'Startseite'],
    [
'text' => 'neues''url' => '/news''irgendetwas' => 'tu_was_anderes'],
    [
'text' => 'kontakt''url' => '/php/kontakt.php'],
    [
'text' => 'extern''url' => 'http://example.org/','class' => 'ext_link'],
    ); 


AndreasB 21.03.2018 10:31

@protonenbeschleuniger

Mir geht es in keiner Weise um "Mikroptimierung" oder "Performance" oder "Dateigrößen".

Mir ging es allein um die Lesbarkeit/Wartbarkeit von Programmiercode.

Mein fiktives Beispiel ist für meine Augen drastisch besser lesbar als Dein Array.

Aber vielleicht empfinden wir das einfach verschieden und lassen es so stehen.
Meine Vermutung war, dass es durchaus objektiv messbare Merkmale für Lesbarkeit von Code gibt.

Danke für Dein Beispiel mit der Erweiterbarkeit Deines Codes.

Das Konzept eines assoziativen Arrays habe ich noch nicht verstanden, das hole ich nach. Vorerst erscheint es mir etwas unübersichtlich, wenn "mittendrin" statt "ganz oben" neue Variablen (bei Deinem Beispiel "irgendwas" und "class") deklariert werden.

Wie auch immer. Das führt uns wohl zu weit, denn ich kann ja bei Konzepten/Syntax und Architektur von Programmiersprachen nicht mitreden.

Ich habe ja lediglich mal gesehen, wie schön Python-Code im Vergleich zu anderen Programmiersprachen meinem Auge erschien.

Es würde mir übrigens in unserer Konversation helfen, wenn Du manchmal sagen würdest "Andreas, ich verstehe Deinen Gedanken und finde die tabellarische Darstellung in Deinem fiktiven Code auch sehr gut lesbar, aber eine solche Schreibweise hat folgenden Nachteil für die Erweiterbarkeit ..."

So lese ich bei Dir vor allem implizit heraus "Andreas, was Dir vorschwebt ist völlig sinnloser Quatsch, ich kann in keiner Weise verstehen, wie Du darauf kommst."

protonenbeschleuniger 21.03.2018 10:55

Zitat:

Zitat von AndreasB (Beitrag 552178)
Mir geht es in keiner Weise um "Mikroptimierung" oder "Performance" oder "Dateigrößen".

Das ist aber der einzige Effekt deiner "Optimierung" und deine Fragen in anderen Threads deuten darauf hin, dass du ein grosses faible für Mikrooptimierung hast.

Und ich kann mich nur wiederholen, ich kenne das aus eigener Erfahrung. Es führt niemals zu besser lesbaren Code wenn man Code kürzt.

Zitat:

Zitat von AndreasB (Beitrag 552178)
Mir ging es allein um die Lesbarkeit/Wartbarkeit von Programmiercode.

Mein fiktives Beispiel ist für meine Augen drastisch besser lesbar als Dein Array.

Da sagt der erfahrene Programmierer: "du irrst dich".

Ich hatte dich aber konkret gefragt, was liest du aus dem Array? Ich sag es dir: Nichts!

Du weisst JETZT, dass das erste Element des Array der Text ist und das zweite die URL. Wenn noch weitere Eigenschaften hinzukommen, dann ist das dritte Element die Klasse, das vierte der Titel.

Weiter unten in der Funktion steht der eigentliche Programmcode und dort werden die Daten genutzt, das sähe dann mit deiner Version so aus:

PHP-Code:

printf('<li class="%s"><a href="%s" title="%s">%s</a></li>'$link[3], $link[1], $link[4], $link[0]); 

und das hälst du für besser lesbar als:
PHP-Code:

printf('<li class="%s"><a href="%s" title="%s">%s</a></li>'$link['class'], $link['url'], $link['text'], $link['title']); 

und wie gesagt, wir reden hier nur über einen 3 Zeiler. In einem etwas größeren Programm, wirst du deinen Codevariante schon nach wenigen Tagen hassen, weil du nichts mehr findest und die Erweiterbarkeit massiv erschwerst und am Schluss mehr aufgeblähten Code hast, als mit der anderen Variante.

Zitat:

Zitat von AndreasB (Beitrag 552178)
Danke für Dein Beispiel mit der Erweiterbarkeit Deines Codes.

Das Konzept eines assoziativen Arrays habe ich noch nicht verstanden, das hole ich nach. Vorerst erscheint es mir etwas unübersichtlich, wenn "mittendrin" statt "ganz oben" neue Variablen (bei Deinem Beispiel "irgendwas" und "class") deklariert werden.

Das sind keine neue Variabeln, sondern Eigenschaften. Und was du als Mittendrin bezeichnest, ist ein Beispiel für Flexibilität, diese Eigenschaften könnte es geben oder nicht. Die Anordnung ist dabei auch völlig Variabel.

Das Konzept des AA ist weit verbreitet und du hast es sicher verstanden, denn wendest es z.b.auch in HTML oder CSS schon massiv an.

HTML-Code:

p {
width:60%;
height:2em;
color:blue;
background-color:#fff
}

ist exakt das - ein assoziatives Array oder Hash - und wie oft kommt in deinem CSS color vor?
du behauptest hier, der Code wäre besser lesbar, wenn dort nur so was stehen würde:
HTML-Code:

p [60%, 2em, blue, #fff]
Wie gesagt, mit deinem ständigen Hinterfragen von Selbstverständlichkeiten wirst du nur sehr, sehr langsam vorwärts kommen.

protonenbeschleuniger 21.03.2018 10:59

Zitat:

Zitat von AndreasB (Beitrag 552178)
So lese ich bei Dir vor allem implizit heraus "Andreas, was Dir vorschwebt ist völlig sinnloser Quatsch, ich kann in keiner Weise verstehen, wie Du darauf kommst."

Naja, ist es auch. Aber ich habe bereits an etlichen Stellen geschrieben, dass ich deine Gedanken gut verstehe und früher teilweise auch selbst hegte. Das scheinst du überlesen zu haben oder du magst es nicht wahrnehmen.

Ich kann dir nur sagen, für mich ist das eine sachliche Diskussion. Auch wenn vieles Unsinn ist was du vorschlägst, aber ich kenne diese Gedanken, ansonsten würde ich mir die Mühe nicht machen dir zu erklären wo du falsch denkst.

chorn 21.03.2018 14:26

Zitat:

Zitat von AndreasB (Beitrag 552178)
Meine Vermutung war, dass es durchaus objektiv messbare Merkmale für Lesbarkeit von Code gibt.

Sehe ich genau so, unter meinen Top 10 sind dabei:

- Nachvollziehbarer Code mit rotem Faden
- durch: Logik im Code abspeichern, nicht im Gehirn
- durch: keine durchnummerierten Variablen - auch nicht als Array-Keys.

AndreasB 22.03.2018 07:37

@protonenbeschleuniger
Ich nehme sehr wohlwollend wahr, dass Du Dir die Zeit für Deine Antworten nimmst. Dafür danke ich Dir sehr.
Und Deine Kritik kommt an und wirkt. Ich brauche aber Zeit um das alles zu verarbeiten.

Durch Deine Beispiele zum assoziativen Array habe ich nun besser verstanden, was seine Vorteile sind. Eine Diskussion weiterer Details wäre unangebracht, dafür fehlen mir Programmierkenntnisse.

Ja, Du hast wohl auch Recht mit Deiner Kritik meines Hinterfragens in dieser Anfängerphase.

Du schriebst an anderer Stelle, dass Du eventuell ein minimalistisches Word-Theme schreiben wirst. Lasse es mich bitte wissen, falls es dazu kommt.

Vielen Dank an alle hier im Thread, auch für eure Geduld.

protonenbeschleuniger 22.03.2018 09:34

Zitat:

Zitat von AndreasB (Beitrag 552208)
Du schriebst an anderer Stelle, dass Du eventuell ein minimalistisches Word-Theme schreiben wirst. Lasse es mich bitte wissen, falls es dazu kommt.

"Dazu gekommen" war es schon, ich hatte nur keinen Zugriff bisher.

Also. Ein WP Theme besteht mindestens aus: style.css, index.php, header.php, sidebar.php, footer.php und einer functions.php

Diese muss du in ein Verzeichniss packen im Ordner ../wp-content/themes/ deiner WP Installation. Dann kannst du dieses Theme im Backend aktivieren und du hast dein simples Theme fast frei von unnötigen (du musst noch im Backend in den Nutzereinstellungen die Werkzeugleiste deaktivieren)

Hier die Dateien:

style.css

die CSS Deklarationen

HTML-Code:

/*
Theme Name: Simple
Theme URI: ....
Description: Ein einfaches WP Theme
Version: 1.0
Author: ....
Author URI: ....
*/
body {
        background-color: #fff;
        color: #000;
        font-family: 'Courier new', Courier, monospace;
}

index.php

steuert die Ausgabe der "Posts" (nicht der "pages")

PHP-Code:

<?php get_header(); ?>
<!-- Start: Index.php -->
<?php if (have_posts()) : while (have_posts()) : the_post();?>
<div class="post">
    <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
    <?php the_content('[... weiterlesen]');?>
</div>
<?php endwhile; else: ?>
    <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
<!-- Ende: Index.php -->

<?php get_sidebar(); ?>

<?php get_footer(); ?>

header.php

der Ort der Meta Angaben

PHP-Code:

<!doctype html>
<html lang="de">
<head>
    <title><?php wp_title('');?> [<?php bloginfo('name');?>]</title>
    <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
    <meta name="description" content="<?php bloginfo('description'); ?>" >
    <link href="<?php bloginfo('stylesheet_url'); ?>"  title="Standard"  rel="stylesheet"  type="text/css">
</head>
<body>
<h1><a title="Startseite" href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>

sidebar.php

hier wird das Menu erzeugt, dafür gibt es aber X-andere Möglichkeiten.

Die einfachste wäre das builtin Menü zu nutzen. Da bin ich aber kein Experte und weiss nicht, wie man dies möglichst einfach einbinden könnte. Daher hier die Methode die einfach nur die letzten 10 "posts" im Menü auflistet.

PHP-Code:

<!-- Start: sidebar.php -->
<div id="menu">

<div>
    <h2>Das Neuste</h2>
    <ul>
        <?php  
            wp_get_archives
('type=postbypost&limit=10'); 
        
?>
    </ul>
</div>

<?php if ( !dynamic_sidebar() ) : ?><?php endif; ?>

</div>
<!-- End:sidebar.php -->

footer.php

könnte man sich hier auch sparen. Aber wegen der Erweiterbarkeit und Flexibilität, wenn man wirklich ein komplettes Template machen will ist es sinnvoll.

PHP-Code:

<!-- (footer.php) -->
<?php wp_footer(); ?>
</body>
</html>

Dann benötigt man noch eine php Datei um unnötiges zu entfernen, da die vielen Millionen User z.b. gerne JQuery nutzen ist das per Default aktiviert. Das läßt sich aber entfernen:

PHP-Code:

<?php

// REMOVE EMOJI ICONS
remove_action('wp_head''print_emoji_detection_script'7);
remove_action('wp_print_styles''print_emoji_styles');

// Remove jQuery Migrate Script from header and Load jQuery from Google API
function crunchify_stop_loading_wp_embed_and_jquery() {
    if (!
is_admin()) {
        
wp_deregister_script('wp-embed');
        
wp_deregister_script('jquery');  // Bonus: remove jquery too if it's not required
    
}
}
add_action('init''crunchify_stop_loading_wp_embed_and_jquery');


AndreasB 22.03.2018 12:01

@protonenbeschleuniger

Echt nett von Dir :)

Das Erstellen des Themes und Aktivieren hat auf Anhieb geklappt. Cool!

Wirklich schön minimalistisch!

Danke! Wenn Du mal in Berlin sein solltest, lade ich Dich gerne auf ein Bier ein :)

Der letzte Teil des von Dir geposteten PHP-Codes zum Entfernen einiger Funktionen: welcher Dateiname muss dafür bitte vergeben werden?


Dann kann es jetzt also losgehen mit kleinen Aufgaben, die ich mir selber stelle.

Vor allem muss ich mir ein gutes PHP-Tutorial/Buch suchen.

protonenbeschleuniger 22.03.2018 13:26

Oh, vergessen: functions.php

Die ist aber nicht notwendig. Du müsstest aber sehen, dass etwas Javascript Code im HTML erscheint der nicht aus dem Template kommt. Was nicht schlimm wäre, wenn du z.b. sowieso vor hast mit jQuery zu arbeiten.

AndreasB 22.03.2018 14:25

Danke. functions.php ist jetzt auch drin.

Mal sehen, ob mir der Feinschliff hin zu
https://borumat.de/-/ge/minimal
gelingen wird.

* Entfernen des gesamten Codes zwischen <!-- (footer.php) --> und </body>

* Erzeugen eines Menüs mit <nav><a></a></nav> (McMurphy hatte kürzlich erwähnt, dass man ja die ul weglassen kann, schöne Idee.)

* relative Links zur Basis statt absolute

* ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:52 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2019, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2019