Как удалить десятичную цену от Magento-1?

все, что я нашел в моем поиске, является программным решением для этого. Я знаю, что мы можем изменить /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; 

на вершине.

Это все. Надеюсь, он сработает.