2010-06-17 36 views
4

我一直用這個了一整天,但我無法找到任何解決辦法:Magento:兩次添加產品到購物車,具有不同的屬性!

我有一個產品(鏡頭),它具有相同的屬性,但用戶可以選擇一個屬性爲一隻眼睛設置和其他屬性設置爲了另一個。

在前端,我知道了,看到它here

因此,用戶可以選擇左眼或右眼的屬性,但它是同一產品。

我構建了一個函數,它應該在購物車中(保存前)購買一個產品,添加其他一組屬性,因此購物車中應該有兩個產品。會發生什麼是有兩個產品,但具有相同的屬性集?

下面是函數的代碼片段:

$req = Mage::app()->getRequest(); 
$request[’qty’] = 1; 
$request[’product’] = 15; 
$request[’uenc’] = $req->get(’uenc’); 
$request[’options’][1] = 1; 
$request[’options’][3] = 5; 
$request[’options’][2] = 3; 
$reqo = new Varien_Object($request); 
$newitem = $quote->addProduct($founditem->getProduct(), $reqo); 

//add another one ------------------------------------------ 

$request[’qty’] = 1; 
$request[’product’] = 15; 
$request[’uenc’] = $req->get(’uenc’); 
$request[’options’][1] = 2; 
$request[’options’][3] = 6; 
$request[’options’][2] = 4; 
$reqo = new Varien_Object($request); 
$newitem = $quote->addProduct($founditem->getProduct(), $reqo); 

或者另一個測試,與其他一些功能(再次,產品附加值,有2數量,但相同的屬性...):

$req = Mage::app()->getRequest(); 
$request[’qty’] = 1; 
$request[’product’] = 15; 
$request[’uenc’] = $req->get(’uenc’); 
$request[’options’][1] = 2; 
$request[’options’][3] = 6; 
$request[’options’][2] = 4; 

$product = $founditem->getProduct(); 

$cart = Mage::getSingleton(’checkout/cart’); 
//delete all first… 
$cart->getItems()->clear()->save(); 
$reqo = new Varien_Object($request); 

$cart->addProduct($founditem->getProduct(), $reqo); 
$cart->getItems()->save(); 

$request[’options’][1] = 1; 
$request[’options’][3] = 5; 
$request[’options’][2] = 3; 

$reqo = new Varien_Object($request); 

$cart->addProduct($founditem->getProduct(), $reqo); 
$cart->getItems()->save(); 

我真的不知道有什麼更多的事情要做,請任何意見,這是在Magento我的第一個模塊...

謝謝你,彼得

+0

請編輯您的代碼並使用「代碼示例」功能設置代碼格式。 – greg0ire 2010-06-17 16:21:14

+0

屬性集在Magento中具有相當特殊的含義。你的意思是他們可以爲產品選擇一個選項? – 2010-06-18 02:44:57

+0

是的,他們可以選擇產品的選項。對於每個眼睛相同的選項。 你可以在這裏看到它:http://connecta.si/clarus/index.php/featured/acuvue-oasys-for-astigmatism.html – Peter 2010-06-18 07:42:48

回答

3

轉到課程Mage_Sales_Model_Quote 並搜索方法getItemByProduct($product)並使其始終爲return false;。 請注意,這可能會干擾產品購物車中允許的minimum & maximum

1

我認爲你的主要問題是你如何設置產品的屬性應該是像鏡片強度右眼,鏡片強度左眼,鏡片厚度右眼,鏡片厚度左眼。一個屬性集可以容納您需要的不同值

如果您想使用單獨的屬性集,您可以使用捆綁產品,即所有產品都是捆綁銷售,並且您需要向購買時添加鏡片,鏡片是與不同的屬性集和定價(可以設置爲none)

也許這些都不是一個完美的修復,但與一些CSS和模板它應該能夠看夠專業

0

您可以創建一個觀察者

<catalog_product_load_after> 
      <observers> 
        <subscription> 
         <type>singleton</type> 
        <class>Itdelight_Subscription_Model_Observer</class> 
        <method>catalogProductLoadAfter</method> 
       </subscription> 
     </observers> 
</catalog_product_load_after> 

然後在產品中添加您的獨特屬性。

public function catalogProductLoadAfter(Varien_Event_Observer $observer){ 
    $action = Mage::app()->getFrontController()->getAction(); 
    if ($action->getFullActionName() == 'checkout_cart_add') 
    { 
     if ($options = $action->getRequest()->getParam('spy')) 
     { 
      $product = $observer->getProduct(); 
      $product->addCustomOption('product_attribute','subscription'); 
      $a=$product->getCustomOption('product_attribute'); 


} 
相關問題