Henrik Elsner
19.11.2018

Meine erste TYPO3-Extension

Erfahrungen aus erster Hand zur Erstellung des "QueryBuilders"

Dieser Artikel ist die gekürzte, editierte und aus dem Englischen übersetzte Fassung des Beitrags “First Steps to Building a TYPO3 Extension – QueryBuilder” der TYPO3 GmbH, im Original hier erschienen.

Das Send your Junior!-Programm war eine wirklich lohnende Erfahrung!

DFAU-Junior Dev Henrik Elsner

Nach 300 Downloads, die meine erste TYPO3-Extension*, der “QueryBuilder”, inzwischen verzeichnet, ist ein kleiner Meilenstein erreicht, um zu berichten, was ich aus der Entwicklung und Wartung dieser Erweiterung gelernt habe. Begonnen hatte der Weg im vergangenen Jahr, als mir mein Arbeitgeber ermöglichte, am Send your Junior!-Programm der TYPO3 GmbH teilzunehmen. Eine tolle Erfahrung, die mein Wissen auf ein neues Niveau gehoben hat!

Anfang Oktober 2018 wurde nun eine neue TYPO3-LTS-Hauptversion veröffentlicht (TYPO3 v9 LTS). Wenn eine LTS-Version wie v9 verfügbar gemacht wird, muss für Extensions Kompatibilität mit der neuen Version hergestellt werden. Wir freuen uns, den QueryBuilder für die aktualisierte v9 bereits anbieten zu können, da wir die Erweiterung nur eine Woche nach der Veröffentlichung der TYPO3 v9 LTS herausgegeben haben.

Was ist der QueryBuilder?

Der QueryBuilder schafft die Möglichkeit, mit dem Listenmodul nach Datensätzen zu suchen. Es greift auf das vorhandene System zurück und fügt einen leistungsfähigen Filtermechanismus hinzu. Das Listenmodul ist ein wesentlicher Bestandteil von TYPO3 und ermöglicht das Anzeigen von Datensätzen jeglicher Art als Listen (oder Tabellen, da sie in einer MySQL-Datenbank gespeichert werden). Der QueryBuilder ist ein benutzerfreundlicher Filter für diese Listen. Er verfeinert das Erstellen und Ausführen von Datenbankabfragen. Mit dem QueryBuilder kann die Suche auch erweitert werden oder verschiedene Merkmale bestimmter Datensätze filtern.

Aus der Praxis dient ein Tourismus-Anbieter mit Reise-Datensätzen zu Zielen auf der ganzen Welt als gutes Beispiel. Wenn ein Redakteur z.B. eine Liste aller Reisen in Deutschland benötigt, gibt man einfach den Begriff "Deutschland" in den Filter ein und die entsprechenden Datensätze werden angezeigt. Der QueryBuilder ermöglicht es dem Redakteur, nicht nur zu "Deutschland" sondern auch gleichzeitig zu "Österreich oder Deutschland" mit einer Reisedauer von "mehr als 9 Tagen" Datensätze zusammenzustellen. Dadurch generiert der User qualitativ präzisere Suchergebnisse, was je nach Datenbestand die Effizienz der Arbeit im System erhöht.

Allgemeine Gedanken

Das Problem bei der Erstellung von Extensions besteht in ihrem hohen zeitlichen als auch finanziellen Aufwand. Aufgrund des Open-Source-Prinzips von TYPO3 bedeutet dies häufig, dass Entwickler für die Arbeit im "Core"* nicht bezahlt werden. Normalerweise arbeiten Entwickler wie ich in einem Unternehmen und haben Kundenprojekte, mit denen sie Umsatz generieren müssen. Für alle, die zur Weiterentwicklung des Core beitragen oder Extensions bauen, ist es sehr unwahrscheinlich, dass ein Kunde für ihre Arbeit bezahlt (es gibt Ausnahmen, z.B. wenn die Funktionalität direkt für ein Kundenprojekt verwendet wird).

Das Send your Junior!-Programm ist aus diesem Grunde eine ideale Einrichtung. Die Teilnahme daran bedeutet, dass man Zeit hat, ein solches Projekt in Angriff zu nehmen und sich darauf zu konzentrieren, genau ein Problem zu lösen. Die Teammitglieder unterstützen Devs dabei, die Aufgabe sowohl während als auch nach der Teilnahme zu bewältigen und korrekt auszuführen.

Während ich in Düsseldorf war, konnte ich mich zu einhundert Prozent auf die Entwicklung der QueryBuilder-Extension konzentrieren. Ich bekam die notwendige technische Unterstützung von Teammitgliedern wie Frank, Anja und Lolli, erhielt Feedback, wenn ich Fragen hatte und was ich sonst noch darüber hinaus brauchte (z.B. Energy-Drinks). Dieser Support hat sogar bis heute, weit über meine Zeit vor Ort hinaus, Bestand.

Ich weiß die intensive Zusammenarbeit rückblickend wirklich sehr zu schätzen. Die Kommunikation lief unkompliziert und auf Augenhöhe ab. Wir standen täglich in engem Kontakt bezüglich der einzelnen Schritte zur Lösungsfindung, und manchmal erteilte ich sogar anderen Teammitgliedern Aufgaben. Eine solche hilfreiche Unterstützung zu erhalten ist ein echter Motivationsfaktor. Es hilft dabei, auch zusätzliche Aufgaben zu erledigen, selbst an einem Freitagabend.

Fazit

TYPO3 ist die ideale Wahl, um anspruchsvolle digitale Erlebnisse zu schaffen. Die TYPO3 GmbH bietet das Send your Junior!-Programm an, um aufstrebenden Entwicklern zur persönlichen Entfaltung und einem einfachen Zugang in die TYPO3-Entwicklungsgemeinschaft zu verhelfen.

