产品myBundle的myColorOption包含以下项目:
默认情况下,Magento 1.4.2.0将向客户提供带有以下选项的选择下拉列表:
我正在寻找的更改是管理员选择了默认项目。如果是,则每个显示的价格应该相对于默认选项的价格。如果管理员将蓝色(价格100美元)设置为该选项的默认项目,则下拉列表现在应显示为:
澄清:我只希望下拉列表中的显示价格发生变化,添加到购物车并用于其他计算的实际价格保持不变。
更新:这是我到目前为止的代码,问题出在注释行中。我需要帮助获得正确的模型等。
<?php
// From file app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle/Option.php
// copied to app/code/local/Mage/...
public function getSelectionTitlePrice($_selection, $includeContainer = true)
{
$defaultPrice = 0.00;
$_product = $this->getProduct();
/*
$_mbmo = new Mage_Bundle_Model_Option();
$_mbmo->load($_selection->getProductId());
$_default = $_mbmo->getDefaultSelection();
$defaultPrice = $_product->getPriceModel()->getSelectionPreFinalPrice($_product, $_default, 1);
*/
$price = $_product->getPriceModel()->getSelectionPreFinalPrice($_product, $_selection, 1);
if ($price == $defaultPrice)
{
return $_selection->getName();
}
else
{
$sign = ($price < $defaultPrice) ? '-' : '+';
$diff = ($price < $defaultPrice) ? $defaultPrice - $price : $price - $defaultPrice;
return $_selection->getName() . ' ' .
($includeContainer ? '<span class="price-notice">':'') . $sign .
$this->formatPriceString($diff, $includeContainer) . ($includeContainer ? '</span>':'');
}
}
答案 0 :(得分:2)
使用此代码
$defaultPrice = $_product->getPriceModel()->getSelectionPreFinalPrice($_product, $_default,1);
将以上行替换为
$defaultPrice=$this->getOption()->getDefaultSelection()->getSelectionPriceValue();
答案 1 :(得分:1)
只是为这个答案添加一些内容 - 我发现如果代码尝试针对没有默认值的选项调用getDefaultSelection() - &gt; getPrice(),则代码会失败。能够通过添加以下代码来解决此问题:
$_mbmo = new Mage_Bundle_Model_Option();
$_mbmo->load($_selection->getProductId());
$_default = $_mbmo->getDefaultSelection();
if (gettype($this->getOption()->getDefaultSelection())==object){
$defaultPrice=$this->getOption()->getDefaultSelection()->getPrice();
}
基本上只是检查在$ this上调用getDefaultSelection()返回的内容然后继续设置默认价格,否则它只是继续使用其余的代码。