0

チェックアウト/カート/ページで次のことを行いたい:

訪問者が $100 以上の商品を購入すると、無料の商品を追加します。無料の製品は、指定されたカテゴリのものです。購入した商品の下に表示されます。どうやってするの?

4

2 に答える 2

0

最も簡単な方法は、オブザーバーで保存された見積もりをリッスンし、その方法で無料の製品を追加/削除することです。まず、Yrcrz/AddFreeProduct という名前の新しいモジュールをセットアップします。config.xml で、次を追加します。

<?xml version="1.0"?>
<config>
    <modules>
        <Yrcrz_AddFreeProduct>
            <version>0.0.1</version>
        </Yrcrz_AddFreeProduct>
    </modules>
    <global>
        <events>
            <sales_quote_save_before>
                <observers>
                    <Yrcrz_AddFreeProduct_Observer>
                        <type>singleton</type>
                        <class>Yrcrz_AddFreeProduct_Model_Observer</class>
                        <method>sales_quote_save_before</method>
                    </Yrcrz_AddFreeProduct_Observer>
                </observers>
            </sales_quote_save_before>
        </events>
    </global>
</config>

sales_quote_save_beforeこれは、リッスンするイベントを定義します。次に、Observer.php ファイルを追加し、これを追加します。

<?php

class Yrcrz_AddFreeProduct_Model_Observer
{
    public function sales_quote_save_before(Varien_Event_Observer $observer)
    {
        $quote = $observer->getQuote();
        $freeProductId = 182;
        $threshold = 100;
        $freeProductExists = false;
        $items = $quote->getAllItems();
        foreach ($items as $item) {
            if ($item->getProduct()->getId() == $freeProductId) {
                $realGrandTotal = $quote->getGrandTotal() - $item->getRowTotalInclTax();
                if ($realGrandTotal < $threshold) {
                    $quote->removeItem($item->getId());
                    return false;
                }
                $freeProductExists = true;
            }
        }

        if ($freeProductExists || !$items) {
            return false;
        }

        $cart = Mage::getSingleton('checkout/cart');
        if ($quote->getGrandTotal() >= $threshold) {
            $product = Mage::getModel('catalog/product')->load($freeProductId);
            if ($product && $product->getId()) {
                $params = array();
                $cart->addProduct($product, $params);
                $cart->save();
                Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
            }
        }
    }
}

このコードは、しきい値 ($100) に達しているかどうかを確認し、達している場合は製品を追加します。総合計がしきい値を下回っている場合、または製品がない場合も、無料の製品が削除されます。で無料の製品の ID を定義する必要があることに注意してください$freeProductId

于 2013-01-13T13:23:58.657 に答える
0

MageWorld Free Gift 拡張機能をご覧ください。あなたの説明から、私はそれがあなたが必要とすることをすると信じています。ただし、延長は無料ではありません。 http://www.mage-world.com/free-gift-magento-extension.html

この機能を自分で開発したい場合は、ショッピング カートのプロモーション ルールを拡張することをお勧めします。ルール自体は、注文が $100 を超えているかどうかをチェックします。指定したカテゴリから無料の製品を選択する部分を開発するだけです。

于 2013-01-13T12:59:38.320 に答える