Zusätzliche Seiten per Plugin steuern

Gestern ist im Forum bei einigen Nutzern die Frage aufgekommen, wie man denn die Navigation der zusätzlichen Seiten in easyLink V3 an anderer Stelle platzieren kann und dieses möchte ich euch nun in einem kleinen Tutorial erklären.

Grundsätzlich ist zum allgemeinen Verständnis jedoch zu wissen, dass sich die Navigation selbst nicht in einer der vielen Template-Dateien befindet, sondern diese wird per PluginAPI über die spezielle Funktion DisplayCustomPages() dynamisch im Script erzeugt.

Die Funktion DisplayCustomPages() erzeugt also nicht nur die Ausgabe der Navigation selbst, sondern sie bestimmt natürlich auch deren Markup, sprich den HTML Code selbst. Trotzdem sollten Sie grundsätzlich davon absehen, Änderungen in der Funktion selbst vorzunehmen, denn genau dafür ist die PluginAPI entwickelt worden.

Nehmen wir also an, dass wir den HTML Code der Ausgabe verändern möchten, dann benötigen wir natürlich wieder eine spezielle Plugin-Datei und diese nennen wir in unserem Beispiel einfach CustomNavi.php. Der Speicherort für diese von uns neuerstellte Datei ist wie immer das Verzeichnis /plugins in der easyLink – Installation.

Der Kopf unserer Plugin-Datei sollte dann wie folgt aussehen:

/**
 * Plugin Name: CustomNavi
 * Plugin URL: http://www.mountaingrafix.eu
 * Description: Dieses Plugin ändert die Ausgabe der Zusatznavigation
 * Author: MountainGrafix
 * Version: 1.0
 */

Jetzt kopieren Sie die Funktion DisplayCustomPages() aus der Datei Plugable.func.php in unsere neue Plugin-Datei und nehmen darin dann die von Ihnen gewünschten Änderungen vor.

Das Plugin könnte nun z.B. so aussehen:

getResults("
		SELECT PostTitle, PostName FROM ".TABLE_PREFIX."posts 
			WHERE PostStatus = 'publish' 
				AND PostType = 'page' 
			ORDER BY PostTitle ASC
	");
	
	if (count($Pages)) {
		
		foreach ($Pages as $Page) {
			$Output .= "

PermalinkPage(0, $Page->PostName)."\">".$Page->PostTitle."

\n"; } echo $Output; } else { return false; } } ?>

Durch dieses Plugin würden die einzelnen Link’s nun in Absätzen ausgegeben und nicht mit in einer ungeordneten Liste. Die Funktion könnte aber theoretisch auch noch weitere Änderungen wie eine andere Sortierung der einzelnen Elemente oder verschiedene Filter enthalten.

Folgende Punkte sind jedoch immer zu beachten:

  • Sämtliche Funktionen in der Datei Plugable.func.php lassen sich durch gleichnahmige Funktionen in einem Plugin ersetzen, denn die Plugin’s werden zu diesem Zweck vom Script bevorzugt behandelt.
  • Die Plugin-Datei muss den vorgeschriebenen Aufbau (Kommentar-Kopf) haben um von der Software als gültiges Plugin erkannt und ausgeführt zu werden.
  • Änderungen, die in einem Plugin untergebracht sind, brauchen bei einem Update der Software nicht erneut eingebaut werden, sondern sie bleiben erhalten.

Zuweisung in das Template

Nun haben wir gerlernt, wie der HTML Code für die Navigation erstellt wird und wie wir diesen Code über ein Plugin verändern können, doch wie kommt die Navigation nun in das Template?

Auch dieses übernimmt die PluginAPI für uns, denn bereits in der Voreinstellung der Software wird die Zusatznavigation dem Hook SidebarIndexMain zugewiesen und genau das bewirkt, dass die Navigation auf der Startseite zwischen den beiden Boxen ausgegeben wird.

Mal angenommen, Sie möchten nun die Navigation auch auf den Kategorie- und Dateilseiten anzeigen, dann müsste man lediglich die erstellte Plugin – Datei um folgende Zeilen ergänzen:

AddAction('SidebarCategoryTop', 'DisplayCustomPages');
AddAction('SidebarDetailsTop', 'DisplayCustomPages');

Diese Erweiterung würde also bewirken, dass die Funktion DisplayCustomPages() auch in den Hooks SidebarCategoryTop und SidebarDetailsTop ausgeführt wird.

Ich hoffe, dass euch dieses Tutorial gefallen hat und ich würde mich auch über ein wenig Feedback in den Kommentaren diesbezüglich freuen. Wenn es also Lob, Kritik oder Vorschläge für weitere Tutorials von euch gibt, dann hinterlasst sie mir hier im Beitrag.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.