2011-07-28 67 views
1

如果我以編程方式將項目添加到購物車(設置其自定義選項),則將相同項目的另一個實例添加到購物車(其自定義選項設置爲不同值),「查看購物車」在單獨的行(良好)上列出每個項目實例。但是,如果在添加物品時,我編程設置了一個物品的特價(通過SetSpecialPrice),物品價格更改爲該特價。SetSpecialPrice更改價格*全部*訂單項目的實例

如何限制SetSpecialPrice對僅調用該方法的項目實例的影響?

謝謝

回答

2

的代碼要添加相同的「商品」的報價。這可能被認爲是一個錯誤。

您可能需要降低級別。你用什麼方法將物品添加到購物車?您可能需要效仿自己的方法(違反DRY原則),強制它創建一個新的「項目」。

...現在看代碼。

好的,看着法師/銷售/模型/ Quote.php行935:public function getItemsByProduct - 這是它確定您添加的產品是否已存在。它調用$ item-> representProduct,它在Mage/Sales/Model/Quote/Item.php第301行:public function representProduct

如果你在你的模塊/代碼中覆蓋這個類並替換這個方法,你應該能夠添加簡單的代碼來檢測特殊價格是否有差異並作出相應的反應。

一小段代碼片段:

$specialPrice = $product->getSpecialPrice(); 
    $thisSpecialPrice = $itemProduct->getSpecialPrice(); 
    if((is_null($specialPrice) xor is_null($thisSpecialPrice))|| 
     (!is_null($specialPrice) && !is_null($thisSpecialPrice && $specialPrice!=$thisSpecialPrice))){ 
     return false; 
    }