Überschreiben von ExJS Dateien

Hallo zusammen, ich habe ein Plugin entwickelt. Zur Umsetzung des Features habe ich drei ExtJS Dateien angepasst. Damit das ganze in einem Plugin funktioniert müsste ich wissen, wie ich diese Dateien über mein Plugin lade/überschreibe ohne die Originale manuell zu überschreiben. Originale liegen in - /templates/_default/backend/article/view/detail/ - /templates/_default/backend/article/model/ Der nächste Punkt, wo ich nicht weiter weiß ist eine Template-Überschreibung. Und zwar würde ich gerne die /templates/_default/frontend/detail/buy.tpl ersetzen durch eine buy.tpl aus meiner Plugin-verzeichnis-Struktur. Schonmal vielen Danke für eure Hilfe!

Hallo @nauralos, zu 1.) Backend-Erweiterung Das geht was du vor hast, geht relativ einfach über unser Block- und Vererbungssystem im Template. Wir haben für diesen Fall auch schon ein Tutorial zur Verfügung gestellt, welches im Kundenmodul das Grid erweitert. In diesen Plugin wird auch aufgezeigt, wie man Template-Dateien lädt: http://wiki.shopware.de/Einsteiger-Schu … -JS_app.js Ich denke in diesen Tutorial findest du alle relevanten Informationen, die du benötigst. zu 2.) Frontend-Template überschreiben Das Ganze funktioniert auch über das Vererbungssystem der Template-Engine. Du müsstest dir ein neuen Event-Handler auf “Enlight_Controller_Action_PostDispatch_Frontend_Detail” registrieren, prüfen, ob als Action “index” aufgerufen wurde und lädst deine eigene Detailseite. Wichtig hierbei ist, dass deine Detailseite nicht “detail/index.tpl” heißt sondern z.B “detail/[deinPluginName]_index.tpl”. Hier kannst du dann den Block “frontend_detail_index_buybox” überschreiben, um deine eigene “buy.tpl” zu laden. Hier gilt das Gleiche wie für eine eigene Detailseite - der Name muss von dem im Stand abweichen, da sonst die Template-Vererbung die falsche Datei lädt. Zu diesen Thema kann ich dir folgendes Tutorial an die Hand geben, wo die meisten Steps, die du durchführen musst, dokumentiert sind: http://wiki.shopware.de/Einsteiger-Deta … 9_870.html Viele Grüße, Stephan Pohl :shopware:

