Zielstellung - Regelkonformes Override von Joomla-Templates

Seit Gantry in der Version 4.1 ist das Handling von Templates-Overrides erweitert worden und deshalb noch mal etwas komplexer geworden. Der Grund für die Erweiterung ist, dass man nun für die verschiedenen Joomla-Versionen unterschiedliche Templates ablegen kann. Damit sind Projekt z.B. noch einfacher migrierbar.

Das Verwirrende ist, dass es nun noch mehr Positionen im Joomla-Projekt-Pfad gibt an denen Template-Dateien liegen und man nur schwer sieht für welche Collection sich Joomla beim Durchsuchen der möglichen Plätze entscheidet. Deshalb hier kurz eine Beschreibung was sich abspielt und welche Auswirkungen dies hat, wenn man eigenen Template-Overrides erstellen möchte ohne dabei Core-Scripte zu modifizieren.

Ich setze voraus, dass Gantry als Template-Framework eingesetzt wird und z.B. eine auf Gantry basierendes eigenes Template eingesetzt wird. Das eigene Template kann auch ein fremdbezogenes Template auf Gantry-Basis sein, wie z.B. die von RocketTheme.

Grundlegendes zum Verständnis und Override-Pfad-Kollektion

Alle Joomla-Original-Templates liegen in den jeweiligen Komponenten-Verzeichnissen. Am Beispiel der Content-Kategorie-Templates blog.php und blog-item_php wäre das z.B. dieser Pfad: components/com_content/view/templ/category/.

 



Von Haus aus sucht Joomla immer auch nach möglichen Overrides für diese Template-Scripte in dem Pfad für das aktuelle Template also z.B. hier: templates/MEIN-TEMPLATE/html/com_content/category/.

Im Gantry/RocketTheme Template besteht nun eine Besonderheit. Üblicherweise wird im gerade genannten Verzeichnis nicht das eigentliche Override-Script abgelegt sondern quasi ein jeweiliges Weiterleitungsscript. Am besten am Beispiel erklärt: Wenn wir für das com_content/category/default.php-Template ein Override ablegen wollen, dann legen wir den Pfad com_content/category/ im Verzeichnis templates/MEIN-TEMPLATE/html/ an. Hier kommt dann eine Datei default.php hinein. Alle diese Scripte sind jedoch nur Weiterleitungsscript mit immer diesem gleichen Inhalt:

defined('_JEXEC') or die;
$gantry_lib_path = JPATH_SITE . '/libraries/gantry/gantry.php';
if (!file_exists($gantry_lib_path)) {
    echo 'This template requires the Gantry Template Framework.  Please download and install from <a href="http://www.gantry-framework.org/download">http://www.gantry-framework.org/download</a>';
    die;
}
include(JPATH_LIBRARIES.'/gantry/gantry.php');
$gantry->init();
include JPATH_SITE.'/templates/'.$gantry->getCurrentTemplate().'/html/base_override.php';

Noch mal im Klartext: Für jedes Override-Script, welches wir erzeugen wollen, muss es hier ein gleich benanntes Script mit exakt immer diesem Inhalt geben. Diese Scripte sorgt dann dafür, dass in dem jeweiligen Template-Joomla-Versions-Verzeichnis nach dem eigentlichen Override-Script gesucht wird. Diese Pfade für die jeweiligen Versionen liegen dann z.B. unter:
templates/MEIN-TEMPLATE/html/joomla/2.5/ oder templates/MEIN-TEMPLATE/html/joomla/3.3/ usw.
In dieser Konsequenz bedeutet dies, dass unser Kategorie-Blog Bsp-Overrides hier abgelegt sein müssen: templates/MEIN-TEMPLATE/html/joomla/3.3/com_content/category/blog.php.

Das ist so zumindest die Verfahrensweise, die von Gantry/RocketTheme so angeboten wird. Wer das so konsequent nicht umsetzten will, z.B. weil er keine speziellen Template-Scripte für die jeweiligen Joomla-Versionen erstellen möchte, kann in den Pfad templates/MEIN-TEMPLATE/html/ natürlich statt der Weiterleitungs-Scripte auch gleich wie unter Joomla üblich die Override-Script ablegen.

Nebenbeigesagt gibt es noch einen weiteren Pfad, in dem wir die komplette Gantry-Template-Overrides-Struktur wiederfinden, nämlich in plugins/system/gantry/overrides. Auch hier finden wir wieder die Unterverzeichnisse für die Joomla-Versionen und die entsprechenden Komponenten-Overrides also z.B. 3.3/2.5/com_content/category/. Es dient dem Gantry-Framework als Standardquelle und enthält eine vollständigen Satz an Templates für J!-Core-Erweiterungen. Diese Template-Scripte können wir aber als Kopiervorlagen verwenden. Also von hier holen wir uns z.B. die blog.php und kopieren Sie in unser eigenes-Template-Override-Verzeichnis um es dort modifizieren zu können.

 

Meine Information zur Thematik habe ich aus diese Tread vom RocketTheme-Forum zu Gantry.