Joomla Überschreiben von Component Views durch eigene Templatedateien und Modul (Mod)
Componente überschreiben
Die Templates einer Komponente kann man in Jommla recht einfach Überschreiben. In meinem Beispiel verändere ich die Rechnung des VirtualMart Onlineshop PlugIns.
Im Verzeichnis „components“ sind alle Komponenten des Systems aufleistet. Dort findet man ein Unterverzeichnis „com_virtuemart/views/“ in diesem Verzeichnis sind alle Template-Dateien enthalten und nach dem View-Controller Prinzip in Unterordner platziert.
Grundsätzlich ist jeder Komponente so aufgebaut.
Also Verzeichnis „components/com_virtuemart/views/“:
Die folgende Ansicht zeigt die Unterordner im Verzeichnis „views“.
1 2 3 4 5 6 | askquestion cart categories category invoice ... |
Möchte man nun die Rechnung ändern, wäre das Template logischerweise im Ordner „invoice“ zu finden. Ruft man nun den Ordner „invoice“ auf, ist dort ein Ordner namens „tmpl“. Diesen öffnen wir und sehen php-Dateien, welche das Template darstellen.
Also Verzeichnis „components/com_virtuemart/views/invoice/tmpl“:
1 2 3 4 | invoice.php invoice_history.php invoice_items.php ... |
Die Datei „invoice.php“ stellt dann als Beispiel die Rechnung dar und „invoice_items“ die Liste der Artikel auf der Rechnung. Eigentlich recht logisch.
Template-Dateien überschreibeny
Um nun diese Dateien im Template überschreiben zu können, öffnen wir unser Template unter „templates/TEMPLATENAME/html“. In diesen „html“-Ordner werden die Daten zum überschreiben abgelegt. Dort erstellen wir nun einen Ordner mit dem Komponentennamen, welche wir überschreiben möchten „com_virtuemart“:
1 | templates/TEMPLATENAME/html/com_virtuemart |
Als nächstes erstellen wir das Verzeichnis des Views, welches wir überschreiben möchten.
Das Verzeichnis „views“ -> „/com_virtuemart/VIEWS/invoice“ in der Komponente wird hier nicht angelegt, also die Struktur zur Komponente ist leicht verändert:
1 | templates/TEMPLATENAME/html/com_virtuemart/invoice |
Nun Kopieren wir die Template-Datei, welche wir überschreiben möchten, von der Komponente in unser Template-Verzeichnis:
Als Beispiel „invoice_items.php“:
1 | templates/TEMPLATENAME/html/com_virtuemart/invoice/invoice_items.php |
Wenn wir diese nun Verändern, wird die originale Template-Datei von unserer hier angelegten Datei überschrieben.
Modul überschreiben
Das Prinzip ist grundsätzlich das selbe wie bei der Komponente, nur das die Ordnerstrukur etwas anders ist.
1 | modules/MODULNAME/tmpl/templatefile.php |
kopieren nach:
1 | templates/TEMPLATENAME/html/MODULNAME/templatefile.php |