все, что я нашел в моем поиске, является программным решением для этого. Я знаю, что мы можем изменить /lib/Zend/Locale/Data/en.xml для английских магазинов. в en.xml была эта часть:
<currencyFormats> <currencyFormatLength> <currencyFormat> <pattern>#,##0.00 ¤</pattern> </currencyFormat> </currencyFormatLength> </currencyFormats>
И цена показывалась в этом формате: 1,321.54 теперь, чтобы удалить десятичную часть из цены. Думаю, единственное, что мне нужно сделать, это изменить en.xml, чтобы он выглядел следующим образом:
<currencyFormats> <currencyFormatLength> <currencyFormat> <pattern>#,##0 ¤</pattern> </currencyFormat> </currencyFormatLength> </currencyFormats>
Проблема заключается в том, что после этого изменения цены показываются по желанию (1,132 Формат), но без символа валюты ($). что мне здесь не хватает? Заранее спасибо.
update Я все еще пытаюсь, когда узел шаблона изменился на следующий
<pattern>¤ #,##0</pattern>
цены идут с символом валюты (1,132 доллара США), но не в желаемой позиции O_O, требование состоит в том, чтобы иметь символ валюты с правой стороны, не осталось: (SO ..
Чтобы изменить точность цены в magento, вам нужно будет перезаписать некоторые основные файлы.
В приведенном ниже примере мы меняем точность на 0.
1) Перезаписать lib / Zend / Currency.php и изменить точность по строке:
69 protected $_options = array( 70 'position' => self::STANDARD, 71 'script' => null, 72 'format' => null, 73 'display' => self::NO_SYMBOL, 74 'precision' => 0, /*CHANGE*/ 75 'name' => null, 76 'currency' => null, 77 'symbol' => null, 78 'locale' => null, 79 'value' => 0, 80 'service' => null, 81 'tag' => 'Zend_Locale' 82 );
2) перезаписать app / code / core / Mage / Core / Model / Store.php и изменить roundPrice function:
public function roundPrice($price) { return round($price, 4); }
3) перезаписать app / code / core / Mage / Directory / Model / Currency.php и изменить формат функции:
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false) { return $this->formatPrecision( $price, 4, $options, $includeContainer, $addBrackets); }
Все ответы здесь включают изменение основных файлов . Это НЕ то, что нужно делать. Либо вы разрабатываете модуль и вносите эти изменения, либо оставляете основные файлы таким образом и изменяете цены с помощью str_replace
.
Поэтому зайдите в theme/template/catalog/product/price.phtml
и (в зависимости от конфигурации) по строке 209 измените это:
$_coreHelper->formatPrice($_price, true)
в
$without_decimals = $_coreHelper->formatPrice($_price, true); echo str_replace(".00", "", $without_decimals);
Это удаляет 0,00 от цены. Хорошо, что цены с другими десятичными знаками сохраняются. Если вы этого не хотите, вы можете удалить все после точки и округлить число с помощью функции round()
.
В зависимости от конфигурации другим ценам может потребоваться изменение (если вы показываете цены без налогов и т. Д.),
Чтобы удалить десятичную часть из цены, вам необходимо изменить файл «code / core / Mage / Directory / Model / Currency.php»,
Во-первых, вместо строки:
return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
использовать:
return $this->formatPrecision($price, 0, $options, $includeContainer, $addBrackets);
Чтобы изменить положение символа валюты, измените файл «lib / Zend / Locale / Data / en.xml» на строку:
<pattern>#,##0.00 ¤;(#,##0.00 ¤)</pattern>
Когда это будет сделано, не забудьте очистить кеш.
PS Чтобы избежать каких-либо проблем во время обновления, мы настоятельно рекомендуем реализовать все вышеупомянутые изменения с помощью расширений: (проверьте инструменты здесь: http://www.magentocommerce.com/magento-connect/catalogsearch/result/?id= & s = 7 & pl = 0 & eb = 0 & hp = 0 & q = currency | position & t = 1 & p = 1 )
Чтобы удалить десятичную часть из цены, вам необходимо изменить файл:
1) Во-первых, чтобы изменить точность вокруг линии
Библиотека / Zend / Currency.php
protected $_options = array( 'position' => self::STANDARD, 'script' => null, 'format' => null, 'display' => self::NO_SYMBOL, 'precision' => 2, 'name' => null, 'currency' => null, 'symbol' => null, 'locale' => null, 'value' => 0, 'service' => null, 'tag' => 'Zend_Locale' );
Change = 'precision' => 2, to 'precision' => 0,
2) Второй файл (изменение roundPrice function 🙂
Приложение / код / ядро / Mage / Ядро / Модель / Store.php
public function roundPrice($price) { return round($price, 2); }
к
public function roundPrice($price) { return round($price, 0); }
3) Третий и последний – изменить функцию формата:
Приложение / код / ядро / Mage / Каталог / Модель / Currency.php
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false) { return $this->formatPrecision( $price, 2, $options, $includeContainer, $addBrackets); }
К
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false) { return $this->formatPrecision( $price, 0, $options, $includeContainer, $addBrackets); }
Вы можете сделать еще одно дополнение к вышеуказанному.
Перейдите на страницу PriceCurrency.php
затем измените последнюю строку на
public function round($price) { return round($price, 0); }
после этого на странице PriceCurrencyInterface.php
make
const DEFAULT_PRECISION = 0;
на вершине.
Это все. Надеюсь, он сработает.