【问题标题】:Removing .00 in configurable attribute price in Magento在 Magento 中删除可配置属性价格中的 .00
【发布时间】:2013-07-25 02:04:38
【问题描述】:

我在创建的 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 没有可以处理此问题的直接功能。或者至少我没有遇到过上述功能。

【问题讨论】:

    标签: magento


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      或者只是使用这个扩展来避免核心文件的修改。

      【讨论】:

        【解决方案3】:

        事实上,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 版本。

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-25
            • 2014-03-16
            相关资源
            最近更新 更多