DokuWiki Plugins - Grundlagen

Dieses Projekt kann keine vollständige Einführung in die PHP- und DokuWiki-Plugin-Programmierung sein. Wir bewegen uns innerhalb eines bestehenden Frameworks von DokuWiki Funktionen und Rahmenbedingungen und lernen, uns in dieser Umgebung zurechtzufinden, um unsere Ziele zu erreichen. "Learning as we go". Ein solches Vorgehen fällt vielen analytisch denkenden Menschen manchmal schwer.

Installation und Test des Plugin Skeletts

Melde dich per ssh auf dem Übungsserver an

Wechsle in das Verzeichnis ~/public_html/wiki/lib/plugins

Klone das Repo der Projektvorlage: git clone https://codeberg.org/ironiemix/dokuwiki-plugin-projekt.git

Benenne das entstehende Plugin Verzeichnis um: mv dokuwiki-plugin-projekt/ projekt

Das Verzeichnis eines DokuWiki-Plugins muss immer genau so heißen, wie das Plugin in den php-Dateien auch benannt ist. Da das Vorlagen Plugin dort "projekt" heißt, muss es sich also in einem Ordner mit den Namen "projekt" befinden, damit es funktionieren kann.

Füge auf deiner Startseite im Wiki den Code

{{projekt>einTest}}

ein und betrachte die Ausgabe. Das sollte in etwa so aussehen:

Erklärungen

Das "projekt" Plugin ist ein sogenanntes "Syntax-Plugin", es erweitert die Dokuwiki Syntax um eigene Befehle. In unserem einfachen Fall findet lediglich eine Ersetzung statt: Wenn in der Wiki Seite der Code

{{projekt>optionen}}

gefunden wird, wird dieser durch einen durch das Plugin bestimmten Text ersetzt. Im Quelltext des Plugins wird gesteuert, nach welchen Code-Mustern in der Wiki-Seite gesucht wird, in welcher Weise gefundene Muster verarbeitet werden und was anstelle des gefundenen Musters ausgegeben werden soll.

Dieser Vorgang wird in der Datei syntax.php im Plugin Verzeichnis gesteuert, dabei spielen vor allem die drei Methoden connectTo, handle und render eine Rolle, die jedes DokuWiki-Syntax Plugin haben muss. Der prinzipielle Ablauf ist der folgende:

Aufgaben

(A1)

Öffne die Datei syntax.php im Editor deiner Wahl. Der Quelltext ist mit Kommentaren versehen - vollziehe den im Diagramm oben dargestellten Ablauf beim finden des Musters und dessen Ersetzung im Quelltext nach.

Überprüfe deine Erkenntnisse, indem du das Plugin veränderst:

Ändere das Plugin so ab, dass es auf das Muster \.+ reagiert.