Individuelle Seitentitel in Editland

tempa wrote this 16:40:

Kleine Selbsthilfe oder ein kleines Plugin für Editland. Zunächst einmal ist es wichtig zu wissen, dass in Editland die Menünamen in der Datei menudata.csv verwaltet werden. In dieser Datei sind alle Dateinamen, oder sollten es sein, sofern nicht via Plugin Seiten aus der Menudata herausgenommen werden, wie das bei den Detailseiten im Tiacquisa-Shop möglich ist. In diesem Fall reicht das folgende Plugin um seitenweise individuelle Seitentitel zu erzeugen nicht aus.

Wir wissen, dass diese menudata.csv bereits verarbeitet wird. Schauen wir uns doch einmal im Code-Ordner nach den Menüfunktionen um und schauen wir uns den openSource-Code näher an. Wir brauchen nicht lange, da haben wir eine Stelle entdeckt in der $link und $text verwendet werden … voila, das ist die Stelle nach der wir gesucht habe. Wir machen uns diese Code zu nutze und greifen z.B. auf die $csvroot zu. Dies erspart uns ein paar Zeilen, bei der wir den Pfad zur Datei von den jeweiligen Ausgangspunkten index.php oder admin/index.php zu definieren. Das Plugin kommt nicht in Konflikt mit der weiteren Anleihen, aber bevor ich weiter vorgreife, zunächst einmal Schritt für Schritt zum neuen Editland-Plugin:

  1. Ergänzen Sie den Plugins-Ordner um einen Ordner pagetitle.
  2. Ergänzen Sie diesen Ordner um eine Datei index.php
  3. Diese Datei enthält z.B. folgende Anweisungen:
  1. <?php
  2. $handle = fopen("$csvroot", "r");
  3. for ($row = 0; $mdat = fgetcsv ($handle, 512, "|"); $row++) {
  4. $order[$row] = $mdat[1];
  5. $text[$row] = str_replace('&nbsp;&nbsp;', '',$mdat[2]);
  6. $link[$row] = $mdat[3];
  7. }
  8. fclose ($handle);
  9. for ($uw=0; isset($text[$uw]); $uw++) {
  10. // show selected
  11. if ($link[$uw]==$s) {
  12. echo $text[$uw];
  13. }
  14. }
  15. ?>

Das Skript ist geprüft und nun müssen Sie noch zwei Dinge erledigen und schon haben Sie einen Seitenweise unterschiedlichen Title-Tag.

  1. In der plugins.csv im Code-Ordner folgende Zeile ergänzen:
  1. |###---PAGETITEL---###|plugins/pagetitle/|../plugins/pagetitle/|index.php|
  1. Und im Template:
  1. <title>###---PAGETITEL---### auf
  2. ###---SITETITEL---###</title>

oder

  1. <title>###---PAGETITEL---### ::
  2. ###---SITETITEL---###</title>

Dabei darauf achten, dass die Platzhalter jeweils in einer eigenen Zeile stehen.

Statt dem sonst verwendeten

  1. <title>###---SITETITEL---###</title>

Voila und schon wird vor den Sitetitle, der in dem Formular admin/cms.php vergeben werden kann, der Menuname der Seite gestellt. Und die Anleihe aus dem Sourcecode der Menuverarbeitung kommt nicht in Konflikt mit dessen späteren Verwendung im Template. Das war also ein echtes Quick&Dirty-Plugin

Welche Variablen kann man immer verwenden und darauf zurückgreifen?

Dies sind die Variablen, die in den Settings gesetzt werden und in der template.php im admin-Ordner und dem code-Ordner verwendet werden und noch zwei Variablen sind bekannt, $c und $s aus dem Adressfeld. Damit hat man schon ein recht gutes Set, mit dem man allerhand anstellen kann.

Das schöne an openSource ist, dass man darin nachschlagen kann, lernen und kleine Anleihen machen darf. Aber vorsicht vor großen Anleihen, diese sollte man nur mit Genehmigung des PHP-Autors machen.

Was passiert da jetzt eigentlich im Programm?

Editland holt sich das Template und liest es zeilenweise aus. Immer wenn im Template eine Stelle auftaucht, die mit ###--- beginnt und mit ---### endet, sieht das Programm nach, ob der Platzhalter, hier ###---PAGETITEL---###, in der plugins.csv gelistet ist bzw. oder zur Grundausstattung gehört und wenn ja, ruft es die dazugehörige PHP-Datei auf, in diesem Fall die index.php im Plugins-Unterordner ‚pagetitle‘ und arbeitet den darin enthaltenen PHP-Code ab, ansonsten wird der Platzhalter ausgeschrieben.

