Magento:将产品两次添加到购物车,具有不同的属性!

时间:2010-06-17 16:11:06

标签: attributes magento cart

我一直在使用这一整天,但我找不到任何解决方案:

我有一个产品(镜头),它具有相同的属性,但是用户可以为一只眼睛选择一个属性集,为另一只眼睛选择另一个属性。

在前端,我把它弄好了,看到它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的第一个模块......

谢谢你,彼得

3 个答案:

答案 0 :(得分:3)

转到课程Mage_Sales_Model_Quote 并搜索方法getItemByProduct($product)并始终将其设为return false;。 请注意,这可能会干扰minimum& maximum允许购物车购买产品。

答案 1 :(得分:1)

我认为你的主要问题是你如何设置产品属性应该是镜头强度右眼,镜片强度左眼,镜片厚度右眼,镜片厚度左眼。一个属性集可以包含您需要的不同值

如果您想使用单独的属性集,您可以使用捆绑产品,即所有产品都是捆绑销售,您需要在购买时添加镜头,镜头是具有不同属性集和定价的独立产品(可以设置为无)

也许这些都不是一个完美的修复,但有一些css和模板它应该能够看起来足够专业

答案 2 :(得分: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');


}