Wie arbeitet man mit den Systemen? Wo unterscheiden sie sich? Gibt es Präferenzen für WordPress oder Joomla? Es geht hier um den Umgang mit beiden Systemen, ohne auf die Darstellungsmöglichkeiten einzugehen.
Inhalte erstellen
Der größte Unterschied zwischen WordPress und Joomla! zeigt sich in der Art, wie Artikel erstellt werden. Daher dieses Thema zuerst!
TinyMCE
Im klassischen Editor (TinyMCE) gibt man bei WordPress zunächst den Titel des Artikels ein. Daraus generiert WordPress beim ersten Speichern die URL (Permalink genannt) des Artikels. Diese lässt sich später noch einmal editieren. Anschließend gibt man den Text mit den angebotenen Möglichkeiten zur Formatierung ein. Medien lassen sich an der aktuellen Cursorposition über eine Schaltfläche einfügen.
Dem Artikel können noch verschiedene Informationen zugeordnet werden, z.B. eine Kategorie, Schlagworte, Feeds, ein anderer Autor und weiteres. Auch wenn man den TinyMCE so konfigurieren kann, dass er den Artikel sehr ähnlich zur endgültigen Ansicht darstellt, möchte man vor der Veröffentlichung gerne das Endergebnis sehen. Für diesem Aufruf wird eine Schaltfläche angeboten. Sie ruft die Seite mit der internen URL auf.
Joomla! nutzt auch den TinyMCE und die Erstellung des Artikels verläuft auch erst einmal ähnlich. Unbequem wird es erst kurz vor der Veröffentlichung. Ein Artikel kann nämlich erst gezeigt werden, wenn zwei Bedingungen erfüllt sind:
-
Schreibt man einen neuen Artikel, lässt er sich in der Vorschau nur ansehen, wenn der Status auf Veröffentlicht steht. Die Vorschau selbst wird in einer Lightbox angezeigt, also nicht über die volle Fensterfläche.
-
Außerdem lässt sich ein Beitrag nur aufrufen, wenn er mit einem Menü verbunden ist. Die Einstellungen zu den Menüpunkten haben häufig Vorrang vor den Einstellungen des Beitrags, manche Dinge lassen sich sogar nur bei den Menüpunkten einstellen (z.B. Styleklasse der Seite). Glücklicherweise kann man einen Menüpunkt unsichtbar machen und trotzdem die Vorschau aufrufen:
Tipp: Möchte man nicht, dass der Menüpunkt im Menü erscheint, kann man ihn unten auf der Registerkarte Linktyp unsichtbar setzen, indem man Im Menü anzeigen auf Nein setzt.
Tipp: Setzt man die Zugriffsebene auf registered, kann man den Beitrag nur sehen, wenn man im Frontend angemeldet ist. Dann lässt sich der Beitrag auch direkt im Frontside-Editor bearbeiten. Der Vorteil des Frontsite-Editors besteht darin, dass er im Bildaufbau schneller ist. (Gerade für kleine Fehlerkorrekturen nützlich!) Man hat die gleichen Formatierungsmöglichkeiten wie im TinyMCE. Aus Sicherheitsgründen sollte man dies aber nur bei einer lokalen Installation machen.
Tipp: Setzt man Globale Konfiguration → System → Gemeinsame Sitzungen auf Ja, muss man sich nicht 2x einloggen.
Fazit: die Abläufe bei der Erstellung von Artikeln sind zwischen Joomla! und WordPress mit klassischen Themes einerseits relativ ähnlich, von den Arbeitsabläufen her ist WordPress aber etwas einfacher.
Block-Editor
Die Arbeit mit dem TinyMCE ähnelt dem Umgang mit einem Textverarbeitungssystem. Der Blockeditor Gutenberg von WordPress erinnert ein wenig an Desktop-Publishing. Von der Normung der Stylesheets her wird dies durch eine Erweiterung um Container-Elemente wie Flex und Grid bereitgestellt, mit denen man die Anordnung der Unterelemente steuert.
Etwas nervig ist, dass Überschriften separate Blöcke sind. Das erschwert das Bearbeiten der Texte und macht nachträgliche Zwischenüberschriften umständlich. Mit einem Plugin lässt sich ein Classic-Block nachinstallieren. Innerhalb dieses Blocks kann man wie im TinyMCE arbeiten. Bei Bedarf lässt sich dieser Block in normale Blöcke umwandeln. Zurück geht es dann allerdings nicht mehr!
Erwähnt werden sollte auch, dass das Starten und Beenden des Block-Editors deutlich (!) mehr Zeit in Anspruch nimmt, was besonders bei kleinen Korrekturen an den Nerven zehrt.
Ein echter Mehrwert ist die einblendbare Baumdarstellung des Seiteninhalts, innerhalb derer die Knoten beliebig umgehängt werden können. Auch der Typ eines Knotens lässt sich ändern. Weiterhiin man kann Gruppen von Elementen bilden.
Grundsätzlich bietet der Block-Editor viele Möglichkeiten. Das Problem ist eher, wie man sich (oder die Autoren) einschränken kann, so dass die ganze Seite einen einheitlichen Eindruck behält.
Trotz der vielen interaktiven Möglichkeiten treten auch beim Block-Editor Situationen ein, in denen man in den HTML-Quelltext gehen muss. Aber eher seltener als im klassischen Editor.
Mediendateien
Bei Joomla! ist es sehr übersichtlich: es gibt einen Ordner images, in den standardmäßig Bilder geladen werden. Darin lassen sich weitere Unterordner anlegen. Für den Rest ist der Seitenbetreiber verantwortlich. Eine Bilder-Verwaltung in der Datenbank gibt es nicht. Beschriftungen und anderes, wie alt-Attribute werden beim Einfügen im Inhalts-Datenfeld des Artikels gespeichert.
Bei netzalben.de folgt die Ordnerstruktur für Medien der Kategorienstruktur. Wenn ein Artikel viele Bilder hat, gibt es einen eigenen Ordner, sonst wird bei der Kategorie gespeichert.
Bei WordPress stehen alle Dateien, deren Laden der Nutzer (Administrator) veranlasst hat im Ordner wp-content. Innerhalb davon stehen Medien unter uploads. Es lässt sich konfigurieren, ob es monatliche Unterordner geben soll. Zu jeder hochgeladenen Datei erzeugt WordPress auch einen Datenbankeintrag. Leider wird diese Funktionalität in den letzten Jahren vernachlässigt. So werden beim Hochladen gemachte Eingaben im TinyMCE noch verwendet, der Block-Editor greift darauf nicht zu, man muss sie erneut eingeben. Oder man tut es von vorne herein erst dort.
Installation
Webhosting
Egal für welches System man sich entscheidet, man sollte sich auf jeden Fall für ein Webhosting entscheiden, das die Dateien und nicht nur die Datenbank auf SSDs speichert. Von den CMS werden unzählige Dateien geladen. Wenn diese auf einer HDD gespeichert sind, benötigt jede eine Zugriffszeit von ca. 8 ms. Dadurch vergeht bis zur Serverantwort eine Menge Zeit. SSDs benötigen ca. ein Hundertstel davon.
Für den gebuchten Webspace bekommt man vom Hoster die Zugangsdaten. Viele bieten direkt die Installation von WordPress oder Joomla! darauf an. Man kann es aber auch analog zur lokalen Installation selbst machen.
Lokaler Server
Sinnvoll ist auch eine parallele Installation auf einem lokalen Rechner. Ich entwickelte bis zur Version 6 von Joomal! lokal auf Windows mit XAMPP in der portablen Version. Als Vorteile empfand ich
-
unter Windows wird der Webserver nur gestartet, wenn er benötigt wird, im Gegensatz zu Linux, wo er durchläuft. Wenn ich den Rechner anders nutze, wird keine Ressource belegt.
-
XAMPP unter Windows ist fast schon gebrauchsfertig konfiguriert. In der Datei php.ini müssen nur noch einige Pakete durch Entfernen des Kommentars aktiviert werden. Das wird in beiden Systemen für den Umgang mit Bildern benötigt.
-
von der portablen Version wird nichts in die Windows-Registry geschrieben. Damit wird eine Verlangsamung des Rechners vermieden. Weiterhin kann man leicht mehrere Versionen von XAMPP speichern und durch Umbenennung zur aktuellen machen.
XAMPP muss auf der 1. Ebene des Laufwerks stehen, also C:\xampp oder D:\xampp. Vor der Installation muss man das Installationspaket herunterladen und an geeigneter Stelle entpacken. Beim ersten Start können die Sprache der Benutzeroberfläche und die automatisch zu startenden Programme festgelegt werden.
In der Benutzeroberfläche findet sich in der Datenbankzeile eine Schaltfläche zur Administrierung. Diese öffnet im Browser die Anwendung phpMyAdmin. Damit muss eine Datenbank für das CMS angelegt werden. Diesen Schritt findest du aber bereits in der Installationsanleitung des CMS, das du installieren willst.
Das CMS sollte man sich als Zip-Datei herunterladen und in den Ordner \xampp\htdocs entpacken. WordPress steht dann z.B. in \xampp\htdocs\wordpress. Die lokale URL zu WordPress ist dabei localhost/wordpress. Für WordPress gibt es die sogenannte 5-Minuten-Installation. Mit dieser Anleitung lässt sich eine lokale Installation gut durchführen.
Bei Joomla! funktioniert es sehr ähnlich. Zur Installation gibt es eine Anleitung. Es werden Daten zur Installation abgefragt, die Datenbank angelegt und eine Konfigurationsdatei geschrieben.
Man erhält mit den Anleitungen ein erstes System, das für die eigenen Vorstellungen weiter konfiguriert und erweitert werden muss.
Warum bin ich nicht bei XAMPP geblieben? Joomla! benötigt ab Version 6 eine höhere PHP-Version, als XAMPP enthält. Ich habe mir daher unter Linux einen LAMP-Server eingerichtet.
Sprache
Wenn du eine deutschsprachige Website mit WordPress aufbauen willst, ist es am einfachsten, direkt die entsprechenden Installationsdatei zu verwenden. Man kann aber auch nachträglich die Sprache im Bereich der allgemeinen Einstellungen ändern. Es erfolgt dann ein Update der Sprache im Hintergrund.
Die Grundinstallation von Joomla! ist ein englischsprachiges System. Sind die Inhalte der Webseite in einer anderen Sprache geplant, sollte man diese zunächst nachinstallieren. Dazu geht man auf die Seite System und dort im Block Verwalten auf Sprachen. Wenn die gewünschte Sprache noch nicht in der Liste steht, gibt es oben eine Schaltfläche Sprachen installieren, über die genau das getan werden kann.
Im Block Verwalten gibt es auch den Punkt Inhaltssprachen. Das ist hauptsächlich für mehrsprachige Inhalte interessant oder wenn die Verwaltung der Site in einer anderen Sprache als die Inhalte erfolgen soll.
Grundeinstellungen
Dass man den Namen der Site oder der Organisation irgendwo einträgt und evtl. ein Logo hochlädt, sollte selbstverständlich sein. Format von Datum und Uhrzeit? Sollte sich doch an der Sprache orientieren. Na ja, dann gibt es immer noch Varianten.
Eine wichtige Einstellung betrifft die URLs. WordPress nennt das Permalinks und ist auch so als Unterpunkt der Einstellungen zu finden. Joomla! nennt es Suchmaschinen-freundliche URL und ist im unteren Teil der Startseite der Konfiguration, die man aus dem Dashboard oder von der Seite System aus erreicht. Es geht darum, dass die Seiten leicht verständliche Adressen bekommen, statt kryptischer interner Bezeichnungen.
Bei WordPress kann man einfach alle Unterpunkte der Einstellungen durchgehen. Dann hat man erst einmal alles, was einstellbar ist, erledigt. Bei klassischen Themes gibt es noch den Customizer, in dem dann je nach Theme weitere Angaben möglich sind.
Joomla! bietet eine Fülle von Einstellmöglichkeit. Nach den obigen Grundeinstellungen kann man erst einmal alles so lassen, wie es ist. Wenn man später mit dem System arbeitet und mit einem neuen Bereich beginnt, kann man sich dann auf die dazu passenden Parameter konzentrieren.
Erweiterungen
Bei WordPress wird das System mit Plugins und Themes an die Bedürfnisse angepasst. In der Navigationsspalte gibt dazu es die Menüpunkte Plugins und Design. Wenn man Plugins anwählt, steht oben im rechten Arbeitsbereich die Schaltfläche Neues Plugin hinzufügen. Diese aktiviert eine Auswahl-Seite, die direkt von WordPress versorgt wird. Sinngemäß funktioniert es auch beim Menüpunkt Design.
Bei Joomla! gibt es ebenfalls eine zentrale Seite für Erweiterungen, von der auch aus dem laufenden System heraus installiert werden kann. Erweiterungen sind sowohl Templates als auch Plugins. Darüber hinaus gibt es noch Module und Komponenten, und es gibt Erweiterungen, die von allem etwas enthalten. Nur kurz: Module sind so etwas wie im klassischen WordPress die Widgets, die es meines Wissens im Blockeditor nicht mehr gibt, bzw. durch spezielle Blöcke ersetzt wurden. Komponenten sind eigenständige Hauptanteile einer Seite, die würden in WordPress vielleicht am ehesten als Template bezeichnet.
Ein Vergleich der Systeme, der die Anzahl verfügbarer Plugins gegenüberstellt, besagt weder etwas über deren Qualität, noch über den Funktionsumfang der kostenlosen Versionen. Grundsätzlich lässt sich sagen, dass WordPress zwar mehr Erweiterungen anbietet, aber auch mehr davon benötigt. Daher erwähne ich in den folgenden Kapiteln einige von denen, die ich nutze.
System absichern
Es gibt für jedes System etliche Seiten mit Empfehlungen. Hier noch für den Fall, dass es dort nicht dabei war:
WordPress: nach dem Anlegen weiterer Benutzer einen weiteren Administrator anlegen und den ursprünglichen Administrator löschen! Hacker versuchen über den Benutzer mit der ID=1 das System zu kapern. Das Plugin Login Lockdown sperrt IP-Adressen, die sich mehrfach erfolglos am Einloggen versucht haben für eine gewisse Zeit.
Joomla: hier vergibt das System für den ersten Nutzer eine höhere ID. Für Version 3 gab es ein vergleichbares Plugin, das ist aber mit Version 5 nicht mehr kompatibel. Vielleicht ist die 2-Faktor-Authorisierung eine Alternative?
Nutzer verwalten
In beiden Systemen wird mit der Installation erst einmal ein Nutzer angelegt, der alle Administrationsrechte hat. Neue Nutzer können vom Administrator hinzugefügt werden. Alternativ lassen sich die Systeme so konfigurieren, dass neue Nutzer sich selbst registrieren können.
Es ist häufig zu lesen, dass in Joomla! die Vergabe der Nutzerrechte zielgerichteter erfolgen kann als in WordPress. Das stimmt für das Grundsystem, aber häufig erhält WordPress mittels Plugins fehlende Funktionalität nachgeliefert. So auch hier: PublishPress Capabilities gibt es in einer freien und einer kostenpflichtigen Variante. Letztere habe ich noch nicht benötigt.
Datenspeicher
Durch den Aufruf einer URL wird entweder eine Datei des Webspaces direkt adressiert, z.B. ein Bild oder ein Stylesheet, oder eine Seite wird angefragt. Bei Webseiten mit CMS wird dieses gestartet und baut anhand der eingestellten Logik, den vorhandenen Dateien und den entsprechenden Datenbankinhalten eine HTML-Datei auf, die es an den Browser zurückgeliefert.
In beiden Systemen WordPress und Joomla! liegen die Dateien des CMS im Basisverzeichnis des Webspaces. Das ist der Ordner, den der Webserver aus der URL ableitet, also z.B. www.netzalben.de oder localhost/joomla.
Dateisystem
Bei WordPress befinden sich neben den Dateien im Basisverzeichnis fast alle Dateien in den Ordnern
-
wp-admin -
wp-include -
wp-content
Die ersten beiden enthalten System- und Verwaltungsdateien. In wp-content gibt es Unterordner für Nutzerdateien bzw. durch den Nutzer / Administrator ergänzte Funktionalität.
Bei Joomla! gibt es an dieser Stelle keine Trennung zwischen Funktionen des Systems und Erweiterungen durch Anwender. Beispielsweise landet ein zusätzlich geladenes Plugin zusammen mit den vom System bereitgestellten Plugins im Ordner plugins.
Neben Plugins gibt es noch Module und Komponenten, Templates, Bilder und weitere Dinge, die im Dateisystem gespeichert werden. Jedes davon besteht in der Regel aus weiteren Ordnern und Dateien, z.B. erweitert eine neue Klasse die Methoden ihrer Basisklasse. Die neue Klasse hat dann auch eine neue eigene Datei.
Insgesamt dürfte eine Joomla! – Installation mehr Dateien als eine WordPress – Installation haben. Da sich das Schema der Unterdateien aber wiederholt, findet man sich dennoch gut darin zurecht.
Datenbank
Zur Installation wurde eine Datenbank angelegt. Wie unterscheiden sich deren Inhalte nach der Installation? Die Namen von Tabellen werden in der Folge ohne die Zeichen des Vorspanns genannt.
Bei WordPress finden sich nach der Installation weniger als 20 Tabellen, von denen einige auch nach einigen Beiträgen noch leer sind.
Die Tabelle Options enthält globale Einstellungen des Systems. Users und Comments sind selbsterklärend. Dazu gibt es jeweils noch Metadaten.
Alles, was mit den Inhalten der Website zu tun hat, landet in der Tabelle Posts. Auch der Eintrag, der zu einer hochgeladenen Mediendatei hinterlegt wird. Ein Feld in dem Datensatz zeigt jeweils an, um was es sich eigentlich handelt.
Für die Zugriffe auf die Datenbank mag das recht effektiv sein. Um sich in das System einzuarbeiten, z.B. für eine eigene Erweiterung, sind die Datenbank-Inhalte sehr unübersichtlich.
Joomla! legt bei der Installation ca. 80 Tabellen an, von denen aber auch nur ein Teil für Artikel genutzt wird. Man erkennt hier Wiederholungen, was bedeutet, dass man die unterschiedlichen Inhalte getrennt hat, auch wenn sie die gleiche Struktur aufweisen. Dies erleichtert das Nachvollziehen der Datenspeicherung und die Entwicklung eigener Erweiterungen mit Datenbankzugriff.
Daten sichern
In beiden Systemen gibt es bewährte Plugins zur Datensicherung.
Updraft Plus für WordPress arbeitet für meine Zwecke einwandfrei.
Akeeba Backup für Joomla! funktioniert auch sauber. Um auf den Funktionsumfang vom kostenlosen Updraft Plus zu kommen (regelmäßige automatische Updates; hochladen auf eigenen Webspeicher), muss man hier aber Geld ausgeben.
Darüber hinaus kann man eine manuelle Datensicherung über FTP mit jedem System machen. Bei WordPress könnte es reichen, sich auf wp-content zu beschränken, und die Systemdateien aus einer neuen Installation zu nehmen.
Ein Sichern der Datenbank kann aus deren Verwaltungsoberfläche z.B. phpmyAdmin erfolgen. Es ist darauf zu achten, dass die Datei klein genug bleibt, um wieder hergestellt werden zu können. Also notfalls Gruppen von Tabellen bilden!
Systemverhalten an eigene Vorstellungen anpassen
Wir sind jetzt an einem kritischen Punkt angekommen: du musst dich entscheiden, ob du das nimmst, was das System dir liefert oder ob das System dir liefern soll, was du gerne hättest. Bevor man loslegt, sollte man sich daher zunächst ein paar Frage in dieser Reihenfolge stellen:
-
Was soll mir das System liefern?
-
Kann mir das System liefern, was ich gerne hätte?
-
Schaffe ich es, das System so anzupassen, dass es das liefert, was ich gerne hätte?
Nach der ersten Installation hat man ein System, das die Entwickler gerne zeigen möchten. Man sollte im Hinterkopf haben, dass es für Software mit einer längeren Vergangenheit wichtig ist, bestehende Anwender weiter zufrieden zu stellen und ihre Investitionen in Inhalte, Themes, Erweiterungen usw. weiter zu unterstützen.
Für WordPress wird jährlich ein neues Theme entwickelt, das besonders die Neuentwicklungen zeigen soll. Wie bereits erwähnt hat der Blockeditor für etliche Kontroversen gesorgt. Langfristig versucht WordPress die Nutzer zu dem Blockeditor hinzubewegen. Braucht man eigentlich unterschiedliche Block-Themes, wenn man sich dazu alles zusammenklicken kann?
Man kann sich auf die Suche nach einem Theme machen, das den eigenen Vorstellungen nahe kommt und dies weiter anpassen. Oder man entwickelt sein eigenes Theme.
Die Entwickler von Joomla! liefern ein Template, das viele allgemein nützliche Aspekte zeigt, allerdings ist das Design eher etwas altmodisch am Desktop ausgerichtet. In der Konfiguration lassen sich Dinge, die nicht gezeigt werden sollen, abschalten. Oder es lässt sich wählen, an welcher Stelle eine Information gezeigt werden soll. Auch hier gilt: wenn man ein geeignetes Template findet, ist es gut, sonst muss man ein eigenes entwickeln.
Konfiguration
Nach den Grundeinstellungen und den Einstellungen zum gewählten Theme gibt es bei WordPress nichts mehr zu konfigurieren.
Anders bei Joomla. Wenn das Grundsystem etwas nicht so macht, wie man es sich vorgestellt hatte, bedeutet das noch nicht, dass Joomla! es nicht trotzdem liefern könnte. Hier hilft es nur, die Konfiguration aufzurufen und die Möglichkeiten durchzugehen. Leider ist nicht alles selbsterklärend.
Tipp: Zeitweilig habe ich eine lokale Version auf englisch betrieben, um für Recherchen an die passenden Fachbegriffe zu kommen.
Programmierung
Wenn man sich entschließt, eine eigenes Layout zu entwickeln, kommt man in der Regel nicht darum herum, auch in den PHP-Code einzugreifen.
Bei WordPress werden Funktionen registriert und mit einer Aktion oder einem Filter verknüpft. Das Aktivieren der Aktionen oder Filter ruft alle damit registrierten Funktionen auf. Die Reihenfolge ist steuerbar.
Es lassen sich aber auch Aktionen löschen. So sind manche Systemfunktionen als Aktion registriert. Man kann sie z.B. deaktivieren und durch eigene Logik ersetzen. Filter dienen in der Regel zur Aufbereitung von Texten. Mit Filterfunktionen kann man Ergebnisse weiter manipulieren oder komplett ersetzen.
Filter und Aktionen werden über Hooks, also Aktivierungspunkte, mit dem System verbunden. Die Herausforderung besteht darin, die passenden Hooks zu finden. Häufig hilft Handbuch lesen und Quelltext nachverfolgen.
In der Praxis würde ich behaupten, dass man spätestens nach 3 – 4 Suchanfragen zu jedem Problem eine Lösungsidee findet.
Wenn man mit einem eigenen Theme arbeitet, lässt diese Vorgehensweise Updates des Systems zu, ohne dass es die Nutzerfunktionen tangiert.
Ob man eigene Funktionalität im Theme oder mittels Plugin implementiert, ist in klassischen Themes im Prinzip egal. Eine Ergänzung im Theme ist deutlich einfacher und erfolgt häufig in der Datei functions.php. Mit Übergang zu den Block-Themes drängte WordPress immer mehr dazu, eigene Funktionalität als Plugin zu implementieren. Wenn die Erweiterung in einem einfachen Filter besteht, ist der Aufwand nur geringfügig höher. Kommt Interaktion dazu, sieht es anders aus. Der Vorteil ist natürlich, dass die Erweiterung dann unabhängig von einem bestimmten Theme genutzt werden kann.
Dadurch, dass WordPress mit Funktionen und Hooks arbeitet, kann alles in einer Datei stehen, deren Name dem Namen des Ordners und des Plugins entspricht. Über einen Kommentar-Bereich zu Beginn der Datei werden dem System alle notwendigen Informationen mitgeteilt. Bei komplexeren Erweiterungen kann eine beliebige Aufteilung in weitere Dateien erfolgen.
Joomla! arbeitet Templates mit Overrides. Das funktioniert so, dass in der Standard-Installation genau der Pfad festgelegt ist, wo welche Funktionalität gespeichert ist. Wenn diese nicht so konfigurierbar ist, dass sie das gewünschte Ergebnis liefert, kann eine Kopie davon an einem bestimmten Platz im Template abgelegt werden, um die Funktionalität den Wünschen anzupassen. Bei Updates in den betroffenen Systemdateien wird man auf die Änderungen hingewiesen und kann in einem Editorfenster die neue Override-Datei zusammenstellen.
Es bietet sich an, eine lokale Kopie der Website zu betreiben, in der Updates und Änderungen zunächst durchgespielt werden, um mögliche Problemstellen im Voraus zu erkennen.
Es gibt detaillierte Anleitungen und Beispiele zum Programmieren von Modulen und Plugins. Vielleicht ist es zunächst abschreckend, dass immer eine Handvoll Dateien zu erstellen ist. In der Praxis handelt es sich häufig um Erweiterungen bestehender Klassen, für die ein Grundgerüst kopiert werden kann und in denen nur wenige Änderungen nötig sind. Aber man muss sich in dieses Schema erst einmal einarbeiten!
Während die Dokumentation im Bereich manual.joomla.org aktuell und sehr gut nachvollziehbar ist, landet man mit Suchmaschinen häufig noch im Bereich docs.joomla.org, wo die Information sich auf ältere Versionen von Joomla! bezieht und zum Teil überholt ist. Dennoch kann es interessant sein, die Sichtweise der Macher von Joomla! auf Grundprinzipien wie das MVC-Entwurfsmuster in der alten und neuen Version zu lesen.