Vorbemerkungen
Ich möchte heute hier eine neue Artikelserie rund um die Erstellung/Programmierung von Contenido-Plugins beginnen. Das Pluginkonzept bei Contenido ist für funktionale Erweiterungen des Contenido Backends gedacht. Dabei ist es möglich eigene Plugins in die Menüstruktur des Backends einzubinden, so wie ich es bereits bei meinem Jobvermittlungs-Plugin gemacht habe.
Contenido selbst liefert in der aktuellen Version 4.8.11 bereits einige Plugins mit. Leider wird von den Contenido-Entwicklern das Konzept nicht wirklich konsequent gehandhabt, ich möchte sogar sagen verwässert. Doch dazu später noch mehr.
Folgende Plugins werden von Contenido mitgeliefert, das heißt sie sind entweder fester Bestandteil oder können im Setup zur Installation ausgewählt werden.
- Chains, nutzen die CEC-Schnittstelle von Contenido ( Contenido Extension Chainer).
- FrontendLogic
- Frontendusers
- Repository (nicht ganz das, was man unter diesem Namen erwartet)
- Content Allocation
- Link Checker
- Workflow
Vorraussetzungen
Grundsätzlich reichen Kenntnisse in PHP und MySQL aus um ein eigenes Plugin zu schreiben. Ich denke aber man kommt nicht um die Themen „strukturierte Programmierung“ und „OOP“ herum. Tja und sehr hilfreich sind Kenntnisse der Datenbankstruktur von Contenido und der Contenido-API, welche man sich am besten aus den aktuellen Sourcen selbst generiert.
Unser erstes Plugin
Was soll’s denn werden?
Gern genommen wird ja immer das altbekannte „Hello World“, wozu es bereits eine Version im Contenido-Forum gibt. Ich persönlich finde es nicht so gut, da viele grundlegende Themen zum Pluginschreiben ausenvor bleiben. Daher habe ich mich dazu entschlossen hier ein Plugin für eine erweiterte Contenido Statistik in Angriff zu nehmen.
Was soll’s denn können?
Und somit kommen wir zum ersten interessanten Punkt, was soll unser Statistik-Plugin können und uns anzeigen?
- klinkt sich über eine Chain in den Aufruf der front_content.php ein und speichert Daten aus $_SERVER in der DB.
- bereitet diese Daten zur Anzeige im Backend auf und zeigt sie an, so zum Beispiel:
- Anzahl Besucher
- Anzahl Hits (gesamt und pro Seite)
- Referrer
- IP des Besuchers
- Besucherstatistik für verschiedene Zeiträume
- Monats- bzw. Jahreshistorie
- spätere Erweiterungen:
- robots ausnehmen bzw. getrennte Anzeige
- Besucher nach Region
- einstellbare IP-Sperre
- Emailbenachrichtigungen
- grafische Ausgaben
- Options-Bereich
Wer WordPress kennt, sollte auch SemmelStatz kennen, ein einfaches aber gutes Statistik-Plugin für WP, welches ich nur empfehlen kann. So in etwa soll auch unser Plugin die Daten zur Verfügung stellen.
Wie sieht unsere Ordnerstruktur aus?
Nun ich habe mir da so meine eigene Ordnerstruktur zurechtgelegt, die ich durchgängig als Grundlage meiner Plugins verwende. Selbstverständlich steht es jedem frei seine eigene Struktur zu erstellen, manchmal würde ich mir aber wünschen, das es da eine Vorgabe für Contenido-Plugins gäbe, aber auch hier sind sich die Entwickler offensichtlich nicht immer einig gewesen und haben diese Struktur verwässern lassen.
Nun gut, wie es auch sei, hier meine Struktur, die ich unserem Plugin zugrunde legen werde. Auch nicht benötigte Ordner werde ich mit aufführen.
- dceExtStat (root des Plugins)
- ajax
- classes
- docs
- includes
- libs
- locale
- de_DE
- LC_MESSAGES
- en_US
- LC_MESSAGES
- de_DE
- scripts
- templates
- standard
- css
- images
- js
- standard
- xml
Was sind den Coding Conventions (CC)?
Entwickelt man im Team oder möchte man das auch die Nachwelt mit dem Quelltext noch was anfangen können soll, ist es eine gute Idee sich eine Vorgabe, den sogenannten Coding Conventions (Wikipedia de: Programmierstil) zu unterwerfen. Auch für Contenido gibt es diese CC, welche ich ebenfalls in einer von mir erweiterten Form als Grundlage nehmen möchte ( Artikel folgt noch).
Schöne Aussichten… (wie es weiter geht)
im nächsten Teil werde ich mich mit dem Grundlegenden Aufbau des Contenido Backends und den, für unser Plugin, benötigten DB-Tabellen beschäftigen, so dass am Ende des Teils ein funktionierendes Grundgerüst für unser Plugin vorhanden ist.
Contenido Plugin(s): Backend Frames (es muss Alles im Rahmen bleiben)
Contenido Plugin(s) entwickeln (Teil 2: Das Grundgerüst)
Achja, Fragen und Anregungen sind natürlich immer willkommen 😉
Hallo Peter,
sorry, aber momentan hab ich da keine Zeit für, da ich für Contenido einen Pluginmanager entwickle. Dieser ändert dann auch in manchen Bereichen den Umgang mit Plugins, und daher habe ich diese Artikelserie erst einmal hinten angestellt.
Es gibt aber im Forum ein „Hello World“-Plugin, durch welches wohl fast Jeder den Umgang mit Plugins in Contenido gelernt hat. Einfach mal im Forum stöbern.
Gruß Ortwin
Hi Ortwin,
Karsten Klopmann hatich auf deine Seite aufmerksam gemacht. Wäre es möglich den source vom plugin zu bekommen .. ich muss nähmlich was basteln un bekomm das nicht gebacken da die doku von contenido echt beschnitten ist sag ich mal..
lg
Ich bin gespannt wie es weiter geht 🙂
Hallo OliverL,
der Ordner „js“ im Template ist für templatespezifische Scripte gedacht. So hat man eine Trennung zwischen vom Plugin benötigten Scripten (scripts) und vom Designer für das Outfit gewünschten Scripten (templates/standard/js).
Gruß Ortwin
Warum gibt es unter templates den Ordner „js“ ? „Js“ kommt doch in deinen Ordner „scripts“ oder?
mfg OliverL