カートページの製品カスタムオプションを更新する方法


8

カスタムオプション付きのシンプルな製品があります。誰かがいずれかのオプションを選択して[カートに追加]をクリックすると、オプション付きの製品がカートに移動し、製品と選択されたオプションが表示されます。

ここで、Magentoのフローを変更する必要がある状況が発生します。カートページのオプション値を更新したい。具体的には、カートページのオプションを選択または変更できるようにしたいと思います。

これまでに行ったことは、アイテムがから表示されることを追跡したことtemplate/checkoput/cart/item/default.phtmlです。

カスタムオプションのドロップダウンを製品の行に配置し、ドロップダウンの近くに保存ボタンを配置しました。しかし、もう一度どうすれば更新できますか?

回答:


6

興味深い質問です。各アイテムに「更新」ボタンを追加するのではなく、一般的なMagentoの「カートの更新」ルーチンを使用することをお勧めします。

この場合、ドロップダウンの値がフォームと共に送信されると想定できます。次にcheckout_cart_update_items_after、イベントを観察し、更新されたオプションを取得してMage::app()->getFrontController()->getRequest()->getParam(...)、各項目の選択されたオプションを変更できます。

これは理論上の仮定にすぎませんが、完全なコードを期待していなかったと思います。それ以外の場合は、必要なものを正確に実行する商用の拡張機能があります。


ティム、あなたの助けに感謝します。このために、カスタムモジュールを作成しました。
サルバジャ2013年

ティム、sales_quote_collect_totals_beforeで投稿された値を取得することは可能ですか、その投稿されたデータで値を設定する必要があるカスタムオプションを作成しましたか?
Milople Inc 2013

私があなたを正しく理解しているかどうかはよくわかりませんが、引用アイテムオブジェクトから取得できます。引用アイテムオブジェクトは、引用とオブザーバーからそれぞれ取得できます。
user487772 2013年

4

私は私の仕事を成し遂げました、ここに私がそれをした方法があります:

私はjqueryとajaxを使用して、コードでアクションを実行するカスタムモジュールを作成しました。

  $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();

いずれかのボタンを押すと、このアクションはajaxとその完了を通じて呼び出されます!!!!

誰かがより詳細な解決策を必要とするならば、ここでそれを尋ねてください。


1
option_2が変更するものであることをどうやって知っていますか?
Nuno Furtado 2013年

1
よくやった!私はあなたの解決策が見つかるまでそれを理解するのに2日間立っていました。ありがとう!
Dan Ovidiu Boncut 2015年

@Sarvagya、私はmagento2でも同じことをしなければなりません。助けてもらえますか
surbhi agr

2

ショッピングカートに構成可能なMagento製品があり、カートから製品を削除して再度追加せずにオプションを更新したいとします。

次の手順でそれを達成するのは非常に簡単ですが、ここで完全なチュートリアルを書くことはできないので、Magentoを理解するには、Magentoを少し理解しておく必要があります。

詳細については、次のリンクを参照してください。http//inchoo.net/ecommerce/magento/updating-options-of-configurable-product-that-is-already-in-the-cart/

これがあなたのお役に立てば幸いです:)


magento2でこれを行う方法
surbhi agr

1

このコードを使用して、カスタムオプションでカートに商品を追加します。

$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();
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.