Wie aktualisiere ich benutzerdefinierte Produktoptionen auf der Warenkorbseite?


8

Ich habe ein einfaches Produkt mit benutzerdefinierten Optionen. Wenn jemand eine Option auswählt und auf In den Warenkorb klicken, wird das Produkt mit der Option in den Warenkorb verschoben, in dem das Produkt und die ausgewählte Option angezeigt werden.

Jetzt kommt die Situation, in der ich den Fluss von Magento ändern muss. Ich möchte diesen Optionswert auf der Warenkorbseite aktualisieren. Um genauer zu sein, möchte ich dem Kunden die Möglichkeit geben, Optionen auf der Warenkorbseite auszuwählen oder zu ändern.

Was ich bisher getan habe, ist, dass ich verfolgt habe, dass Elemente von gezeigt werden template/checkoput/cart/item/default.phtml.

Ich habe dort meine benutzerdefinierte Option Dropdown in einer Reihe von Produkten platziert und eine Schaltfläche zum Speichern in der Nähe der Dropdown-Liste platziert. Aber wie kann ich es wieder aktualisieren?

Antworten:


6

Interessante Frage. Ich schlage vor, dies nicht durch Hinzufügen der Schaltfläche "Aktualisieren" zu jedem Element zu tun, sondern durch Verwenden der generischen Magento-Routine "Warenkorb aktualisieren".

In diesem Fall können wir davon ausgehen, dass die Werte Ihrer Dropdown-Listen mit dem Formular übermittelt werden. Anschließend können Sie das checkout_cart_update_items_afterEreignis beobachten , aktualisierte Optionen abrufen Mage::app()->getFrontController()->getRequest()->getParam(...)und die ausgewählte Option für jedes Element ändern.

Dies ist nur meine theoretische Annahme, aber ich bin sicher, dass Sie keinen vollständigen Code erwartet haben. Ansonsten gibt es eine kommerzielle Erweiterung, die genau das tut, was Sie brauchen.


Danke Tim für deine Hilfe, ich habe es geschafft. Dafür habe ich ein benutzerdefiniertes Modul erstellt.
Sarvagya

Tim, ist es möglich, den gebuchten Wert in sales_quote_collect_totals_ zu erhalten, bevor ich die benutzerdefinierte Option darin erstellt habe, um den Wert mit diesen gebuchten Daten festzulegen?
Milople Inc

Ich bin mir nicht ganz sicher, ob ich Sie richtig verstehe, aber Sie können es aus dem Angebotselementobjekt abrufen, und das Angebotselementobjekt kann aus dem Angebot bzw. dem Beobachter abgerufen werden.
user487772

4

Ich habe meine Arbeit erledigt, hier ist, wie ich das gemacht habe:

Ich benutze nur jquery und ajax und habe ein benutzerdefiniertes Modul erstellt, in dem ich eine Aktion mit dem Code ausgeführt habe:

  $options = $item->getOptions();

  foreach ($options as $option) 
{ 

switch (true) 
    {

        case (strtolower($option->getCode()) == 'info_buyrequest') :
            $unserialized = unserialize($option->getValue());
            $unserialized['options'][2] = $info_option_value;
            $option->setValue(serialize($unserialized));
            break;

            case ($option->getCode() == "option_2") :
            $option->setValue($info_option_value);
            break;
    }

}
$item->setOptions($options)->save(); 
Mage::getSingleton('checkout/cart')->save();

Wenn jemand eine Taste drückt, wird diese Aktion über Ajax aufgerufen und fertig !!!!

Wenn jemand eine detailliertere Lösung benötigt, fragen Sie hier.


1
Woher wissen Sie, dass Option_2 geändert werden muss?
Nuno Furtado

1
Gut gemacht! Ich stand 2 Tage da, um es herauszufinden, bis ich deine Lösung fand. Vielen Dank!
Dan Ovidiu Boncut

@ Sarvagya, ich muss das gleiche in magento2 tun. können Sie bitte helfen
surbhi agr

2

Angenommen, wir haben ein konfigurierbares Magento-Produkt im Warenkorb und möchten seine Optionen aktualisieren, ohne das Produkt aus dem Warenkorb zu löschen und erneut hinzuzufügen.

Das ist mit den folgenden Schritten recht einfach zu erreichen, aber ich kann hier kein vollständiges Tutorial schreiben, daher sollten Sie mit Magento ein wenig vertraut sein, damit es funktioniert.

Weitere Informationen finden Sie unter folgendem Link: http://inchoo.net/ecommerce/magento/updating-options-of-configurable-product-that-is-already-in-the-cart/

Ich hoffe, dies wird dir helfen :)


Wie können wir dies in magento2
surbhi agr

1

Versuchen Sie, diesen Code zu verwenden, um ein Produkt mit benutzerdefinierten Optionen zum Warenkorb hinzuzufügen.

$cart   = Mage::getModel("checkout/cart");

$params = $this->getRequest()->getParams();
$product =Mage::getModel('catalog/product')->load($product_id);

try{
$cart->addProduct($product,$params);
$cart->save();
}catch (Exception $ex) {
echo $ex->getMessage();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.