Wir verwenden ein selbst geschriebenes Plugin welches Kundennummern mit alphanumerischen Zeichen generiert. Das funktioniert im Grunde auch ganz gut. Einziges Problem ist, dass das Bare Theme in der documents/index.tpl numerische Kundennummern erwartet. Wir haben das Theme entsprechend angepasst:
Mir gefällt allerdings nicht, dass man nun das Plugin und das Theme getrennt voneinander pflegen muss. Kann ich die Anpassung am Block irgendwie in das Plugin integrieren?
Mir gefällt allerdings nicht, dass man nun das Plugin und das Theme getrennt voneinander pflegen muss. Kann ich die Anpassung am Block irgendwie in das Plugin integrieren?
Hat aber durchaus seinen Sinn. Ausgabe, Verarbeitung, Logik in eine PHP Datei zu stopfen macht bei einem großen Projekt keinen Sinn…
Danke, die Doku hatte ich natürlich schon gelesen.
Ich hatte mich etwas unvollständig ausgedrückt. Normalerweise subscribe ich *_PostDispatchSecure und füge dann meine Template-Verzeichnisse per ->addTemplateDir() an. Das funktioniert immer gut, im Fall der Dokumente hat das aber nicht geklappt.
Meine Lösung:
In \Shopware_Components_Document::render() gibt es diese Stelle:
Dort werden die Verzeichnisse der Template-Hierarchie explizit an Smarty übergeben. Ich habe mich dort reingehängt und meinen eigenen Ordner dazwischen gepackt:
class MyPlugin extends Plugin
{
// ...
public static function getSubscribedEvents()
{
return [
// ....
'Theme_Inheritance_Template_Directories_Collected' => 'onTemplateDirectoriesCollected',
// ....
];
}
public function onTemplateDirectoriesCollected(\Enlight_Event_EventArgs $args)
{
$data = $args->getReturn();
array_insert($data, __DIR__.'/Resources/views', count($data) - 1);
$args->setReturn($data);
}
// ...
}
Die Theme-Reihenfolge ist dann “Bare > MyPlugin > Responsive” und ich konnte ohne große Eingriffe meinen Block anpassen.
Funktioniert die Lösung?
Ja
Ist die Lösung wartbar?
Irgendwie so mittelmäßig.
Ich bin ganz frisch im Thema Shopware und wäre dankbar wenn das jemand mit Erfahrung beurteilen könnte. Es gibt bestimmt eine viel bessere Lösung die ich einfach übersehe
Hat aber durchaus seinen Sinn. Ausgabe, Verarbeitung, Logik in eine PHP Datei zu stopfen macht bei einem großen Projekt keinen Sinn…
Da gebe ich Dir vollkommen Recht. Mir ging es auch nicht darum alles in eine Datei zu packen, sondern darum, dass die Anpassung im Theme gemacht wurde und nicht durch das Plugin. Wenn ich also in 2 Jahren das Plugin irgendwo installiert hätte, dann hätte ich daran denken müssen dass zusätzlich noch eine Änderung im Theme erforderlich ist. Das kann man natürlich irgendwo hin schreiben, ist aber ja nicht das Gelbe vom Ei.