2

指定した商品が関連商品にリストされているすべての商品を取得する必要があります。ですので、メインの商品を削除した後、不要な商品をカートから削除しようと思います。

すべてのカート項目をループするより簡単な方法はありますか?

アドバイスをありがとう。

4

2 に答える 2

1

もし私があなただったら、最初から商品を追加せず、代わりに checkout_cart_product_add_after イベントにオブザーバーを使用するかもしれません。予想される製品と照らし合わせて製品を確認してください。RS の方法を使用して、見積もりを処理し、カート内の製品の数量を確認します。商品にカスタムオプションを追加して、顧客が無料のグッズを持っているかどうかを知らせます. これは適切かもしれませんMagento - ユーザー入力に基づく見積もり/注文の商品アイテム属性

次に、このイベント sales_convert_quote_to_order にオブザーバーを追加します。このオブザーバーは、数量をチェックし、このようなものを適応させて、顧客に製品を提供することができます.シングルトンを取得してオブザーバーを使用するだけで、ダウンロード可能な製品のMagentoでのチェックアウトをスキップする ため、この方法は、カートプロセス中に多くの追加と削除を行うよりもはるかに安価です. . また、見た目もずっと良くなります。

必要に応じて実装を試みますが、製品のセットアップが面倒なので、サイトとデータベースのコピーを使用します。

ps。このイベントも監視する必要があるかもしれません checkout_cart_update_items_before

ps。ps。たぶんコメントする前に確認する必要があります笑。ロルはここから追放されますか?

于 2012-10-29T22:58:46.690 に答える
1

私が考えることができる唯一の2つの方法は次のとおりです。

  1. 商品は主な商品と密接に関連し、依存しているように見えるため、代わりにバンドル商品の作成を検討することをお勧めします。また、カートに 3 つの商品があり、そのうちの 1 つ (主な商品) を削除すると、カートが空になり、不明な理由で 2 つの関連商品 (自動的に削除された) がまだ必要であるという顧客を混乱させる可能性があります。

  2. 上記のように、カート内のすべての製品を削除ループでループします(以下のコードを参照)

app/local/RWS/AutoDeleteRelatedCartProducts/etc/config.xml に作成

<config>
    <global>
        <models>
            <autodeleterelatedcartproducts>
                 <class>RWS_AutoDeleteRelatedCartProducts_Model</class>
            </autodeleterelatedcartproducts>
         </models>
    </global>
    <frontend>
      <events>
        <sales_quote_remove_item>
            <observers>
                <autodeleterelatedcartproducts>
                    <type>singleton</type>
                    <class>autodeleterelatedcartproducts/observer</class>
                    <method>removeQuoteItem</method>
                </autodeleterelatedcartproducts>
            </observers>
        </sales_quote_remove_item>
      </events>
    </frontend>
</config>

app/local/RWS/AutoDeleteRelatedCartProducts/Model/Observer.php に作成します

<?php

class RWS_AutoDeleteRelatedCartProducts_Model_Observer
{
    public function removeQuoteItem(Varien_Event_Observer $observer)
    {
        //get deleted product
        $delete_product = $observer->getQuoteItem()->getProduct();

        // Get all related products
        $related_products = $delete_product->getRelatedProductCollection();

        // get all related product id and save in array
        $related_product_ids = array();
        foreach($related_products as $product){
            $related_product_ids[] = $product->getId(); // double check to make sure this product_id 
        }


         foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item ) 
         { 
              // if getId is a related product remove it
              if(in_array($item->getId(), $related_product_ids))
                    Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save(); 
         }

    }
}

?>

続きを読む @

カート内の削除されたアイテムのオブザーバー

Magento および関連製品に関するヘルプ

Magento - 製品がカートからすでに削除されているかどうかを確認する方法

http://www.magentocommerce.com/boards/viewthread/30113/

于 2012-10-28T13:08:19.923 に答える