价格基于产品定制选项(宽度和高度)

时间:2011-08-15 12:45:47

标签: magento

我有一些产品可以由客户保管。当然,价格必须基于成本化。

例如,我出售地毯。地毯的尺寸有时可由顾客选择。为了实现这一目标,我在所有定制产品中创建了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);
    }

}

2 个答案:

答案 0 :(得分:1)

您应该可以通过修改_applyOptionsPrice中的Mage_Catalog_Model_Product_Type_Price功能来实现此目的。此功能循环选项,逐个添加选项价格。而不是添加,你只需要增加。尝试这样的事情:

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

答案 1 :(得分:0)

http://www.oscprofessionals.com/demo/magento-customize-product-options/index.php/magento-customize-demo/magento-customized-option.html检查此链接是否具备所需功能。

这需要修改代码,因为magento没有此类型的产品功能。