2017-06-16 9 views

答えて

0

は私はわからないその許容可能な、独自の方法でそれを解決したかではありません。

$bundle_option = Mage::app()->getRequest()->getParam('bundle_option'); 
$bundle_option_array = call_user_func_array('array_merge', $bundle_option); 
$price = Mage::Helper('airhotels/bundle')->getBundlePrice($productid,$bundle_option_array); 

私のヘルパーファイルが

public function getBundlePrice($productId,$bundle_option_array) { 
$product = new Mage_Catalog_Model_Product(); 
$product->load($productId); 
$price=0; 
$selectionCollection = $product->getTypeInstance(true)->getSelectionsCollection($product->getTypeInstance(true)->getOptionsIds($product), $product); 
foreach($selectionCollection as $option) 
{ 
    if (in_array($option->getSelectionId(), $bundle_option_array)){ 
     $price += $option->price; 
    } 
} 
return $price; 
} 
0

コードの下に使用してください:

public function getDisplayPrice($product) { 
    if($product->getFinalPrice()) { 
     return $product->getFormatedPrice(); 
    } else if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) { 
     $optionCol= $product->getTypeInstance(true) 
          ->getOptionsCollection($product); 
     $selectionCol= $product->getTypeInstance(true) 
           ->getSelectionsCollection(
      $product->getTypeInstance(true)->getOptionsIds($product), 
      $product 
     ); 
     $optionCol->appendSelections($selectionCol); 
     $price = $product->getPrice(); 

     foreach ($optionCol as $option) { 
      if($option->required) { 
       $selections = $option->getSelections(); 
       $minPrice = min(array_map(function ($s) { 
           return $s->price; 
          }, $selections)); 
       if($product->getSpecialPrice() > 0) { 
        $minPrice *= $product->getSpecialPrice()/100; 
       } 

       $price += round($minPrice,2); 
      } 
     } 
     return Mage::app()->getStore()->formatPrice($price); 
    } else { 
     return ""; 
    } 
} 
+0

ですありがとう.....しかし、このコードは、製品のすべてのデフォルト・バンドル・オプションを取得します....子製品の私のカスタム選択は、POSTから来ています。..私の選択配列をコードに追加する方法.... –

関連する問題