ich bin schon seit Tagen auf der Suche nach Beiträgen, die erklären, wie man Template Dateien mit einem Modul überschreibt. Habe bis heute nichts gefunden…
Und zwar möchte ich die Newsletter.tpl Datei mit einem Modul überschreiben. Eigentlich müsste es möglich sein, denn das Modul DelTemp von Wendnet überschreibt auch eine Template Datei - allerdings im Backend.
Du musst Dir einfach ein Child-Theme anlegen. Da kommen dann alle veränderten Templatedateien rein, also zum Beispiel die Datei “newsletter.tpl”.
Der Shop verwendet nun bevorzugt die vorhandenen Dateien im Child-Ordner, alles was dort nicht gefunden wird, wird aus dem Parent-Theme geladen.
Das Parent-THeme als solches bleibt somit unverändert und damit updatesicher.
außer man schreibt ein Modul, das die Newsletter-Geschichten erweitern und man traut dem Benutzer nicht zu ein Child Template zu erstellen oder sein eigenes anzupassen
Das man im Backend das Template mit $sRet überschreiben kann wusste ich, aber wie kann man das Frontend überschreiben? Wenn ich mir im Frontend $sRet ausgeben lasse, erhalte ich ‘page/info/newsletter.tpl’. Allerdings komme ich da mit ‘…/…/…/…/modules/…’ nicht raus :S
Mein Ziel ist es mit dem Modul das zu überschreiben, nicht mit einem Theme, welches die Parent Funktion nutzt
klar, aber ich glaube du verstehst nicht was ich meine
Beispiel:
<?php
class xl_newsletter extends xl_newsletter_parent
{
public function render()
{
$sRet = parent::render();
// oxRegistry::get("oxUtilsView")->addErrorToDisplay($sRet);
if ( $sRet == 'page/info/newsletter.tpl' )
return 'sn_newsletter.tpl';
else return $sRet;
}
}
?>
so etwas funktioniert z.b. nicht… nur im backend, weil bei der Erstellung der Ansicht vor der render Funktion das Template kommt. D.h. ‘application/views/abc/tpl/’ -> getTemplateDirs()
dann verstehe ich was du meinst, aber ich verstehe nicht, warum du so kompliziert in die falsche Richtung denkst.
Z.B: wieso prüfst du, ob if ( $sRet == ‘page/info/newsletter.tpl’ ) ?