Eine Erweiterung für Joomla erstellen

Website mit FOSS Liste

Website mit FOSS Liste

Nach den Artikeln über die Erstellung eines Moduls Drupal 8 und eines Plugins in WordPress 4.6 will ich in diesem Artikel beschreiben, wie man eine Joomla Komponente schreibt. Beim Drupal 8 Modul hatte ich das Tool Drupal Console genutzt, um mir die Erstellung der vielen Dateien zu erleichtern. Bei WordPress habe ich nur die Website, bzw. einen Text Editor genutzt. In beiden Fällen ist die eigentliche Programmierung nicht schwer, Drupal 8 verlangt allerdings erheblich mehr Strukturierung als WordPress und ist daher am Anfang schwerer zu durchschauen.
Joomla liegt hinsichtlich der Komplexität der Erstellung von Erweiterungen etwa in der Mitte zwischen Drupal und WordPress. Es ist mittlerweile sehr gut strukturiert, aber immer noch einfach zu verstehen. Seit der Version 1.5 sind Joomla Komponenten nach dem Model View Controller Konzept aufgebaut. Joomla eignet sich daher sehr gut für die individuelle Entwicklung, weil das MVC Konzept wirklich sehr weit verbreitet und recht einfach zu verstehen ist.

In Drupal heißen alle Erweiterungen Module, in WordPress heißen sie Plugins. In Joomla gibt es drei Sorten von Erweiterungen: Module, Plugins und Komponenten.

  • Module sind die Teile einer Website, die um den eigentlichen Inhalt herum positioniert werden (in Drupal vergleichbar mit Blöcken, in WordPress mit Widgets).
  • Plugins sind Erweiterungen, die keine Ausgabe auf der Website erzeugen. Sie können beispielsweise den Inhalt nach etwas filtern oder einen WYSYWYG Editor bereitstellen.
  • Komponenten sind Erweiterungen die den Hauptinhalt einer Webseite ausgeben. Pro Seitenaufruf kann in Joomla eine Komponente aufgerufen werden.

Über die Jahre sind viele Anleitungen für die Erstellung einer Komponente in all ihren Facetten entstanden. ich möchte hier auf die offizielle Documentation verweisen (Developing an MVC Component/Developing a Basic Component). Um eine „Hello World“ Komponente zu schreiben benötigt man mehrere Dateien, hier ein Beispiel:

  • helloworld.xml Die Beschreibungsdatei im XML Format in der beschrieben ist, wie Joomla diese Kompoente installieren soll.
  • site/helloworld.php Der Eingang (Router) zur eigentlichen Hello World Komponente für die Besucher und registrierten Benutzer.
  • site/index.html Datei für den Webserver um kein Inhaltsverzeichnis anzuzeigen (muss in jedem Joomla Unterverzeichnis liegen).
  • admin/index.html Datei für den Webserver um kein Inhaltsverzeichnis anzuzeigen
  • admin/helloworld.php Der Eingang (Router) zur eigentlichen Hello World Komponente für die Administratoren der Website.
  • admin/sql/index.html Datei für den Webserver um kein Inhaltsverzeichnis anzuzeigen
  • admin/sql/updates/index.html Datei für den Webserver um kein Inhaltsverzeichnis anzuzeigen
  • admin/sql/updates/mysql/index.html Datei für den Webserver um kein Inhaltsverzeichnis anzuzeigen
  • admin/sql/updates/mysql/0.0.1.sql Datei in der die Datenbankbeschreibung der Komponente steht (nicht nötig für das Hello World Beispiel).

Außer diesen waren je nach Anwendungszweck weitere Dateien für die Ausgabe Templates, die Datenbank Modelle, die Controller, die Benutzerberechtigungen, die Update Funktionalität und vieles andere mehr benötigt. Am Ende ist man schnell bei dutzenden Dateien und verliert als Anfänger schon mal die Übersicht.

Daher möchte ich in diesem Artikel den Service component-creator.com benutzen um eine Komponente zu beschreiben und automatisiert erstellen zu lassen.

Component Creator