Hallo Stephan Pohl, erstmal danke für die ausführliche Antwort. Es bleiben für mich aber leider immernoch eine Frage offen, die das Thema JS betrifft. fields:[//{block name="backend/customer/model/list/fields"}{/block} { name:'id', type:'int' }, { name:'number', type:'string' }, In dem Tutorial ist super beschrieben, wie ich den Block überschreibe. Was in meinem Plugin notwengid wäre ist die Überschreibung von bswp. { name:'number', type:'string' }, sodass es zu { name:'number', type:'int' }, wird. Vielleicht hilft es bzgl. des Verständnisses, wenn ich kurz erläutere was das Plugin können soll… Die Felder „Mindestabnahme“, „Maximalabnahme“ und „Staffelung“ sind als Integer definiert. Ich möchte den Typ offen lassen und daher erstmal mit Strings arbeiten, die im späteren Verlauf unterschieden werden nach Integer, Float oder String, wobei String nur bei manuell definierten Staffelungen vorkommt. Beispiel zu manuell definierten Staffelungen: Mindestabnahme: 0,1 Maximalabnahme: 6 Staffelung: 0,1|0,1|0,3|0,4|0,5|0,5|0,5|0,5|1 Ergebnis: 0,1 - 0,2 - 0,3 - 0,6 - 1 - 1,5 - 2 - 2,5 - 3 - 4 - 5 - 6 (letzte definierte Staffelung - im Beispiel also 1 - wird fortgeführt bis die Maximalabnahme erreicht ist) Damit dies umgesetzt werden kann muss der Typ entsprechend modifiziert werden. Beispiel in /templates/_default/backend/article/model/detail.js Die 3 Felder: { name: 'purchaseSteps', type: 'int', useNull: true }, { name: 'minPurchase', type: 'int', useNull: true }, { name: 'maxPurchase', type: 'int', useNull: true }, Sollten so überschrieben werden: { name: 'purchaseSteps', type: 'string', useNull: true }, { name: 'minPurchase', type: 'string', useNull: true }, { name: 'maxPurchase', type: 'string', useNull: true }, Abschließend ergibt sich dann zusätzlich noch eine weitere Frage: Ist es möglich z.B. ein /engine/Shopware/Models/Article/Detail.php definierte Object-Relational mapping zu überschreiben? @ORM\Column(name="purchasesteps", type="integer", nullable=true) sollte überschrieben werden zu @ORM\Column(name="purchasesteps", type="string", nullable=true) Schonmal danke für die nächste Rückmeldung! Gruß Patrick

Hallo nauralos, es ist nicht möglich die Models einfach zu überschreiben. Es ist aber möglich ein Model um eigene Felder zu erweitern. Wie das funktioniert ist hier Dokumentiert: http://wiki.shopware.de/Einsteiger-Schu … 2_871.html Dann kannst du dich über das von Stephan Pohl erwähnet Event System einhängen und das Feld an den von dir gewünschten Stellen auswerten,anzeigen etc. Wie du das Event System verwenden kannst findest du hier: http://wiki.shopware.de/Shopware-4-Even … 1_866.html viele Grüße, Andreas Wolf :shopware:

Hallo Andreas, wenn ich das Object-Relational Mapping nicht überschreiben kann bringt mir das ganze nichts, weil dann schon im Backend der „Spaß“ nicht funktioniert. Eigene Felder finde ich in dem Fall sehr sinnfrei. Mein Plugin wäre dann ein komplett neues Staffelungs-System und ich könnte keinerlei Funktionen von Shopware weiterverwenden, nur weil ich drei neue Felder mit anderen Namen verwenden müsste. Gibts die Möglichkeit von eurer Seite das ganze ein Stück weit „aufzubrechen“, um die Updatefähigkeit zu erhalten? Meines Erachtens funktioniert euer System auch, wenn die ORMs die entsprechenden Felder als string deklarieren und ExtJS das Gleiche. Bei allen Datenbank-Zugriffen finden sowieso Typecasts statt, die wiederum per Plugin (durch Hook) überschreibbar wären. Ich würde euch da gerne mal eine Anleitung zuschicken, welche Anpassungen ich gemacht habe, um nur im Backend mein Plugin umzusetzen. Würde mich über Feedback freuen, wie man das am Besten (ggf. in Zusammenarbeit) umsetzen könnte/sollte/würde. Liebe Grüße Patrick

*schieb*

Hallo, das macht ja keinen Sinn, die Standard-Felder per Plugin-System modifierbar zu machen. Damit würden wir ja immer Gefahr laufen, dass verschiedene Plugins die selben Felder modizieren und somit inkompatibel sind oder aber dass zukünftige Updates von uns mit einer veränderten Standard-Datenbank-Struktur kollidieren. Erkläre doch noch einmal genauer, was du konkret vor hast - vielleicht lässt sich das ja auf anderem Weg elegant lösen.

Hallo Stefan, in meinen Augen (und in den Augen von manchen Händlern) schränkt euer Staffelungs-System sehr ein. Man kann sowohl bei der Mindestabnahme, als auch bei Maximalabnahme und Staffelug nur Integer (für Nicht-Programmierer: Ganzzahlen) eingeben. Nun gibt es einige Geschäftsmodelle/Branchen bei denen es üblich ist z.B. Meterware auch in 0,5 Meter Schritten zu verkaufen oder Ware ach Gewicht in Tonnen in Schritten von 0,1 … Man stößt auf verschiedene Probleme … Hier mal 3 Links dazu, die mich animiert haben dieses Plugin in Angriff zu nehmen… Erstaunlicherweise hat bereits jemand so starkes Interesse daran, dass er mir eine Step-by-Step Anleitung für die Backend-Modifikation abgekauft hat (ich ging zu diesem Zeitpunkt noch davon aus, dass mein Vorhaben möglich ist - dies wäre mein erstes Plugin) … 1. allgemein-f25/problem-mit-preisberechnung-bei-schweren-gutern-t12214.html 2. allgemein-f25/mehrfach-staffelung-oder-variable-vpes-t11648.html 3. http://jira.shopware.de/Widgets/Jira/?ticket=SW-4657 Mir ist es eigentlich relativ egal ob jetzt ein Plugin von mir dies ermöglicht oder ob ihr es fest einbaut, ich bin auch gerne bereit euch meine Codes zur Verfügung zu stellen. Mir ist einfach wichtig die Updatefähigkeit zu erhalten … Wenn da dann über ein Plugin nicht geht, muss es wohl auf anderem Weg geschehen. Daher auch die Frage, ob man das gemeinsam integriert… Freue mich auf Feedback von Shopware. Danke!

Hallo, ich lasse das Thema mal durch die Entwicklung einschätzen - wenn du schon Sourcecode geschrieben hast, kannst du mir den gerne an forum@shopware.de schicken oder besser als Pull-Request bei Github einstellen.

Ok werde ich die Tage tun.

Gibt’s hierzu irgendwelche Neuigkeiten? Wir brauchen diese Funktionalität. Langsam auch ziemlich dringend … :-)

@shopware Team: Gibt es hier ein Update? Ich denke, es wäre wichtig, die Unterstützung von Teileinheiten in das Shopware-Backend zu integrieren. Dies ist eine Basis-Funktionalität, die nicht per Plugins nachgerüstet werden sollte. Bringt man dafür Plugins ins System, wird Shopware unsauber verbogen, damit die UI den Basis-Anforderungen für Einheiten mit Komma-Werten entsprechen kann. Es gibt mittlerweile mindestens 3 Tickets zu diesem Thema: http://jira.shopware.de/?ticket=SW-4657 http://jira.shopware.de/?ticket=SW-7581 http://jira.shopware.de/?ticket=SW-8232 @nauralos: Hattest Du Deinen Quellcode dazu eigentlich auf Github gepushed? Ich freu mich über Updates zu diesem Thema :slight_smile: