0

我在创建的 Magento 网站中使用的货币是日元,其货币没有小数位。我已经设法从我的产品页面和购物车中删除它。

通过在格式函数中修改 app/code/local/Mage/Directory/Model/Currency.php ,如下所示:

$locale = Mage::app()->getLocale()->getLocaleCode();
if($locale != 'ja_JP') {
    return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
} else {
    return $this->formatPrecision($price, 0, $options, $includeContainer, $addBrackets);
}

但是,在我创建的下拉属性中,小数点仍然显示。像这样:

白色 - ¥3000.00

蓝色 - ¥5000.00

在我的下拉属性中,如何在价格末尾删除 .00?此外,是否可以在不更改数据库的情况下为管理员删除小数点?

我试过搜索,但遗憾的是,Magento 没有直接的功能可以处理这个问题。或者至少我没有遇到过上述功能。

4

4 回答 4

1

formatTxt您可以在您正在编辑的同一类中的方法开头添加这段代码:

if(Mage::app()->getLocale()->getLocaleCode() == 'ja_JP') {
    $options['precision'] = 0;
}

这将改变 Magento 内几乎每个地方的价格精度(如目录、结帐,甚至管理)。

于 2013-07-25T10:19:23.467 回答
1

检查免费ET_CurrencyManager扩展的代码以找到解决方案。您需要在 Mage_Directory_Model_Currency 中修改多个函数。您还需要在 Mage_Core_Model_Locale::getJsPriceFormat 中修改 JS 脚本的精度。

或者只是使用此扩展名来避免核心文件修改。

于 2013-07-26T06:29:10.033 回答
0

事实上,JA(日语)的 Zend 本地格式是错误的,请参见文件:-

httpdocs/lib/Zend/Locale/Data/ja.xml

行:2953(或只搜索“0.00”)

更新如下:-

        <currencyFormats>
        <currencyFormatLength>
            <currencyFormat>
                <pattern>¤#,##0</pattern>
            </currencyFormat>
        </currencyFormatLength>
    </currencyFormats>

这将完全改变日元显示价格在 JA 区域设置中的小数点为零。

几句警告...

  1. 如果在 ja_JP 以外的任何语言环境中查看管理区域,将允许输入小数点价格,输入小数点位置不是“.00”的日元价格将导致结帐价格不匹配错误。
  2. 似乎 Magento 将始终以两位小数将价格发送到 PayPal,这将在应用优惠券或销售折扣(Mage 1.6)时导致价格不匹配错误 - 我目前正在解决此问题并针对 1.9 版本进行测试。
于 2014-10-13T11:05:05.847 回答
-2

好的,所以我通过修改 configure.js 和 product.js 设法删除了 .00。这不是直接的解决方案,而是一种解决方法。

对于每个文件,我使用 javascript 的 split 函数拆分价格字符串,删除所有小数点 (.) 和后面的数字。所以我添加了类似这样的内容:

var a = price.split(.);
return a[0];

使用它,所有小数点都从我的价格中删除。感谢您的所有时间和帮助。

于 2013-07-26T11:05:00.660 回答