4

我已经为此工作了一整天,但我找不到任何解决方案:

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

在前端我没问题,在这里看到它。

所以用户可以选择左眼或右眼的属性,但它是同一个产品。

我构建了一个函数,它应该在购物车中获取一个产品(保存之前),添加其他属性集,所以购物车中应该有两个产品。如果有两种产品,但具有相同的一组属性,会发生什么?

这是函数的片段:

$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 中的第一个模块......</p>

谢谢你,彼得

4

3 回答 3

3

去上课Mage_Sales_Model_Quote 找方法getItemByProduct($product),一直做return false;。请注意,这可能会干扰产品的minimum&maximum允许在购物车中。

于 2012-01-03T09:18:04.833 回答
1

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

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

也许这些都不是一个完美的解决方案,但是通过一些 CSS 和模板,它应该能够看起来足够专业

于 2012-04-12T20:13:37.067 回答
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');


}
于 2013-06-16T16:50:52.393 回答