Mai Lapyst
Neues Mitglied
Hallo,
ich habe einen JTL- Shop auf der version 5.0.3, und möchte in einem NOVA Child Template (auf basis des offiziellen NOVAChild templates) die datei "productdetails/image.tpl" ersetzen. Laut Dokumentation soll ja reichen einfach die datei im child template anzulegen, also vlg.: "templates/NOVAChild/productdetails/image.tpl", was auch gemacht wurde. Datei und ordner-rechte sind wie beim NOVA template. Allerdings wenn ich dann die produktseite aufrufe wird immernoch das alte template geladen. (Shop caches sind alle geleert & deaktiviert)
Ich habe auch herausgefunden woran es liegt: der Shop prüft beim laden des templates ob es ein child template ist bzw ob es ein parent besitzt, wenn ja wird zuerst der template pfad des parents und danach der des schilds an Smarty übergeben. Wenn nun smarty auf eine include anweisung trifft (wie es bei der "productdetails/image.tpl" der fall ist) geht JTL zuerst her und prüft ob die datei auch im child vorhanden ist, wenn ja schreibt es die anweisung "leicht" um:
Hier sieht man evtl schon woran es liegt: JTL teilt Smarty mitt das es zuerst im NOVA template suchen soll und danach erst im frontend (was das NOVAChild template ist). Dies kommt daher weil, wie oben erwähnt, zuerst NOVA und danach erst NOVAChild geladen wird.
Passt man nun die funktion an, das die template pfade an smarty übergibt:
includes/src/Smarty/JTLSmarty.php beginnend von zeile 111:
auf:
dann funktioniert es wie gedacht.
Mfg
ich habe einen JTL- Shop auf der version 5.0.3, und möchte in einem NOVA Child Template (auf basis des offiziellen NOVAChild templates) die datei "productdetails/image.tpl" ersetzen. Laut Dokumentation soll ja reichen einfach die datei im child template anzulegen, also vlg.: "templates/NOVAChild/productdetails/image.tpl", was auch gemacht wurde. Datei und ordner-rechte sind wie beim NOVA template. Allerdings wenn ich dann die produktseite aufrufe wird immernoch das alte template geladen. (Shop caches sind alle geleert & deaktiviert)
Ich habe auch herausgefunden woran es liegt: der Shop prüft beim laden des templates ob es ein child template ist bzw ob es ein parent besitzt, wenn ja wird zuerst der template pfad des parents und danach der des schilds an Smarty übergeben. Wenn nun smarty auf eine include anweisung trifft (wie es bei der "productdetails/image.tpl" der fall ist) geht JTL zuerst her und prüft ob die datei auch im child vorhanden ist, wenn ja schreibt es die anweisung "leicht" um:
Code:
Vorher: "file:productdetails/image.tpl"
Nachher: "extends:[NOVA]productdetails/image.tpl|[frontend]productdetails/image.tpl"
Hier sieht man evtl schon woran es liegt: JTL teilt Smarty mitt das es zuerst im NOVA template suchen soll und danach erst im frontend (was das NOVAChild template ist). Dies kommt daher weil, wie oben erwähnt, zuerst NOVA und danach erst NOVAChild geladen wird.
Passt man nun die funktion an, das die template pfade an smarty übergibt:
includes/src/Smarty/JTLSmarty.php beginnend von zeile 111:
Code:
if ($parent !== null) {
self::$isChildTemplate = true;
$this->assign('tplDir', \PFAD_ROOT . \PFAD_TEMPLATES . $parent . '/')
->assign('parent_template_path', \PFAD_ROOT . \PFAD_TEMPLATES . $parent . '/')
->assign('parentTemplateDir', \PFAD_TEMPLATES . $parent . '/')
->addTemplateDir(\PFAD_ROOT . \PFAD_TEMPLATES . $parent, $parent);
}
$this->addTemplateDir(\PFAD_ROOT . \PFAD_TEMPLATES . $tplDir . '/', $this->context);
Code:
$this->addTemplateDir(\PFAD_ROOT . \PFAD_TEMPLATES . $tplDir . '/', $this->context);
if ($parent !== null) {
self::$isChildTemplate = true;
$this->assign('tplDir', \PFAD_ROOT . \PFAD_TEMPLATES . $parent . '/')
->assign('parent_template_path', \PFAD_ROOT . \PFAD_TEMPLATES . $parent . '/')
->assign('parentTemplateDir', \PFAD_TEMPLATES . $parent . '/')
->addTemplateDir(\PFAD_ROOT . \PFAD_TEMPLATES . $parent, $parent);
}
Mfg