Hallo, für ein Plugin muss ich bei der Berechnung des Warenkorb Inhaltes zusätzlich noch eine weitere kleine Berechnung hinzufügen. Dafür muss ich aber wissen, wo genau in welcher Datei die Berechnung stattfindet (und wie ich die Berechnung in meinem Plugin einfügen kann). Also ich meine damit die Stelle wo die ganzen Artikeln aufgelistet werden und unten steht ja die Summe aller Artikeln, z.B. bei checkout/cart. Wo wird da die Berechnung für die Summe gemacht? Es wäre mir sehr geholfen, wenn jemand mir da behilflich sein könnte. Vielen Dank…
Stichwort REST API http://wiki.shopware.de/Neue-Shopware-A … 9_721.html
Bist du sicher? Ich dachte eher es ist in dem Ordner core in einer der php Dateien, wo die Berechnung stattfindet… Da gibts ja die Datei sBasket.php, ich dachte vielleicht ist es diese Datei was ich brauche…
Geht aber auch einfacher, Du ziehst dir das einfach direkt mit nem dispatcher… - die nötigen Daten kennt Smarty schon, du musst sie einfach nur nochmal entnehmen. public function install() { $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Checkout', 'onPostDispatchCheckout'); return true; } public function onPostDispatchCheckout(Enlight\_Event\_EventArgs $arguments) { /\*\*@var $controller Shopware\_Controllers\_Frontend\_Detail\*/ $controller = $arguments-\>getSubject(); // Zugriff auf das Request-Objekt $request = $controller-\>Request(); // Zugriff auf das Response-Objekt $response = $controller-\>Response(); if (!$request-\>isDispatched() || $response-\>isException() || $request-\>getModuleName() != 'frontend') { // Der Request muss vollstaendig abgearbeitet sein // Es darf keine Exception aufgetreten sein // Das Plugin soll nur im Frontend aktv sein, andernfalls return; } $Config = $this-\>Config()-\>toArray(); $view = $controller-\>View(); $CartFooterSum = $view-\>getAssign('CartFooterSum'); $sBasket = $view-\>getAssign('sBasket'); // Mit dem Array $sBasket arbeitest du dann, $CartFooterSum entspricht der Summe des gesamten Warenkorbs, bin aber grad nicht mehr sicher, obs brutto oder netto war return true; }
Danke… nun bekomme ich die Summe (Amount) ausgegeben… Aber wie schaffe ich es den Wert mit einem anderen Wert zu überschreiben. public function onPostDispatchCheckout(Enlight\_Event\_EventArgs $arguments) { /\*\*@var $controller Shopware\_Controllers\_Frontend\_Detail\*/ $controller = $arguments-\>getSubject(); // Zugriff auf das Request-Objekt $request = $controller-\>Request(); // Zugriff auf das Response-Objekt $response = $controller-\>Response(); if (!$request-\>isDispatched() || $response-\>isException() || $request-\>getModuleName() != 'frontend') { return; } $Config = $this-\>Config()-\>toArray(); $view = $controller-\>View(); $CartFooterSum = $view-\>getAssign('CartFooterSum'); Shopware()-\>Debuglogger()-\>info('CartFooterSum: ' .$CartFooterSum); $sBasket = $view-\>getAssign('sBasket'); $my\_sBasket = $sBasket['Amount']; // Amount = Summe Shopware()-\>Debuglogger()-\>info('Summe: ' .$my\_sBasket); //Summe ändern $view-\>$sBasket['Amount'] = 11; // Ändern des Wertes klappt nicht! //sAmount = Gesamtsumme, hier klappt das ändern des Wertes $wert = $view-\>sAmount = 25.99; $view-\>assign('sAmount', $wert); // oder einfach nur.. // $view-\>sAmount = 25.99; return true; }
Wie kann ich den Wert von ‚Amount‘ ändern und den dann auf der chekout/cart sichtbar machen?
Was mache ich hier falsch? Ich will beispielsweise den Wert von ‘AmountWithTaxNumeric’ das sich im array ‘sBasket’ befindet ändern. Probiert habe ich folgendes… public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Checkout', 'onPostDispatchCheckout' ); } public function onPostDispatchCheckout(Enlight\_Event\_EventArgs $arguments) { /\*\*@var $controller Shopware\_Controllers\_Frontend\_Detail\*/ $controller = $arguments-\>getSubject(); $request = $controller-\>Request(); $response = $controller-\>Response(); if (!$request-\>isDispatched() || $response-\>isException() || $request-\>getModuleName() != 'frontend') { return; } $Config = $this-\>Config()-\>toArray(); $view = $controller-\>View(); $sBasket = $view-\>getAssign('sBasket'); //AmountWithTaxNumeric $amountWithTaxNumeric = $sBasket['AmountWithTaxNumeric']; Shopware()-\>Debuglogger()-\>info('amount With Tax Numeric (original): ' .$amountWithTaxNumeric); // das klappt.. $view-\>assign($sBasket['AmountWithTaxNumeric'], 2.98); $amountWithTaxNumeric2 = $sBasket['AmountWithTaxNumeric']; Shopware()-\>Debuglogger()-\>info('amount With Tax Numeric (nach assign): ' .$amountWithTaxNumeric2); // das klappt nicht, es wird wieder der alte Wert angezeigt NICHT 2.98 return true; }
Ich weiß grad nicht warum ich den Wert von ‘AmountWithTaxNumeric’ nicht ändern kann?