Zu diesem Zeitpunkt kennt das Programm viele Variablen aus dem System bereits und wir können diese ebenfalls nutzen und müssen diese nicht neu definieren, wie z.B. $csvroot, das den Pfad zur menudata.csv enthält und wir haben auch den Seitennamen aus der Adresszeile schon in einer Variable und können so bestimmen, auf welcher Seite wir uns befinden, in dem wir einfach diesen Parameter bei der Schleife mit dem Eintrag als index verwenden ($s == $yx[$row]).Man kann natürlich auch eigene Listen generieren und diese auswerten. Hierfür muss man dann eine Verwaltung erzeugen und sinnvollerweise beachtet man hierfür die Struktur von Editland. Nutzerdaten kommen am Besten in den content/content-Ordner und die Verwaltung mit den Formularen zur Erzeugung in den ohnehin per htaccess geschützten Ordner Admin. Hierfür wurde ein spezieller pluginadmin-Ordner etabliert, so dass dieser ausgelesen wird und über die Fernbedienung per Mausklick erreichbar ist, man kann aber auch eigene Unterordner schreiben und Links und Schaltflächen direkt in das Template über die Pluginplatzhalter, während der Admin aktiv ist, schreiben. Ausführende Skripte müssen in der plugins.csv im Code-Ordner angemeldet werden, hierbei kann man auf einen Ordner unterhalb des Ordners Plugin zugreifen muss es aber nicht und auch kann man je nach Status auf unterschiedliche Ordner zugreifen. Nur die Dateinamen der PHP-Skripte in den jeweiligen Ordnern, auf die Editland zugreifen soll, müssen dann übereinstimmen.

5 Responses to “Individuelle Seitentitel in Editland”

  1. creisi Says:

    Gefällt mir, einfach aber effektiv 🙂 Ich hätte da bestimmt ganz kompliziert nach einer eigenen Lösung gesucht mit Adminverwaltung usw. und wäre tagelang drangesessen…

  2. Silke Schümann Says:

    Mir war es wichtig, die Einfachheit zu demonstrieren, mit der so ein Plugin geschrieben werden kann um jedem der sich an PHP wagen will oder dort sogar einige Erfahrung hat, den Einstieg zu erleichtern.

    Du weißt ja, ich finde Editland ist ein herrliches Teil mit dem man schon sehr viel anfangen kann. Nur in der Fernbedienung vermisse ich ein zwei Schnittstellen, aber es geht auch ohne, wenn man mit CSS und DOM umzugehen versteht. Schließlich kann man jederzeit weitere Module ein- und ausblenden und diese an geeigneter Stelle im Template packen.

    Und als PHP-Newbie bin ich froh, wenn ich mich nicht allzuviel mit der Verwaltung von Daten herumschlagen muss. 😉 Da wird dann genutzt, was vorhanden ist. Auch wenn es suboptimal ist, denn ein spezieller Seitentitel wäre schon denkbar, aber das kann man ja über eine if-Abfrage und der Verwaltung von Meta-Angaben immernoch nachschieben, wenn man sich dransetzt und das schreiben will. Ich hatte mir bei meinem Meta-Plugin-Plan einfach zuviel vorgenommen und konnte mich noch nicht dazu durchringen, es endlich umzusetzen.

  3. creisi Says:

    Da wird dann genutzt, was vorhanden ist.

    Das muss ich mir jetzt ganz gross auf einen Zettel schreiben, weil das manchmal wirklich der bessere Weg wäre, solange es flexibel genug bleibt und keine Konflikte gibt. Also öfter mal schauen, ob schon etwas da ist, was genutzt werden kann, statt das Rad neu zu erfinden.

    Tja, und die Sache mit dem zu viel vorgenommen… Sitze gerade wieder an einer Anwendung, die ich schon längst fertig haben könnte, wenn ich mich nur um die Must Have gekümmert hätte und die Nice To Have weggelassen hätte. Dieser blöde Ehrgeiz aber auch immer 😉

  4. Jörg Says:

    Hallo,

    ich habe die index.php im ersten Abschitt Nr. 3 beschrieben, angelegt. Beim Aufruf der Seite wird folgende Fehlermeldung angezeigt:
    Parse error: parse error, unexpected T_VARIABLE in H:xampplitehtdocssvspluginspagetitleindex.php on line 2

    Was habe ich falsch gemacht?

  5. Silke Schümann Says:

    Das klingt nach einem Syntaxfehler in der ersten Zeile. Anführungszeichen korrekt? Und das Plugin funktioniert nur innerhalb von Editland. Die index.php ausserhalb von Editland aufzurufen resultiert definitiv in dieser Fehlermeldung, da die Variable $csvroot in Editland definiert wird.

Leave a Reply