gpt4 book ai didi

php - Magento如何从一家商店的价格中去除小数

转载 作者:行者123 更新时间:2023-12-04 04:47:50 25 4
gpt4 key购买 nike

有一些资源介绍了如何在 Magento 或整个站点中去除某种货币的小数点,但没有介绍如何为某个商店执行此操作。

背景:

每种货币的价格格式在/lib/Zend/Currency.php ( http://mrtony.org/2013/01/removing-decimals-in-currency-for-magento/ ) 中管理,因此您可以使用数字格式覆盖那里的货币小数。此文件不可覆盖,其中的更改将影响整个站点。

如果您想从核心向前迈进并更多地进入可覆盖的显示代码,您可以使用 code/core/Mage/Directory/Model/Currency.php ( http://magentocoders.blogspot.com.au/2011/10/how-to-remove-decimal-price-in-magento.html )

有了以上两者,如果你只想做一个商店怎么办?

最佳答案

试试这个:

app/etc/modules/Madison_Overrides.xml

<?xml version="1.0"?>
<config>
<modules>
<Madison_Overrides>
<active>true</active>
<codePool>local</codePool>
</Madison_Overrides>
</modules>
</config>

app/code/local/Madison/Overrides/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Madison_Overrides>
<version>1.0</version>
</Madison_Overrides>
</modules>
<global>
<models>
<directory>
<rewrite>
<currency>Madison_Overrides_Model_Currency</currency>
</rewrite>
</directory>
<core>
<rewrite>
<locale>Madison_Overrides_Model_Locale</locale>
</rewrite>
</core>
</models>
</global>
</config>

app/code/local/Madison/Overrides/Model/Currency.php
<?php

class Madison_Overrides_Model_Currency extends Mage_Directory_Model_Currency
{
/**
* Format price to currency format
*
* @param double $price
* @param bool $includeContainer
* @return string
*/
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
//get the store id so you an correctly reference the global variable
$store_id = Mage::app()->getStore()->getId();
//JASE get precision from custom variable that can be set at store level
$getPrecision = Mage::getModel('core/variable')->setStoreId($store_id)->loadByCode('decimalPrecision')->getData('store_plain_value');
//Mage::log("Precision is ".$getPrecision,null,'jase.log');
//if set use it, otherwise default to two decimals
$precision = is_numeric($getPrecision) ? $getPrecision : 2 ;
return $this->formatPrecision($price, $precision, $options, $includeContainer, $addBrackets);
}
}

?>

app/code/local/Madison/Overrides/Model/Locale.php
<?php

class Madison_Overrides_Model_Locale extends Mage_Core_Model_Locale
{
/**
* Functions returns array with price formatting info for js function
* formatCurrency in js/varien/js.js
*
* @return array
*/
public function getJsPriceFormat()
{
$format = Zend_Locale_Data::getContent($this->getLocaleCode(), 'currencynumber');
$symbols = Zend_Locale_Data::getList($this->getLocaleCode(), 'symbols');

$pos = strpos($format, ';');
if ($pos !== false){
$format = substr($format, 0, $pos);
}
$format = preg_replace("/[^0\#\.,]/", "", $format);
$totalPrecision = 0;
$decimalPoint = strpos($format, '.');
if ($decimalPoint !== false) {
$totalPrecision = (strlen($format) - (strrpos($format, '.')+1));
} else {
$decimalPoint = strlen($format);
}
$requiredPrecision = $totalPrecision;
$t = substr($format, $decimalPoint);
$pos = strpos($t, '#');
if ($pos !== false){
$requiredPrecision = strlen($t) - $pos - $totalPrecision;
}
$group = 0;
if (strrpos($format, ',') !== false) {
$group = ($decimalPoint - strrpos($format, ',') - 1);
} else {
$group = strrpos($format, '.');
}
$integerRequired = (strpos($format, '.') - strpos($format, '0'));

//get the store id so you an correctly reference the global variable
$store_id = Mage::app()->getStore()->getId();
//JASE get precision from custom variable that can be set at store level
$getPrecision = Mage::getModel('core/variable')->setStoreId($store_id)->loadByCode('decimalPrecision')->getData('store_plain_value');
//if set use it, otherwise default to two decimals
$totalPrecision = is_numeric($getPrecision) ? $getPrecision : $totalPrecision ;
$requiredPrecision = is_numeric($getPrecision) ? $getPrecision : $requiredPrecision ;

$result = array(
'pattern' => Mage::app()->getStore()->getCurrentCurrency()->getOutputFormat(),
'precision' => $totalPrecision,
'requiredPrecision' => $requiredPrecision,
'decimalSymbol' => $symbols['decimal'],
'groupSymbol' => $symbols['group'],
'groupLength' => $group,
'integerRequired' => $integerRequired
);

return $result;
}

}

?>

上面的第一个 php 文件覆盖了 php 中的小数点精度,上面的第二个 php 覆盖了 javascript 中的小数点精度,这是可配置产品或带有选项的产品所必需的。

最后一步是您可以使用 Magento 中的自定义变量来控制每个商店的小数位数。尝试设置一个名为“decimalPrecision”的自定义变量。将“Plain Value”保存为2。然后保存并返回。将“商店 View ”更改为您的特定商店,并将“使用默认变量值”设置为“否”。请务必在“变量 HTML 值”中放入一些文本,以便保存(无关紧要)。在“可变纯值”中输入数字“0”。现在有了这个代码和那个自定义变量,你选择的商店不会有小数,但其他地方都将是 2 个小数位的默认值。

关于php - Magento如何从一家商店的价格中去除小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com