我一直在使用这一整天,但我找不到任何解决方案:
我有一个产品(镜头),它具有相同的属性,但是用户可以为一只眼睛选择一个属性集,为另一只眼睛选择另一个属性。
在前端,我把它弄好了,看到它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 :(得分: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');
}