我有一些产品可以由客户保管。当然,价格必须基于成本化。
例如,我出售地毯。地毯的尺寸有时可由顾客选择。为了实现这一目标,我在所有定制产品中创建了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 :(得分:1)
您应该可以通过修改_applyOptionsPrice
中的Mage_Catalog_Model_Product_Type_Price
功能来实现此目的。此功能循环选项,逐个添加选项价格。而不是添加,你只需要增加。尝试这样的事情:
//$finalPrice += $group->getOptionPrice($quoteItemOption->getValue(), $basePrice);
$finalPrice *= $group->getOptionPrice($quoteItemOption->getValue(), $finalPrice);
答案 1 :(得分:0)
这需要修改代码,因为magento没有此类型的产品功能。