Template Overrides sind eine altbewährte Technik, die mit der Joomla Version 1.5 eingeführt worden ist. Template Overrides überschreiben die Ausgaben von Komponenten, Modulen, Layouts (und teilweise auch Plug-Ins). Wie eine Joomla Website aussieht wird durch die Ausgabe („views„) der verschiedenen Erweiterungen (z.B. com_content) definiert und weitestgehend vom gewählten Template kontrolliert. Die Ausgabe der Erweiterungen lässt sich aber in vielfacher Weise verändern, indem Template Overrides angelegt werden. Die veränderten Dateien werden im Template Ordner angelegt und zwar nach einem definierten Muster. Zum Beispiel, wenn die Ausgabe eines Beitrages geändert werden soll, wird der Override unter: meintemplate/html/com_content/article/default.php gespeichert.

Es können globalen Änderungen vorgenommen werden, indem die default.php Datei der jeweilige Erweiterung überschrieben wird. Eine sinnvollere Möglichkeit ist die Nutzung von alternativen Layouts. Das sind umbenannten Kopien der default.php Datei. Wird ein Override z.B. vom Modul „mod_articles_news“ angelegt und die dazugehörige „default.php“ überschrieben, so betrifft die Änderung jedes Modul diesen Typs. Wird die Datei in „events.php“ umbenannt, kann man beim Erstellen eines Moduls entscheiden, ob die Standard oder die „Events“ Ausgabe verwendet werden soll.

Wie und wo legt man einen Override an?

Als erstes muss herausgefunden werden, welche Datei zu überschreiben ist. Zum Beispiel man möchte die Ausgabe der folgenden Seite ändern:

Abbildung 01 - Menüpunkt Overrides

Im Backend sucht man nach dem Menüpunkt “Overrides”:

Abbildung 02 - Menü - Eintrag bearbeiten

Hier sieht man, es handelt sich um einen Menüpunkt des Typs “Einzelner Beitrag” und das entspricht der Inhaltskomponente „com_content“ und dort der Ausgabe (view) von „article„.

Overrides anlegen

Joomla macht das Anlegen von Overrides sehr einfach. Dafür geht man auf „Erweiterungen & Templates„. Hier schaut man welches Template als Standard definiert ist.

Abbildung 03 - Templates - Protostar

In diesem Fall „Protostar„. Wenn man das Untermenüpunkt „Templates“ anklickt und dort auf „Protostar – Details und Dateien“ landet man auf der Übersicht aller in Protostar enthaltene Dateien.

Abbildung 04 - Templates - Protostar Details und Dateien

Unter den Tab „Overrides erstellen“ sieht man, welche Teile von Joomla überschreibbar sind.

Abbildung 05 - Overrides erstellen

Abbildung 06 - Template anpassen - Komponenten

Dem Beispiel folgend wählt man hier „Komponenten -> com_content -> article„. Joomla wird dann melden, dass die entsprechenden Dateien im Template angelegt wurden:

Abbildung 07 - Overrides erstellen - Bestätigung

Zurück zum Tab „Editor“ sucht man in der Baumstruktur nach den Dateien:

Abbildung 08 - Template anpassen - Editor

Beispiel Override für Beiträge

Normalerweise werden die Links, die man in einem Beitrag unter “Bilder und Links” einträgt, am Ende des Beitrags angezeigt. Die Stelle im Quellcode findet man ab Zeile 91 des default.php Datei. Hier wird die Datei default_links.php aufgerufen:

Abbildung 09 - Quellcode default-php

Wenn man die Links direkt unter dem Beitragstitel anzeigen möchte, muss man die default.php dementsprechend ändern. Man verschiebt den Code-Block nach oben unter dem Titel:

Abbildung 10 - Quellcode - Verschiebung Codeblock

Man trägt den Link im Beitrag ein:

Abbildung 11 - Eintrag Link im Beitrag

Und jetzt sieht die Seite so aus:

Abbildung 12 - Mein erster Override

Alternatives Layout

Mit alternativen Layouts kann man mehrere Template Overrides des gleichen Typs anlegen und verwalten. Wie vorher erwähnt, ändert man die „default.php“ Datei, sind die Änderungen dann global für alle Beiträge in Joomla. Will man hingegen nur bestimmte Beiträge anders aussehen lassen, muss man die Datei umbenennen:

Abbildung 13 - Templates - Alternatives Layout

Die einzige Regel ist, dass man keinen Unterstrich (_) im Namen verwenden darf. Ein Unterstrich ist nötig in komplexeren Layouts, die mehrere Dateien verwenden. Die erste Datei hat einen Namen ohne Unterstrich (default, override, usw.), die anderen Dateien werden in der ersten Datei aufgerufen und haben Namen mit Unterstrich. Zum Beispiel, wenn man ein alternatives Layout für Beiträge („com_content„) anlegen möchte, nennt man die Hauptdatei „override.php“ (umbenannte Kopie von default.php), diese ruft dann eine andere Datei namens „override_unterteil.php“ auf.

