2013-01-13 46 views

回答

0

你可以看看MageWorld Free Gift擴展。從你的描述來看,我相信會做你需要的。但是,擴展並不是免費的。 http://www.mage-world.com/free-gift-magento-extension.html

如果您想自己開發此功能,我建議您擴展購物車促銷規則。規則本身將檢查訂單是否超過$ 100。您只需開發將從您指定的類別中選擇免費產品的零件。

+0

如果我想延長購物車促銷規則,我很抱歉,我是新來的mangento。該規則本身將檢查訂單是否超過100美元。你能否給我更多的細節。謝謝 – stack2013110

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),如果是它增加了一個產品。如果總計低於門檻或者沒有產品,它也會刪除免費產品。請注意,您需要使用$freeProductId來定義免費產品的ID。

+0

非常感謝,當我創建模塊時,我不知道在哪裏放置Observer.php文件?謝謝 – stack2013110

+0

Observer.php應該放在app/code/local/Yrcrz/AddFreeProduct/Model/ – 1000Nettles

+0

我還需要在\ app \ etc \ modules.am中創建YrcrzAddFreeProduct.xml。 – stack2013110

相關問題