Продукт myBundle имеет myColorOption со следующими элементами:
- Зеленый $ 50
- Синий $ 100
- Красный $ 100
- Черный $ 150
Magento 1.4.2.0 по умолчанию предоставит покупателю выпадающий список с такими параметрами:
- Зеленый + 50 $
- Синий + 100 $
- Красный + 100 $
- черный + $ 150
Изменение, которое я ищу, это когда элемент по умолчанию был выбран администратором. Когда это так, каждая отображаемая цена должна быть относительно цены по умолчанию. Если администратор установит синий (цена $ 100) в качестве элемента по умолчанию для опции, раскрывающийся список должен теперь выглядеть так:
- Зеленый - $ 50
- синий
- красный
- черный + 50 $
Чтобы уточнить: я хочу, чтобы изменялась только отображаемая цена в раскрывающемся списке, фактическая цена, добавленная в корзину и использованная для других расчетов, остается прежней.
Обновление: Вот код, который у меня пока есть, проблема в закомментированных строках. Мне нужна помощь в получении правильных моделей и т. Д.
<?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>':'');
}
}