Der Service component-creator.com bietet die Möglichkeit, eine beliebige Anzahl von einfachen Komponenten kostenlos zu erstellen. Wenn die Aufgaben komplexer werden, musst du für die Nutzung bezahlen. Grundsätzlich geht es bei Joomla Komponenten meistens um Daten, die in einem Formular eingegeben, abgespeichert, verändert, ausgegeben, mit Zugriffsberechtigungen versehen und vielleicht auch wieder gelöscht werden. In Drupal ist das am ehesten mit Inhaltstypen und Views zu vergleichen, in WordPress auch am ehesten mit Post Types. Du musst dich auf der Component Creator Website registrieren und kannst dir dann die gewünschte Komponente zusammenstellen und herunterladen. Der Download enthält alle Dateien einer installierbaren Komponente, die du manuell anpassen kannst.

Beispiel: Ein Sammlung von Open Source Projekten

Ich möchte ein Verzeichnis von Freien und Open Source Projekten anlegen, nenne meine Komponente com_foss und fülle das Formular mit den Daten für die XML Datei aus.

Component creator - Neu Komponente
Component Creator – Neu Komponente

Datenbank Tabelle

Als nächstes fragt der Assistent nach einer Datenbank Tabelle.

Component Creator - Tabelle erstellen
Component Creator – Tabelle erstellen

Ich wähle Tabelle manuell erstellen.

Component Creator - Tabelle beschreiben
Component Creator – Tabelle beschreiben

Joomla bietet verschiedene Arten an, Daten zu speichern. Ich wähle den Standardserver und belasse die Sortierung ebenfalls auf dem Standardwert. Die Checkboxen beziehen sich auf die spätere Darstellung im Frontend und im Administrationsbereich.
Im Zusammenhang mit der Darstellung im Frontend stellt sich beispielsweise die Frage, ob jeder Tabelleneintrag (also ein FOSS Projekt) eine Detailseite haben soll oder nicht. Wenn ja, muss etwas in der Liste verlinkt werden und ich hake im Beispiel die entsprechende Checkbox an. Der Component Creator legt mir nun die von Joomla erwartete Tabellenstruktur an und ich kann sie um beliebig viele Felder erweitern.

Component Creator - Felder in der Tabelle
Component Creator – Felder in der Tabelle
Component Creator - Feld hinzufügen
Component Creator – Feld hinzufügen

In der rechten Seitenleiste erscheint eine Zusammenfassung der Tabelle mit einem Erstellen Button. Ein Klick auf den Button lädt die fertige Komponentenstruktur herunter. Das Dateipaket com_foss-1.0.0.zip besteht aus 15 Dateien und du hast gerade tatsächlich mehrere Stunden an Arbeit gespart :).

Component Creator - Komponente laden
Component Creator – Komponente laden

Installation auf deiner Joomla Site

Du kannst das Dateipaket wie jede andere Erweiterung installieren, hier mein Beispiel zum Download: com_foss-1.0.0.zip.

com_foss-1.0.0.zip installieren
com_foss-1.0.0.zip installieren

Im Administrationsbereich taucht die FOSS Komponente nach der Installation im Menü auf und du kannst Einträge hinzufügen, editieren und wieder löschen.

FOSS Komponente im Administrationsbereich
FOSS Komponente im Administrationsbereich

Auf der Website kannst du die FOSS Liste als Menülink einbinden. Die FOSS Komponente bietet bei der Erstellung des Menülinks drei Arten von Links an. Die Liste der Projekte, ein einzelnes Projekt und ein Formular zur Eingabe neuer Projekte.

Menülink erstellen
Menülink erstellen

Ich wähle die List-Anzeige (FOSS) und auf der Website erscheint im Menü ein neuer Link, der zur Liste führt. Die Liste wiederum enthält verlinkte Projektnamen, die dann zu den Einzeleinträgen führen.

Website mit FOSS Liste
Website mit FOSS Liste

Fazit

Soweit, so einfach. Die Erstellung der Struktur ist einfach und gut dokumentiert. Die weitere Arbeit liegt in den Details und da möchte ich nochmals auf die offizielle Dokumentation verweisen.

Links


tl;dr: Die Struktur einer Joomla Komponente lässt sich hervorragend mit dem Component Creator Service erstellen.

Save

Save

Save

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen