Liest man Beiträge im Joomla Forum oder in der Joomla-Facebook-Gruppe, so liest man oft sinngemäß diesen Satz: „Bau Dir doch für diese Funktionalität einfach ein Override!“. Andere Benutzer wiederum empfehlen dagegen: „Nimm doch einfach die Erweiterung XYZ!“. Doch was zeichnet Overrides und Erweiterungen jeweils aus? Das soll in diesem Beitrag aus der Sicht eines Website-Erstellers vergleichend beschrieben werden.
Inhalt
- Was ist ein Template Override?
- Ein Beispiel aus meiner Praxis
- Joomla-Erweiterungen
- Analyse von Template-Overrides
- Analyse zu Erweiterungen
- Fazit
Was ist ein Template Override?
In Joomla bezeichnet ein Template-Override, oft kürzer als „Override“ bezeichnet, die Möglichkeit, das Aussehen und die Struktur von Ausgaben (HTML-Code), die von Joomla-Kernkomponenten, Modulen oder Plugins generiert werden, anzupassen, ohne den Joomla-Core selbst zu verändern.
Ein Template-Override ist meist eine benutzerdefinierte Version einer Ansichtsdatei (View), die von Joomla verwendet wird, um Inhalte auszugeben. Statt den Code von Joomla zu verändern, wird die entsprechende View-Datei in das Template-Verzeichnis kopiert und dort angepasst. Joomla verwendet dann automatisch die Override-Datei.
Ein Beispiel aus meiner Praxis
Ich habe eine Website so konfiguriert, dass die Beitragsinformationen immer unter dem Beitrag angezeigt werden. Weiterhin wird in einem Kategorieblog der Weiterlesen-Button ("Read More") standardmäßig immer nach der Beitragsinfo angezeigt:
Abbildung 1: Kategorieblog in Standardansicht
Das gefällt mir nicht; ich hätte gerne den Weiterlesen-Button vor der Beitragsinfo. Doch die Reihenfolge lässt sich relativ einfach mit einem Template-Override ändern.
Dazu erstellt man für das jeweilige Template ein Override für "com_content":
Abbildung 2: Template-Override erstellen
Dann navigiert man in den Template-Dateien zu html - com_content - category - blog-item.php und vertauscht im PHP-Code die Blöcke für „Read More“ und Beitragsinfo, was auch für jemanden ohne tiefere PHP-Kenntnisse durchaus machbar ist.
Abbildung 3: PHP-Code-Ausschnitt aus blogitem.php
Das war es schon. Speichern und schließen, Cache löschen und testen.
Wenn alles funktioniert hat, zeigt sich das gewünschte Ergebnis:
Abbildung 4: Kategorieblog mit Override
Joomla-Erweiterungen
Mit Erweiterungen lässt sich die Funktionalität von Joomla beliebig ausbauen. Dabei gibt es eine riesige Spanne von einfach bis hochkomplex: Eine Erweiterung kann ein einfaches Wetter-Widget als Modul auf eine Website zaubern, aber auch ein komplexes Shop-System aufbauen. Erste Anlaufstelle für Erweiterungen ist das Joomla Extension Directory (JED)[1], aber manche findet man auch bei den Entwicklern direkt auf deren Github- oder Webseiten.
Abbildung 5: Joomla Extension Directory (JED)
Analyse von Template-Overrides
Overrides weisen eine Reihe von Vorteilen auf, z.B.:
- Volle Kontrolle über Ausgabe:
Anpassungen an Komponenten, Modulen oder Views erfolgen ohne Core-Änderungen. - Überstehen von Updates:
Overrides bleiben auch nach Joomla- und Template-Updates erhalten. - Minimaler Overhead bei kleinen Änderungen:
Overrides sind für kleine HTML -Anpassungen ideal; der Code bleibt schlank.
Dem stehen auch einige Nachteile gegenüber:
- Tiefergehende Kenntnisse erforderlich:
Für die Erstellung von Overrides werden PHP-Kenntnisse benötigt. Und um überhaupt die richtige Joomla-Datei für ein Override zu finden, braucht man zusätzlich Grundkenntnisse über den internen Aufbau von Joomla. - Wartungsaufwand hoch:
Nach Updates muss manuell geprüft werden, ob die Ausgangsdatei des Overrides durch das Update verändert wurde; falls ja, muss das Override für die geänderte Datei gegebenenfalls neu erstellt werden. - Potentielle Sicherheitsrisiken: Alte Overrides können Sicherheitslücken enthalten, da bei Core-Änderungen keine automatische Anpassung der Overrides erfolgt.
Wie überall gibt es auch bei Overrides Chancen und Risiken. So lassen sich einerseits gut strukturierte Overrides in anderen Projekten wiederverwenden. Andererseits entsteht bei jedem Update von Joomla, vor allem jedoch bei einem neuem Joomla-Hauptrelease und in Abhängigkeit von der Anzahl der Overrides, eventuell erheblicher Wartungsaufwand; wird dieser jedoch nicht geleistet, kann es zu fehlerhaften Darstellungen oder sogar zu Sicherheitslücken kommen.
Analyse zu Erweiterungen
Natürlich weisen auch Erweiterungen eine Reihe von Vorteilen auf. Dazu gehören:
- Leichte Erreichbarkeit
Das JED ist nach vielerlei Kriterien durchsuch- und filterbar. Dadurch kommt man schnell an alle gewünschten Informationen. - Leichte Installation und De-Installation
Das Backend von Joomla besitzt eine Funktion zum Installieren von Erweiterungen, auch direkt aus dem Webkatalog (basierend auf dem JED). Korrekt erstellte Erweiterungen lassen sich rückstandsfrei entfernen. - Wartung durch den Hersteller
Die Wartung, insbesondere auch die Anpassung an neue Joomla-Versionen, übernimmt der Hersteller der Erweiterung. Darüber hinaus sollten alle Erweiterungen für ihre eigenen Updates den Update-Mechanismus von Joomla nutzen. - Support und Service
Zu gut gepflegten Erweiterungen findet man auf den Hersteller-Webseiten umfangreiche Dokumentation und oft auch ein Forum für Unterstützung durch den Hersteller und die Nutzer-Community.
Und auch Erweiterungen haben natürlich auch eine Reihe von Nachteilen, z.B.
- Erhöhung der Komplexität
Erweiterungen erhöhen die Komplexität der Website. Dies gilt speziell für solche Erweiterungen, die tief in Joomla eingebettet werden und teilweise Standardfunktionalität verändern. Hierzu gehören z.B. Pagebuilder. - Erhöhung der Angriffsfläche
Mit jeder zusätzlichen Funktionalität steigt auch die mögliche Angriffsfläche für Hacker. Dies gilt insbesondere für weniger gut programmierte Erweiterungen. Typische Probleme hier sind XSS-Angriffe oder SQL-Injections. - Kosten
Zwar stehen praktisch alle Erweiterungen unter einer GPL-Lizenz.
Die Komplettversionen vieler Erweiterungen sind jedoch nur per kostenpflichtigem Download und gebunden an einen kostenpflichtigen Support-Vertrag erhältlich. Die kostenlosen Versionen dieser Erweiterungen verfügen oft nur über einen wesentlich eingeschränkten Funktionsumfang und erhalten meist keinen Support. - Wechselwirkungen zwischen Erweiterungen
Es kann vorkommen, dass sich zwei Erweiterungen in die Quere kommen und damit eine Website lahmlegen können.
Allerdings ist diese Gefahr seit Joomla 4 wesentlich geringer geworden, da neue Anforderungen (Stichworte: Namespaces, Web Asset Management) dies weitgehend ausschließen.
Die Nutzung von Erweiterungen bietet selbstverständlich auch viele Chancen:
Einsatz von Erweiterungen hoher Qualität
Es ist nicht ganz einfach, die Qualität einer Erweiterung vorab einzuschätzen. Letzten Aufschluss würde nur eine umfassende Analyse des Quellcodes bringen, was aus naheliegenden Gründen für „normale“ Ersteller von Websites kaum durchführbar sein dürfte.
Ersatzweise kann man verschiedene Kriterien aufstellen, um Erweiterungen hoher Qualität zu finden. Dazu können gehören:
- Langjährige Verfügbarkeit
- Häufige Updates
- Gute und umfassende Dokumentation auf der Hersteller-Website
- Eigenes Supportforum
- Gute Antwortzeiten bei Anfragen
- Native Unterstützung aktueller Joomla-Versionen (ohne Kompatibilitäts-Plugin)
Aus Sicht des Verfassers sollten mindestens vier bis fünf dieser sechs Kriterien erfüllt sein. Es gibt durchaus eine größere Anzahl von Erweiterungs-Entwicklern, die alle genannten Kriterien erfüllen; als Beispiel sei Akeeba genannt.
Kombination mit Overrides
Gelegentlich gibt es auch Erweiterungen mit eigenen Overrides. Dies ist bei einigen Templates der Fall.
Wo es Chancen gibt, sind die Risiken nicht weit. Im Fall von Erweiterungen zählen dazu:
Verwaiste Erweiterungen
Leider kommt es immer wieder mal vor, dass Entwickler ihre Erweiterungen nicht weiterpflegen oder ganz aufgeben. Besonders stark zu bemerken war dies beim Übergang von Joomla 3 auf Joomla 4, den manche Entwickler nicht mitgemacht haben. Wie dramatisch der Ausfall einer bestimmten Erweiterung ist, hängt sehr von der Art der Erweiterung ab:
Für eine Erweiterung zum Anzeigen einer Landkarte, für eine Bildergalerie oder für ein Cookie-Einwilligungswerkzeug lässt sich relativ leicht Ersatz beschaffen, auch wenn die Umstellung je nach Website doch einigen Aufwand verursachen kann.
Ein Pagebuilder und das zugehörige Framework oder eine komplette Shop-Lösung lassen sich nicht so leicht ersetzen.
Geschwindigkeitsverlust
Viele und vor allem große Erweiterungen können sich negativ auf die Reaktionsgeschwindigkeit einer Website auswirken.
Fazit
Für eher kleine Änderungen, vor allem für Website-spezifische Anpassungen am Ausgabeformat im Front- oder Backend einer Joomla-Website, bieten sich Overrides an. Voraussetzung dafür ist jedoch PHP-Know-How.
Größere Funktionen, die das Joomla-Grundsystem nicht anbietet, lassen sich besser mit Erweiterungen realisieren. Aus Gründen der Zukunftssicherheit sollte jedoch bei der Auswahl der Erweiterung sehr genau auf einen zuverlässigen Anbieter geachtet werden.
1 https://extensions.joomla.org
Über den Autor dieses Artikels
Dieser Beitrag wurde von Rolf Dautrich verfasst und freundlicherweise JUG Zürich zur Weiterveröffentlichung zur Verfügung gestellt. Rolf ist Pensionär und befasst sich schon einige Jahre mit Joomla. Er ist sehr aktiv im Forum von Joomla.de