Hallo, Gibt es für SW5 schon ein Beispiel wie man die Artikelliste erweitert? Der EXTJS Teil ist soweit klar. Das Problem besteht im herbeiführen der Zusatzinformationen, welche angezeigt werden soll. Früher was dies mit erweitern des SQL vom Backend Controller möglich. Dies klappt nun ja nicht mehr. Hier wäre ich für ein Beispiel dankbar. Z.b. Ein Attributfeld vom Artikel und evtl ein komplett anderes Feld von einer andere/eigenen Tabelle Besten Dank
Hallo, Das Attribut kannst du dank Multiedit bereits im Standard anzeigen. Auch andere Felder der Artikel sind verfügbar. Das haben wir mit SW5 so implementiert das man da kein Plugin braucht. Zur Programmierung kann ich dir jedoch nichts sagen. Grüße Moritz
Guten Morgen Moritz, danke für den Hinweis, das ist schon mal suüer für Artikelbezogenen Daten aus den Standard Tabellen. Aber ich brauche trotzdem eigene Felder, welche ich am besten auf die gleiche Art integrieren kann. Von der Theorie muss engine/Shopware/Components/MultiEdit/Resource/Product/DqlHelper.php erweitert werden. Am besten durch ein eigenens Plugin.
okay, zwei Eintiegspunkt habe ich bereits gefunden: // Allow users to add his own columns $result = $this-\>getEventManager()-\>filter( 'SwagMultiEdit\_Product\_DqlHelper\_getColumnsForProductListing\_filterColumns', $result, array('subject' =\> $this, 'defaultColumns' =\> $shownColumns) );
// Allow users to add his own joins depending on the passed tokens $join = $this-\>getEventManager()-\>filter( 'SwagMultiEdit\_Product\_DqlHelper\_getJoinColumns\_filterColumns', $join, array('subject' =\> $this, 'tokens' =\> $tokens) );
Werde ich mal testen.
Ein neues Feld ohne Bezug habe ich nun über das erste Event integriert. Jetzt fehlt mir noch der Inhalt. Mein Feld soll Statistikwerte anzeigen. Verkäufe in X Tagen. Entweder über ein Joint zu den Bestellungen oder über ein eigenes Feld welches per Cronjob immer gefüllt/aktualisiert wird.
Hi, der einfachste Weg sollte dann ja tatsächlich ein Attribut sein, dass du über einen Cronjob befüllst. Du kannst ja in der Multi-Edit-Liste einfach ein zusätzliches Attribut anzeigen, wenn du auf den kleinen Pfeil im Column-Header klickst. Dann bräuchtest du gar nix anpassen. Ansonsten gibt es eigentlich unterschiedliche Methoden, an die du dich hängen kannst, um die Produkte für die Anzeige zu manipulieren: * \Shopware_Controllers_Backend_ArticleList::filterAction * \Shopware\Components\MultiEdit\Resource\Product::filter (kannst den Service im Container dekorieren). Besten Gruß, Daniel
Hi, ich greife nochmal die Frage auf. Ich bin über Enlight_Controller_Action_Backend_ArticleList_Filter Event gegangen. Mein Ziel ist es die Artikel einfach anders per OrderBy zu sortieren. Dabei möchte ich aber wie folgt Sortieren: ORDER BY attributes.attr2 ASC, LENGTH(attributes.attr1) ASC, attributes.attr1 ASC Ich sorge in meinem EventListener dass die FilterAction durch meine eigene ersetzt wird und versuche dann $result = $resource->filter($ast, $offset, $limit, $sort); mit eigenem $sort Parameter zu belegen. Leider scheint dies nicht zu gehen, da man per $sort nur einen OrderBy Element und kein Array mitgeben kann (irgendwann im Aufrufkette landet man bei Filter::getFilterQueryBuilder der kein Array verarbeiten kann). Wenn man über Hooks/Events an getFilterQueryBuilder sich per Hook anbinden könnte, würde ich dann vermutlich mit der addOrderBy von der QueryBuilder Klasse weitere orderBy Elemente einfügen können. Nur wie komme ich dran ? Oder gibt es da einen anderen Ansatz ? Beste Grüße Edin