Я хочу создать новую валюту для бонусных баллов, поэтому вместо моего магазина Magento, продающего товары стоимостью 300 долларов США, я хочу, чтобы он отображал 300 бонусных баллов.
Я уже пробовал решение для плохой практики, добавив его в раздел валют в lib / Zend / Locale / Data / en.xml
<currency type="RWP">
<displayName>Reward Point</displayName>
<displayName count="one">Reward Point</displayName>
<displayName count="other">Reward Points</displayName>
<symbol>Reward Points</symbol>
</currency>
Я смог включить и использовать это в Magento, следуя этой теме: http://www.magentocommerce.com/boards/viewthread/56508/, но по-прежнему используется шаблон форматирования по умолчанию: ¤ #,##0.00
, поэтому он выглядит как Бонусные баллы 800,00
Моя локаль установлена на en_CA, и, насколько я могу судить, у меня нет возможности изменить шаблон форматирования, не затрагивая форматирование CDN и USD.
Я попытался переопределить Mage_Core_Model_Store, чтобы, если текущий код валюты - RWP, он форматировал цену, используя массив параметров форматирования, но это не работает, когда я нахожусь в представлении продукта. Не говоря уже о том, что это тоже кажется действительно грязным способом добиться того, чего я хочу.
/**
* Format price with currency filter (taking rate into consideration)
*
* @param double $price
* @param bool $includeContainer
* @return string
*/
public function formatPrice($price, $includeContainer = true)
{
if ($this->getCurrentCurrency()) {
/**
* Options array
*
* The following options are available
* 'position' => Position for the currency sign
* 'script' => Script for the output
* 'format' => Locale for numeric output
* 'display' => Currency detail to show
* 'precision' => Precision for the currency
* 'name' => Name for this currency
* 'currency' => 3 lettered international abbreviation
* 'symbol' => Currency symbol
*/
$options = array();
if ($this->getCurrentCurrencyCode() == 'RWP') {
$options = array(
'position' => 16,
'precision' => 0,
'format'=> '#,##0.00 '
);
}
return $this->getCurrentCurrency()->format($price, $options, $includeContainer);
}
return $price;
}