Overrides

Sie haben sicherlich schon Template Styles erstellt, CSS-Dateien und die Hauptseite Ihres Templates verändert, aber irgendwie sind Sie immer noch mit dem Ergebnis unglücklich? :-) Das ist die perfekte Zeit, um einmal über Overrides zu sprechen. In Joomla! haben wir davon zwei Sorten: Template Overrides und Alternative Layouts.

Template Overrides

Nehmen wir einmal an, Sie wollen das Layout der Suchergebnisseite verändern. Eine Komponente wie die Suchkomponente hat dafür ein Standard-Template-Layout, das in der Datei /httpdocs/components/com_search/views/search/tmpl/default.php gespeichert ist. Diese Datei ist dafür verantwortlich, dass die Suchergebnisseite so aussieht, wie sie aussieht. Fügen Sie einfach ein paar Worte zu dieser Datei hinzu, und Sie werden sofort ein Resultat sehen! Fügen Sie beispielsweise in Zeile 13

<strong>Ich habe etwas verändert :-) </strong>

hinzu, und schauen Sie, was passiert (siehe Abbildung 1).

cocoate.com/de/node/6487Veränderungen an der HTML Ausgabe

Abbildung 1: Veränderungen an der HTML-Ausgabe

Das Resultat ist gut für Ihre Motivation: zum einen, weil es so zu erzielen einfach war, und zum anderen, weil es in jedem Template funktioniert. Allerdings ist es schlecht für Ihre Reputation, weil Sie gerade Core-Quellcode verändert haben. Mit dem nächsten Joomla!-Update sind Ihre Änderungen wieder veschwunden!

Eine bessere Variante wäre, Template Overrides in jedem Template einzeln zu nutzen. Kopieren Sie die veränderte Datei in Ihren Template-Ordner, und zwar an diese Stelle: /httpdocs/templates/[template_name]/html/com_search/search/default.php, und entfernen Sie Ihre Änderungen in der Originaldatei. Das Ergebnis auf der Website ist das Gleiche, aber hinter den Kulissen haben Sie die Originaldatei  .../default.php mit dem von Ihnen gewünschten Inhaltslayout überschrieben, ohne den ursprünglichen Quellcode zu verändern – gut gemacht!

Dieses System wurde im Jahre 2007 mit dem Erscheinen von Joomla! 1.5 eingeführt und funktioniert auch heute noch sehr gut.

Alternative Layouts

Mit Joomla! 1.6 haben die Overrides eine Erweiterung mit dem Namen Alternative Layouts. Ich bin sicher, Sie haben bereits das Feld Alternatives Layout in den Bearbeitungsformularen von Beiträgen, Modulen und Kategorien gesehen (siehe Abbildung 2).

cocoate.com/de/node/6487Alternatives Layout in einem Beitrag

Abbildung 2: Alternatives Layout in einem Beitrag

Warum brauchen wir alternative Layouts? Stellen Sie sich vor, Sie sind Administrator oder Webmaster, und ein Template sieht drei alternative Layouts für einen Beitrag vor. Manchmal ist es "normaler Beitrag", manchmal soll ein Beitrag wie ein Produkt aussehen, weil Sie ewtas verkaufen wollen, und manchmal wie eine Buchseite. Sie müssen nur noch wählen, welches Layout Sie benutzen wollen. Das hört sich wie ein tolles Feature an, und natürlich ist es das auch.

Das Prinzip ist das Gleiche wie bei den Template Overrides. Sie müssen einen Ordner mit dem gleichen Namen wie die Erweiterung und einen Unterordner für die View erstellen. Es gibt allerdings zwei Unterschiede:

  1. Der Name der Datei muss natürlich anders sein als default.php, da dieser Name bereits für die Template Overrides vergeben ist.
  2. Das alternative Layout wird natürlich nicht automatisch verwendet.

Zusätzlich zum alternativen Layout gibt es eine Möglichkeit, zusätzliche Menüeintragstypen zum Layout zu erstellen (siehe Abbildung 3) und die Optionen des Beitrags zu beeinflussen. Dafür muss eine XML-Datei mit gleichem Namen wie die Layout-Datei erstellt werden.

cocoate.com/de/node/6487Zusätzliche Menüeintragstypen

Abbildung 3: Zusätzliche Menüeintragstypen

Die Erzeugung dieser Dateien ist kein Einsteigerthema mehr, aber ich bin sicher, dass Drittanbieter von Templates schnell von den neuen Möglichkeiten Gebrauch machen werden (siehe Abbildung 4).

cocoate.com/de/node/6487Zusätzliche Layouts in einem Beitrag

Abbildung 4: Zusätzliche Layouts in einem Beitrag

 

Kommentare

Ich würde an dieser Stelle vermissen, wie man die System-Standards, wie Beispielsweise Error404, oder die Seiten-Abschaltung selber definiert und zum ersten Beispiel einer eigenen Fehlerseite nur innerhalb des Template-Verzeichnisses die Datei error.php anlegen müsste. So dann eben auch für andere Standards wie eben jene Seite die dann anzeigt, dass die Datenbank gesperrt wurde und damit die Webseite vorübergehend nicht erreichbar ist.

Nur als kleiner Tipp.

Ansonsten kann ich nur sagen: "Chapeau"! Hervorragende Arbeit!!!