Foren- und Community-Software erweitern
Von den vBulletin-Add-ons der 2000er über phpBB-Extensions und Discourse-Plugins bis zu Discord-Apps: wie sich Community-Software erweitern lässt.
Foren waren lange das Zentrum von Online-Communitys, und mit ihnen entstand eine eigene Szene von Add-on-Entwicklern. Die Adresse addon-coders.de stammt aus genau dieser Zeit: Ab 2007 erschienen hier kleine Erweiterungen für vBulletin. Heute verteilt sich das Gespräch auf moderne Forensysteme, Chat-Plattformen und soziale Netzwerke. Die Grundidee ist geblieben: Eine Community-Software bringt den Kern mit, Erweiterungen liefern das, was die eigene Gemeinschaft zusätzlich braucht.
Die Ära der Forum-Hacks
In den frühen 2000er-Jahren bedeutete eine Erweiterung oft, Dateien der Forensoftware von Hand zu ändern. Anleitungen beschrieben Zeile für Zeile, wo welcher Code eingefügt werden musste. Das funktionierte, hatte aber einen hohen Preis: Jedes Update der Forensoftware überschrieb die Änderungen, und wer mehrere solcher Hacks installiert hatte, verbrachte nach jedem Sicherheitsupdate Stunden damit, sie neu einzupflegen.
Kommerzielle Systeme wie vBulletin führten deshalb ein Plugin-System ein. Erweiterungen wurden als Produkte installiert, deren Code an definierten Hook-Stellen ausgeführt wurde, ergänzt um eigene Templates und Einstellungen. Große Community-Seiten sammelten solche Modifikationen und boten Bewertungen und Support-Threads. Viele Add-ons brachten einen kleinen Hinweis auf ihren Entwickler im Footer des Forums mit. Diese Credits sind der Grund, warum alte Add-on-Seiten bis heute auffällig viele Links aus Foren besitzen.
phpBB-Extensions
phpBB ist eine der bekanntesten freien Forensoftwares. Mit Version 3.1 kam ein Extension-System, das die frühere Praxis der Datei-Mods ablöste. Eine Extension liegt in einem eigenen Ordner unter ext/hersteller/name/ und besteht typischerweise aus:
composer.jsonmit Name, Version, Lizenz und Abhängigkeiten,ext.phpfür Aktionen beim Aktivieren und Deaktivieren,config/services.yml, um eigene Klassen im Service-Container anzumelden,- Event-Listenern, die sich auf Ereignisse des Forums registrieren,
- Migrationen, die Datenbanktabellen, Konfigurationswerte und Berechtigungen anlegen oder entfernen.
phpBB baut dabei auf Komponenten des Symfony-Frameworks auf. Wer Symfony kennt, erkennt Service-Container und Event-Dispatcher wieder.
Discourse: Plugins und Theme-Komponenten
Discourse ist eine moderne Diskussionsplattform auf Basis von Ruby on Rails im Backend und Ember.js im Frontend. Erweiterungen gibt es in zwei Formen:
| Plugin | Theme-Komponente | |
|---|---|---|
| Sprache | Ruby (Server), JavaScript (Client) | JavaScript, Templates, SCSS |
| Installation | beim Aufsetzen oder Neubauen der Instanz | im Admin-Bereich per Klick |
| Darf | Datenbank, Server-Logik, API erweitern | Oberfläche und Darstellung ändern |
| Typisch für | neue Funktionen, Integrationen | Layout-Anpassungen, kleine UI-Helfer |
Die Regel lautet: Was sich mit einer Theme-Komponente lösen lässt, sollte auch so gelöst werden. Sie ist einfacher zu installieren, zu aktualisieren und zu entfernen.
Discord-Apps
Viele Communitys treffen sich heute auf Discord. Erweiterungen entstehen dort als Apps über das Discord Developer Portal. Eine App kann einen Bot-Benutzer mitbringen, der Nachrichten liest und schreibt, sie arbeitet aber zunehmend über Interaktionen: Slash-Befehle, Schaltflächen, Auswahlmenüs und Kontextmenüs. Interaktionen haben den Vorteil, dass die App nicht jede Nachricht mitlesen muss. Für das Lesen von Nachrichteninhalten verlangt Discord ab einer gewissen Verbreitung eine besondere Freigabe.
Das Bot-Token gewährt vollen Zugriff auf die App. Es gehört nie in ein öffentliches Repository und nie in Client-Code. Wurde es versehentlich veröffentlicht, setzen Sie es im Developer Portal sofort neu.
Was alle Systeme gemeinsam haben
So unterschiedlich die Plattformen sind, die Lehren aus der Ära der Forum-Hacks gelten überall:
- Nie den Kern ändern. Erweiterungen nutzen die offiziellen Andockstellen. Dann überleben sie Updates.
- Datenbankänderungen versionieren. Migrationen legen Tabellen an und räumen sie beim Deinstallieren wieder ab.
- Rechte respektieren. Moderations- und Administrationsfunktionen prüfen die Berechtigungen der jeweiligen Person.
- Keine Pflicht-Credits. Werbe- oder Herstellerlinks im öffentlichen Bereich nur, wenn Betreiber sie ausdrücklich zulassen. Viele Verzeichnisse verbieten versteckte Links.
Eine phpBB-Extension in der Praxis
Wie das Zusammenspiel aussieht, zeigt ein kleiner Event-Listener. Er meldet sich für ein Ereignis an, das phpBB beim Aufbau jeder Seite auslöst, und reicht eine Variable an die Templates weiter. Der Listener wird in der services.yml mit dem Tag event.listener registriert.
<?php
namespace beispiel\hinweis\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return ['core.page_header' => 'hinweis_setzen'];
}
public function hinweis_setzen($event)
{
// Hier würde die Extension z. B. einen Hinweistext an das Template übergeben.
}
}
Der eigentliche Hinweis erscheint dann über ein Template-Event in der Oberfläche, ohne dass eine Datei des Forums verändert wurde. Wird die Extension deaktiviert, verschwindet er wieder.
Updates und Kompatibilität
Community-Software erhält regelmäßig Sicherheitsupdates, und Forenbetreiber spielen sie zu Recht schnell ein. Für Entwickler heißt das: Eine Erweiterung muss Updates der Plattform überstehen. Hilfreich ist, sich nur auf dokumentierte Events, Services und Template-Stellen zu verlassen, in der Beschreibung genau anzugeben, mit welchen Versionen die Erweiterung getestet wurde, und Änderungen an der Datenbank ausschließlich über Migrationen vorzunehmen. Dann lässt sich auch eine ältere Erweiterung nach einem Plattformupdate meist mit wenigen Anpassungen weiterbetreiben.
Andere Systeme
Neben den genannten gibt es zahlreiche weitere Community-Plattformen mit eigenem Erweiterungsmodell, etwa XenForo mit Add-ons in PHP, MyBB mit klassischen Plugins oder Flarum mit Extensions auf Basis von Composer. Die Konzepte ähneln sich: ein Manifest, Ereignisse oder Hooks, Templates und Migrationen. Wer eines dieser Systeme verstanden hat, findet sich in den anderen schnell zurecht. Für die Grundlagen von PHP und Composer lohnt ein Blick in die Programmiergrundlagen, für die Nähe zu WordPress in den Bereich WordPress-Plugins.
Anleitungen zu Foren & Communitys
- phpBB-Extension entwickeln
Ordnerstruktur, composer.json, Event-Listener, Template-Events und Migrationen: wie eine phpBB-Extension aufgebaut ist und wie Sie sie sauber aktivieren, testen und entfernen.
- Discourse-Plugins und Komponenten
Plugin oder Theme-Komponente? Wie sich die beiden Erweiterungsarten von Discourse unterscheiden, wie sie aufgebaut sind, wer sie installieren darf und was bei Updates zu beachten ist.
- Discord-App oder Bot
App ist der Oberbegriff, der Bot nur eine Form davon: wie Discord-Erweiterungen mit Slash-Befehlen, Schaltflächen und Intents arbeiten und worauf Sie bei Rechten und Tokens achten.
- Geschichte der Foren-Add-ons
Wie Foren-Erweiterungen vom Code-Hack zum Plugin-System wurden, warum Footer-Credits so verbreitet waren und welche Lehren moderne Plugin-Systeme daraus gezogen haben.
Fragen und Antworten
- Was ist der Unterschied zwischen einem Mod und einer Extension bei phpBB?
- Bis phpBB 3.0 wurden Erweiterungen als Mods eingebaut: Man änderte nach einer Anleitung direkt Dateien des Forums. Seit phpBB 3.1 gibt es ein Extension-System, bei dem Erweiterungen in einem eigenen Ordner liegen und sich über Events einklinken. Sie lassen sich im Administrationsbereich aktivieren und deaktivieren, ohne Kerndateien zu verändern.
- Brauche ich für ein Discourse-Plugin Ruby-Kenntnisse?
- Für Funktionen auf dem Server ja, denn Discourse basiert auf Ruby on Rails. Viele Anpassungen der Oberfläche lassen sich aber als Theme-Komponente umsetzen, die nur aus JavaScript, Templates und CSS besteht. Theme-Komponenten installieren Administratoren direkt im Admin-Bereich, Plugins dagegen beim Aufsetzen der Installation.
- Ist ein Discord-Bot dasselbe wie eine Discord-App?
- Nicht ganz. App ist der Oberbegriff für alles, was über die Discord-Entwicklerplattform entsteht. Ein Bot-Benutzer ist eine Möglichkeit, wie eine App auftritt. Viele Apps arbeiten heute vor allem mit Interaktionen wie Slash-Befehlen, Schaltflächen und Kontextmenüs.
Weiterlesen
- WordPress-Plugins
Vom Plugin-Header über Actions und Filter bis zu Gutenberg-Blöcken: wie ein sauberes WordPress-Plugin aufgebaut ist und worauf das Plugin-Verzeichnis achtet.
- Sicherheit
Welche Berechtigungen heikel sind, woran Sie bösartige Erweiterungen erkennen, warum Updates und Übernahmen ein Risiko sind und was im Ernstfall zu tun ist.