Hallo zusammen, ist es moeglich die Backend Standardmenuepunkte (in meinem Fall Hersteller) ueber ein Plugin zu erweitern? Ich möchte quasi noch ein Flag setzen per Checkbox, ob der Hersteller eine besondere “Marke” ist. Im 3.5 System hab ich’s in den jeweiligen php und tpl Datein angepasst aber im Optimalfalle wuerde ich das ganze jetzt gerne ueber ein Plugin loesen hab aber gerade keinen Plan ob das technisch moeglich ist die vorhandene Menuestruktur zu ueberlagern. Oder muss ich dann ein eigenen Menuepunkt anlegen um dieses Flag nem Hersteller zuzuweisen??? Gruß Matze
Hi Matze, grundsätzlich sind die Backend-Module erweiterbar. Ein Beispiel dazu findet sich (normalerweise) im Shopware-Wiki, ich kann es aber auch gerade nur im Google-Cache finden. Das sollte dir weiterhelfen. lG Daniel
Servus, ok ich glaube das hat bestimmt auch n grund gehabt, das man es nur noch im Cache findet… habe mich jetzt an die Variante gehalten, welche in den Beispiel-Plugins umgesetzt wird jedoch habe ich jetzt das gleiche Problem wie in diesem Beitrag… Das Attribut wird erstellt jedoch komm ich an die Backend Views nicht wirklich ran, sodass ich es auch irgendwie bearbeiten kann. Aber kann es sein das es mit der 4.0.4 besser klappen wird(SW-4077 Probleme im Zusammenhang mit dem Erweitern der Custom-Models in eigenen Plugins behoben)??? Oder gibt es jetzt schon irgendeinen hilfreichen Tipp für mich… Gruß Matze
Hallo zusammen, hier ein paar kleine Tipps: Zum Erweitern von Backend Modulen hängt ihr euch überall an folgende Stellen ein: public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Backend\_Order', 'loadBackendModule' ); $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Backend\_Article', 'loadBackendModule' ); ... return true; }
Hier ändert sich immer nur das letzte Wort, also der Controller. Im ersten Beispiel wird das Bestellungsmodule erweitert, Im zweiten Beispiel das Artikel Moduel. Jetzt müssen eure JavaScript Erweiterungen geladen werden: public function loadBackendModule(Enlight\_Event\_EventArgs $arguments) { $arguments-\>getSubject()-\>View()-\>addTemplateDir( $this-\>Path() . 'Views/' ); //Hier lädst du alle Javascript Dateien die ein Override enthalten. if ($arguments-\>getRequest()-\>getActionName() === 'load') { $arguments-\>getSubject()-\>View()-\>extendsTemplate( 'backend/order/view/detail/my\_window.js' ); } //Hier erweiterst du die APP.JS um eigene Komponenten (Models, Views, Stores, Controllers) hinzuzufügen if ($arguments-\>getRequest()-\>getActionName() === 'index') { $arguments-\>getSubject()-\>View()-\>extendsTemplate( 'backend/order/my\_app.js' ); } }
Der obere Block lädt alle Dateien die einen Override enthalten (Wie z.B. wenn ihr das Artikel/Order Detail Window überschreibt um einen neuen Tab hinzu zufügen). Im zweiten Block ladet Ihr eure eigene Application Javascript datei. Hier könnt ihr eigene Komponenten hinzufügen damit diese von der Application mit geladen werden und zur Verfügung stehen. Application.js: (Beispiel um eigene Komponenten hinzuzufügen) //{block name="backend/order/application" append} //{include file="backend/order/controller/my\_plugin.js"} //{include file="backend/order/model/my\_plugin/my\_plugin.js"} //{include file="backend/order/store/my\_plugin/list.js"} //{include file="backend/order/view/my\_plugin/list.js"} //{/block}
Window.js: (Hier wird der Override für das Fenster gemacht) //{block name="backend/order/view/detail/window" append} //\<==== Diese Zeile ist wichtig! //{namespace name=backend/order/view/main} Ext.define('Shopware.apps.Order.view.detail.MyWindow', { override: 'Shopware.apps.Order.view.detail.Window', //Überschreiben der standard funktion welche das Tab Panel erzeugt. createTabPanel: function () { var me = this; var tabPanel = me.callParent(arguments); tabPanel.add(DEINE KOMPONENTE HINZUFÜGEN) return tabPanel; } });
ich kriege die Meldung Uncaught TypeError: tabPanel.add is not a function Wieso ? ich habe es nichts anders gemacht als bei dir