Problem: Möchte man die Ausgabe einer Core Datei ändern, ist es nicht unbedingt vorteilhaft, die Core Datei direkt zu editieren. Beim nächsten Update könnte die Datei aktualisiert worden sein und somit ist die Änderung in der Datei natürlich weg. Wie kann man dann Dateien editieren, ohne sie beim nächsten Update wieder ändern zu müssen?

Lösung: Das Zauberwort ab Joomla 1.5 lautet Layout-Override

Mit Hilfe von Overrides kann man die Ausgabe von Joomla sehr einfach anpassen und steuern. Zum Beispiel ist die Komponente com_content für die Ausgabe der Beiträge zuständig. Leider erzeugt diese Komponente noch immer Layouts in der veralteten Tabellenform. Um das zu unterbinden, können Overrides im Template eingesetzt werden, die eine moderne CSS-Ausgabe ermöglichen.

Das Template BEEZ ist hier vorbildlich. Es stellt Joomlas View-Modell (Model-View-Controller - Prinzip) alle benötigten Daten zur Verfügung, um eine saubere, barrierefreie Ausgabe zu ermöglichen.
Möchte man eigene Overrides schreiben, dann sollte man sich in diesem Template die richtige Ordnerstruktur anschauen, damit das Template-Override auch funktioniert.

Demo: Artikel mit und ohne Override

Ohne Override:

<table class="blog" cellpadding="0" cellspacing="0">
<tbody><tr>
<td valign="top">
<div>
<table class="contentpaneopen">
<tbody><tr>
<td class="contentheading" width="100%">
Willkommen bei Joomla!</td>

Mit Override - Ausgabe im BEEZ-Template:

<h2 class="contentheading">
Willkommen bei Joomla!</h2>

Wie man sieht, ist der Code um einiges sauberer und kürzer. Das sollte auch in Hinsicht auf Suchmaschinenfreundlichkeit beachtet werden.

Ein Beispiel an einem Joomla-Modul, wie man Overrides nutzen kann, um die Ausgabe zu verändern:

Modul: Login-Modul

Passwort vergessen? und Benutzernamen vergessen? sollen nicht angezeigt werden.

Achtung: Der Vorgang kann einfach wie im Tutorial durchgeführt werden. Es ist jedoch besser, sich in die offiziellen Docs von Joomla einzulesen, um das Thema "Output Overrides" richtig zu verstehen. Unten sind weiterführende Links aufgelistet.

1. Um Overrides zu ermöglichen, muss im gewählten Template ein Ordner mit dem Namen "html" erstellt werden.

Verzeichnisstruktur -> /templates/TEMPLATE/html

2. Möchte man jetzt wie im Beispiel das Login Modul bearbeiten, muss man in dem html-Ordner einen Unterordner mit dem Namen "mod_login" anlegen

Verzeichnisstruktur -> /template/TEMPLATE/html/mod_login

und dort die Template-Datei "default.php" (+ index.html) des Moduls (unter /modules/mod_login/tmpl) reinkopieren.

Tipp: Da die Ausgabe im Template BEEZ bereits wunderbar gelöst ist, kann auch die default.php (unter /templates/beez/html/mod_login/) benutzt werden. Für dieses Beispiel wird diese Datei benutzt!

3. Nun kann die Datei default.php angepasst werden. Um die Anzeige Passwort vergessen? und Benutzernamen vergessen? zu unterbinden, müssen folgende Zeilen auskommentiert oder gelöscht werden.

<p>
<a href="/<?php echo JRoute::_('index.php?option=com_user&view=reset#content'); ?>">
<?php echo JText::_('FORGOT_YOUR_PASSWORD'); ?></a>
</p>
<p>
<a href="/<?php echo JRoute::_('index.php?option=com_user&view=remind#content'); ?>">
<?php echo JText::_('FORGOT_YOUR_USERNAME'); ?></a>
</p> 

Das ist das Ergebnis:

Vorher:login-modul-unbearbeitet.jpgNachher:login-modul-bearbeitet.jpg

Bei Feedback oder Erfahrungsberichten zu "Joomla! Core Dateien ändern - Layout Overrides" die untere Kommentarfunktion verwenden, bei Problemen oder Supportanfragen das Forum benutzen.

Siehe auch:

  • http://docs.joomla.org/Understanding_Output_Overrides
  • http://tipps.joomla.ch/overrides-verstehen.html
  • http://joomla.cocoate.com/video/Templates-selbst-erstellen-Teil6-template-overrides