Alternatives Layout anwenden

Template Overrides, die die default.php Datei einfach überschreiben, werden immer automatisch geladen, wenn das Modul oder die Komponente verwendet wird. Ein alternatives Layout wird nur angewendet, wenn es in den Einstellungen des Moduls oder der Komponente ausgewählt wurde.

Das alternative Layout kann in einem Beitrag unter “Optionen” gewählt werden:

Abbildung 14 - Alternatives Layout anwenden

Alternatives Layout in einem Modul (in diesem Fall wurde ein Override des mod_articles_news (Beiträge – Newsflash) als alternatives Layout (events.php) angelegt:

Abbildung 15 - Module - Beiträge - Newsflash

Eine Besonderheit muss noch erwähnt werden: Wenn ein alternatives Layout in den Parametern ausgewählt wurde, wird es verwendet, egal was für ein Template als Standard definiert ist. Das bedeutet, dass bei einer Änderung des Standardtemplates von „Protostar“ zu „meinneuestemplate“ immer noch das alternative Layout von „Protostar“ geladen wird.

Bei Beiträgen kann man ein alternatives Layout z.B. auch global setzen:

Abbildung 16 - Alternatives Layout für Beiträge

Ein alternatives Layout für Beiträgen wird nur verwendet, wenn zwei Voraussetzungen erfüllt sind:

  • es ist in den Parameter des Beitrags ausgewählt
  • es gibt kein Menüpunkt für diesen Beitrag, da der Menütyp die Parameter des Beitrags überschreiben. Das folgt der Regeln, wie Parameter einer Komponente funktionieren, wo das spezifischere (in diesem Fall der Menüpunkt „Einzelner Beitrag“) über das weniger spezifische (in diesem Fall die Parameter des Beitrags) geht.

JLayouts

Bestimmte Ausgaben von Joomla!, die an mehreren Stellen verwendet werden, sind in Layouts ausgelagert. Diese findet man in der Ausgabe einer Komponente oder eines Moduls eingebunden. Zum Beispiel die Info-Box (Autor, Erstellungsdatum, usw.) in einem Beitrag:

Abbildung 17 - Codebeispiel JLayouts

Layouts können auch über das Backend im Template überschrieben werden:

Abbildung 18 - Layouts im Template überschreiben

Layouts werden von Joomla im Ordner “layouts” gespeichert:

Abbildung 19 - Layouts im Ordner layouts

Die Overrides werden unter “templates/meintemplate/layouts/” angelegt.

Man kann sogar neue Layouts erstellen. Zum Beispiel in einem Override oder in der Ausgabe einer eigenen Komponente:

$layout = new JLayoutFile(‚mein_layout‘, $basePath = JPATH_ROOT .’/components/com_meinekomponente/layouts‘);
$html = $layout->render($data);

Dieser Code wird die Layout Datei “mein_layout.php”, die sich unter dem Ordner JPATH_ROOT .’/components/com_meinekomponente/layouts‘ in der Ausgabe laden.

Im Prinzip können Layouts überall gespeichert werden, da man den Pfad in der Ausgabe angeben kann. Jedoch ist es sinnvoll, bestimmte Konventionen zu folgen:

  • Man soll die Layouts im Folder “layouts” unter der Administration der eigenen Komponente, z.B. /administrator/components/com_meinekomponente/layouts ablegen
  • Wenn die eigene Erweiterung keinen Admin Ordner (Komponente nur fürs Frontend, Module, Plugins) hat, dann sollen folgende Ordner verwendet werden:
    /components/com_meinekomponente/layouts
    /plugins/content/meinplugin/layouts
    /modules/mod_meinmodul/layouts

Wichtig ist, dass der Ordner “layouts” heißt. Der Ordner “layouts” in der Joomla Installation ist reserviert für Joomla! selbst.

Sprachoverrides

Mit den Sprachoverrides kann man die Ausgabe von Texten innerhalb von Joomla an die persönlichen Bedürfnisse anpassen. Zum Beispiel, man möchte den Name des Feldes “Link A” in den Beiträgen ändern:

Abbildung 20 - Sprachoverrides

Sprachoverrides werden im Backend von Joomla! angelegt und zwar unter Erweiterungen  -> Sprachen -> Overrides.

Hier werden die bereits angelegten Sprachoverrides angezeigt. Man kann sie in „Site“ (für die Seite) und „Administrator“ (fürs Backend) Overrides und für die installierten Sprachen filtrieren.

Abbildung 21 - Neue Sprachen - Overrides anlegen

Mit einem Klick auf „Neu“ kann man einen neuen Sprachoverride anlegen.

Wenn man einen existierenden Sprachschlüssel verändern will, kann man nach dem gewünschten Schlüssel oder Text suchen. Joomla füllt dann die Felder und man kann den Text ändern.

Abbildung 22 -Existierenden Sprachschlüssel verändern

Wenn man dort den Text “Link A” in “Untertitel” ändert, sieht es im Beitrag so aus:

Abbildung 23 - Sprachoverride - Text ändern

Mit Sprachoverrides ist es auch möglich, neue Textausgaben zu erstellen, z.B. innerhalb eines Overrides:

In diesem Fall ist “JOVER_DOC” eine Variable, die nach Belieben mit Text gefüllt werden kann.

Für neue Sprachschlüssel wird direkt die verwendete Variable eingetragen, z.B. „JOVER_DOC„. Im Bereich Text wird der gewünschte Text eingetragen, der auf der Seite sichtbar sein soll.

Der größte Vorteil von solchen Sprachvariablen ist, dass die Texte mehrsprachig ausgegeben werden können. Ist z.B. “JOVER_DOC” eine Variable, die als Titel eines Moduls in einer mehrsprachigen Seite ausgegeben werden soll, kann man die Sprachoverrides “Dokumentation” für Deutsch, “Documentation” für Englisch und “Documentación” für Spanisch anlegen und der Modultitel wird immer in der richtigen Sprache angezeigt.

Beispiel Override für das Modul Newsflash

Das Modul Newsflash zeigt eine gewisse Anzahl von Beiträgen aus einer Kategorie:

Abbildung 24 - Override -Eventkalender

Man kann dieses Modul umschreiben und es als “Eventkalender” umfunktionieren. Man erstellt als erstes eine Beitragskategorie “Events”, wo die zukünftigen Veranstaltungen als Beiträge eingetragen werden. Das Feld “Erstellungsdatum” wird als Datum des Events verwendet.

Dann legt man ein Override von “mod_articles_news” an und benennt die Datei “default.php” in “events.php” um. Alle andere Dateien, die Joomla unter “meintemplate/html/mod_articles_news” ablegt, können gelöscht werden.

Folgenden Code wird in der Datei “events.php” gespeichert:

Abbildung 25 - Codebeispiel event.php

Damit erzeugen wir eine Liste von Beiträgen mit “Erstellungsdatum” und “Titel”.

Jetzt wird das Modul angelegt. Als Kategorie nimmt man “Events” und die Sortierung nach Erstellungsdatum:

Abbildung 26 - Module Beiträge Newsflash

Wichtig ist, dass man unter “Erweitert” das alternative Layout “events” auswählt:

Abbildung 27 - Module Beiträge Newsflash_Erweitert

Das Ergebnis sieht dann so aus:

Abbildung 28 - Overrides - Eventkalender
Mit einer kleinen Änderung hat man es geschafft einem existierenden Modul eine neue Funktion zu geben: Das Ergebnis ist ein einfacher Eventkalender ohne eine Erweiterung installiert zu haben.

Mit ein bisschen Fantasie und Kreativität lassen sich mit Overrides viele Probleme lösen ohne Joomla mit Erweiterungen aufzublähen. Das macht die Wartbarkeit der Seite deutlich einfacher.

Empfehlungen

Es kommt oft vor, dass es in Joomla! Foren gefragt wird “Ich möchte dies und jenes als Funktion haben, welche Erweiterung muss ich installieren?”. Und sehr oft kann man mit einigen Overrides und ohne Erweiterungen eine gute Lösung für die Anforderungen anbieten. Das nächste Mal wenn Sie nach einer besonderen Funktionalität oder einer speziellen Anzeige suchen, überlegen Sie ob es nicht nur mit Joomla! erreicht werden kann.

Das Projekt j!-over hat sich der Aufgabe gewidmet Overrides zu sammeln, zu erstellen und mit der Joomla! Community zu teilen. Auf der Seite von j!-over findet man verschiedene Joomla Overrides. Nach einer Registrierung auf der Seite kann jeder Overrides einreichen. Es ist auch möglich “Wunschoverrides” vorzuschlagen, das j!-over Team versucht dann den Override zu erstellen.

Weitere Informationen über Overrides findet man in der Joomla Dokumentation (docs.joomla.org – teilweise nur in Englisch).

In den letzten JoomlaDays Deutschland wurden auch einige sehr interessante Vorträge über Overrides präsentiert. Diese können auf dem YouTube Channel des J and Beyond e.V. angesehen werden.

Dr. Viviana Menzel

Große Auswahl an günstigen Domain-Endungen – schon ab 0,08 € /Monat
Jetzt Domain-Check starten