4

私は一日中これに取り組んできましたが、解決策が見つかりません:

私は同一の属性を持つ製品 (レンズ) を持っていますが、ユーザーは片方の目に 1 つの属性セットを選択し、別の目に別の属性セットを選択できます。

フロントエンドでは問題ありませんでした。こちらを参照してください

したがって、ユーザーは左目または右目の属性を選択できますが、同じ製品です。

カート内の製品を (保存前に) 取得し、他の属性セットを追加する関数を作成して、カートに 2 つの製品が存在するようにします。2 つの製品があるのに、同じ属性セットを持っている場合はどうなりますか?

関数のスニペットは次のとおりです。

$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 に答える
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 に答える