2011-07-28 4 views
1

商品をショッピングカートに追加する(カスタムオプションを設定する)場合は、同じアイテムの別のインスタンスをカートに追加します値)、「カートを表示」は、各項目のインスタンスを別々の行に表示します(良好)。ただし、アイテムを追加する際には、アイテムの特別価格(SetSpecialPrice経由)をと設定してください。アイテム価格はその特別価格に変更されます。SetSpecialPriceが注文商品のすべての*インスタンスの価格を変更します

SetSpecialPriceの効果を、そのメソッドを呼び出す項目インスタンスに限定するにはどうすればよいですか?

は、あなたが引用符に同じ「アイテム」を追加しているコードに、
ベン

答えて

2

、ありがとうございました。これはおそらくバグと考えることができます。

レベルを下げる必要があるかもしれません。どのような方法でカートに商品を追加していますか?新しいメソッドを作成するためには、そのメソッドが自分自身で行っていること(DRYの原則に違反している)をエミュレートする必要があります。

...コードを今見てみましょう。

[OK]をクリックして、Mage/Sales/Model/Quote.php行を見てください。935:public function getItemsByProduct - これは、追加する製品が既に存在するかどうかを判断する場所です。これは、Mage/Sales/Model/Quote/Item.php行にある$ item-> representProductを呼び出します。301:public function representProduct

このクラスをモジュール/コードでオーバーライドしてこのメ​​ソッドを置き換えると、特別価格に差異があるかどうかを検出し、それに応じて反応する簡単なコードを追加します。

コードsnipet:

$specialPrice = $product->getSpecialPrice(); 
    $thisSpecialPrice = $itemProduct->getSpecialPrice(); 
    if((is_null($specialPrice) xor is_null($thisSpecialPrice))|| 
     (!is_null($specialPrice) && !is_null($thisSpecialPrice && $specialPrice!=$thisSpecialPrice))){ 
     return false; 
    } 
関連する問題