Für mich war die Teilnahme eine wirklich lohnende Erfahrung und ich danke der TYPO3 GmbH, dass sie mich so gut aufgenommen hat, sowie meinem Arbeitgeber, dass mir die Gelegenheit gegeben wurde, sowohl meine Fähigkeiten als auch mein Netzwerk mit anderen Profis auszubauen.

Außerdem ist der QueryBuilder im TYPO3 Extension Repository verfügbar und ich würde mich über Feedback freuen! Vor allem darüber, ob die Funktionalität in eine zukünftige TYPO3 LTS-Version integriert werden sollte.

eh/DFAU

Was Sie ebenfalls interessieren könnte: 


Weiterführende Infos zum Thema

Die wichtigsten Aspekte zu TYPO3 & Extensions

Neben einer einfach bedienbaren Benutzeroberfläche bietet TYPO3 den Usern eine enorme Bandbreite an Schlüsselfunktionen. Die wahre Stärke von TYPO3 als erstklassige Entwicklerplattform beruht jedoch auf ihrer vielseitig konfigurierbaren Architektur. Die umfassende API-Unterstützung (Application Programming Interface) bietet TYPO3-Entwicklern eine einfache Möglichkeit, auf ihr aufzubauen, und die Kernfunktionalität mit PHP-Extensions zu erweitern, die je nach Bedarf hinzugefügt oder entfernt werden, wodurch sich weitere, schier endlose Optionen auftun.


Eine TYPO3-Extension ist eine Ansammlung von Dateien, die dem Kern (“Core”) einige zusätzliche Funktionen hinzufügen, geschrieben in PHP. Mit PHP-Extensions können komplexe TYPO3-Anwendungen problemlos angepasst und verbessert werden. Andere Softwarehersteller bezeichnen diese als Module, Plugins oder Add-Ons.

TYPO3 ist so konzipiert, dass zusätzliche Erweiterungen den TYPO3-Core nahtlos ergänzen. Ein TYPO3-System wird Benutzern und Besuchern als "Ganzes" angezeigt, obschon es eigentlich aus der Kernanwendung und einer Reihe von Erweiterungen mit verschiedenen Features besteht.


Was kann man mit TYPO3-Extensions machen?

Extensions erzeugen Effekte. Sie sind wie Werkzeuge in einem Werkzeugkasten und jedes einzelne fügt dem TYPO3-Core zusätzliche Features hinzu oder ändert eine bestimmte Funktion.

Ergänzende Beispiele zum QueryBuilder:
  • TYPO3-Blog-Extension

Mit der TYPO3-Blog-Extension können in einer TYPO3-Webanwendung Multi-User- und Multi-Language-Blogs hinzugefügt und verwaltet werden. Dieses Beispiel unterscheidet sich insofern, als es einer TYPO3-Installation eine völlig neue Funktion bietet.

Während der Quellcode auf dem Kernsystem basiert und Schlüsselkomponenten der Flexibilität von TYPO3, wie Seiten und Inhaltselemente verwendet, ist die Funktionalität für Blogs nicht Teil des Basissystems.

  • RealURL

Mit RealURL können URLs lesbar und SEO-freundlich gestaltet werden. Ein Evergreen, wenn man so will, der in fast jede Web-Installation integriert wird.

RealURL formt URLs automatisch aus echten Wörtern (es gibt im TYPO3 Extension Repository auch andere Lösungen). Zwischen den Wörtern des Seitentitels werden Bindestriche eingefügt, wodurch die URLs leicht lesbar sind. Mit den gleichen Tools können auch Redirects bearbeitet werden.

Wie oben beschrieben, wurde vor einigen Wochen mit TYPO3 v9 LTS die neue Hauptversion veröffentlicht. Die RealURL-Funktionalität wurde integriert und der TYPO3-Core unterstützt jetzt die seitenbasierte URL-Verarbeitung, sodass die Extension nicht mehr benötigt wird.


Wann wird eine PHP-Extension von Grund auf erstellt?

  1. Wenn eine bestehende TYPO3-Installation eine Funktionalität benötigt, die nicht im TYPO3 Extension Repository (TER) verfügbar ist.
  2. Wenn eine bestimmte Funktion einer älteren TYPO3-LTS-Version integriert werden soll, die inzwischen aus dem Core entfernt wurde.
  3. Wenn eine Funktion integriert werden soll, die im TYPO3-System auf andere Art implementiert ist als in der vom User verwendeten LTS-Version (zum Zeitpunkt der Erstveröffentlichung dieses Beitrags sind die beiden Hauptversionen TYPO3 v8 und v9 LTS).

Abschließend ein exemplarischer Blick dazu auf die Schaltflächen zum Speichern (“Save”): Dies ist ein gutes Beispiel für eine Kernfunktion, die gelöscht wurde, bei Bedarf aber problemlos wieder implementiert werden kann. Früher gab es drei Schaltflächen zum Speichern von Content.

Mit der TYPO3 v8 LTS wurden die drei Buttons in ein Dropdown-Menü geändert. Das sieht zwar ordentlich aus, bedeutet aber, dass ein zweites Mal geklickt werden muss, um eine der drei Optionen zum Speichern auszuwählen.

Einige User empfinden den zusätzlichen Klick als störend. Um das Problem zu lösen, kann eine Erweiterung installiert werden (es stehen mehrere zur Auswahl), um die Save-Buttons wie gewohnt anzuzeigen.

Open Source ist ein Geben und Nehmen, wer sich engagieren möchte, findet alles Wissenswerte im umfassenden Contribution Guide.

Kategorien

Kontakt

E-Mail: info@dfau.de