在Magento中以可配置属性价格删除.00

时间:2013-07-25 02:04:38

标签: magento

我正在创建的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 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

行:2953(或只搜索" 0.00")

更新至以下内容: -

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

这将完全改变YEN显示价格,使其在JA Locale中具有零小数。

有几句警告......

  1. 如果在ja_JP以外的任何区域设置中查看管理区域,则允许a 要输入的十进制价格,输入带小数的YEN价格 其他任何东西的位置&#34; .00&#34;将导致结账价格 不匹配错误。
  2. 看来Magento总是会发价 PayPal有两个小数位,这将导致价格不匹配 申请优惠券或销售折扣时出现错误(法师1.6) - 我&#39; m 目前正在解决这个问题并进行测试 1.9版本。

答案 3 :(得分:-2)

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

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

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

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