2011-08-15 78 views
1

我有一些產品可以由客戶定製。自然,價格必須基於成本。價格根據產品定製選項(寬度和高度)

例如,我出售地毯。有時,地毯的尺寸可由顧客選擇。爲了做到這一點,我在所有定製產品中創建了3個自定義選項:square_meter_price,width和height。

點擊'添加到購物車'後,客戶可以選擇寬度和高度。之後,在結帳/購物車網址上,客戶讀取'產品名稱'欄中正確的產品名稱,寬度和高度。唯一需要考慮的就是從中獲得正確的價格。

我想通過覆蓋Mage_Catalog_Model_Product_Type_Price :: getPrice()方法來做到這一點。問題是我無法獲得客戶輸入的寬度/高度值,所以我可以做數學。

注: 我已經嘗試遍歷$ product-> getOptions()。我能夠獲得自定義選項的寬度/高度,但我無法獲得客戶輸入的值。我也試過$ product-> getCollection() - > getAttribute('width')和$ product-> getAttribute('width'),但我得到了null。

預先感謝您。

class My_Catalog_Model_Product_Type_Price extends Mage_Catalog_Model_Product_Type_Price 
{ 
    public function getPrice(Mage_Catalog_Model_Product $product) 
    { 

     // get the width provided by the user 
     $width = $this->howToGet('width'); 

     // get the height provided by the user 
     $height = $this->howToGet('height'); 

     if ($width && $height) { 
      return $width * $height * $product->getAttribute('square_meters_price'); 
     } 

     return parent::getPrice($product); 
    } 

} 

回答

0

http://www.oscprofessionals.com/demo/magento-customize-product-options/index.php/magento-customize-demo/magento-customized-option.html檢查此鏈接它具有必需的功能。

這需要修改代碼,因爲magento沒有這種類型的產品特性。

+0

我見過幾個插件,承諾這樣做。儘管如此,我不能使用專有軟件。 – Marcelo

+0

我想知道magento在哪裏存儲用戶輸入,因爲它可以被檢索。結帳頁面顯示。會話可能? – Marcelo

1

您應該可以通過修改Mage_Catalog_Model_Product_Type_Price中的函數_applyOptionsPrice來完成此操作。此功能循環選項,逐個添加選項價格。而不是添加,你只需要乘。嘗試這樣的:

//$finalPrice += $group->getOptionPrice($quoteItemOption->getValue(), $basePrice); 
$finalPrice *= $group->getOptionPrice($quoteItemOption->getValue(), $finalPrice); 
相關問題