2014-12-04 11 views
5

tutto ciò che ho trovato nella mia ricerca è una soluzione di programmazione per questo. So che possiamo modificare /lib/Zend/Locale/Data/en.xml per i negozi inglesi. c'era in en.xml questa parte:Come rimuovere decimale dai prezzi Magento-1?

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

E il prezzo mostrava in questo formato: 1,321.54 ora per rimuovere la parte decimale da prezzo penso che l'unica cosa che devo fare è il cambiamento en.xml essere come il seguente:

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

il problema è dopo questa modifica i prezzi sono spettacolo, se lo desideri (1.132 Format), ma senza simbolo di valuta ($). cosa mi manca qui ?? Grazie in anticipo.


aggiornamento Sto ancora cercando, quando modello nodo modificato ai seguenti

<pattern>¤ #,##0</pattern> 

i prezzi sono venuta con il simbolo di valuta ($ 1.132), ma non a desiderare posizione O_O, il requisito è quello di avere il simbolo di valuta sul lato destro no a sinistra :(SO ..

+0

Prova a utilizzare questa estensione. http://www.magentocommerce.com/magento-connect/price-rounding.html Viene generalmente utilizzato quando si ha a che fare con più valute. – Harit

+0

Grazie per la risposta, non voglio usare la soluzione di programmazione, la soluzione è in en.xml ma non riesco a capire come – rramiii

risposta

4

In o Per modificare la precisione del prezzo in Magento, è necessario sovrascrivere alcuni file core.

Nell'esempio sottostante stiamo cambiando la precisione a 0.

1) sovrascrittura lib/Zend/Currency.php e cambiare la precisione attorno alla riga:

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) sovrascrittura app /code/core/Mage/Core/Model/Store.php e modifica la funzione roundPrice:

public function roundPrice($price) 
{  
    return round($price, 4); 
} 

3) sovrascrittura app/code/core/Mage/Directory/Modello/Currency.php e cambio formato funzione:

public function format($price, 
          $options=array(), 
          $includeContainer = true, 
          $addBrackets = false) 
{ 
    return $this->formatPrecision($price, 
             4, 
             $options, 
             $includeContainer, 
             $addBrackets); 
} 
+0

Grazie, penso che questo sia l'unico modo .. ma posso assicurarmi che tutto i prezzi sono di valore ceil in vista e tutti i processi di checkout ?? – rramiii

+1

invece di 4 devi usare 0 altro saggio avrà 4 cifre decimali. – rramiii

3

per rimuovere la parte decimale da prezzo, è necessario modificare il file "codice /core/Mage/Directory/Model/Currency.php"

in primo luogo, al posto della linea:

return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets); 

uso:

return $this->formatPrecision($price, 0, $options, $includeContainer, $addBrackets); 

Per cambiare la posizione del simbolo di valuta, modificare il file "lib/Zend/Locale/dati/en.xml" con la linea:

<pattern>#,##0.00 ¤;(#,##0.00 ¤)</pattern> 

Una volta fatto, non dimenticate di cancellare la cache .

P.S.Per evitare eventuali problemi durante l'aggiornamento, si consiglia vivamente di implementare tutte le modifiche di cui sopra tramite estensioni: (controllo Strumenti qui: http://www.magentocommerce.com/magento-connect/catalogsearch/result/?id=&s=7&pl=0&eb=0&hp=0&q=currency|position&t=1&p=1)

+0

grazie .. l'ho fatto – rramiii

2

Per rimuovere la parte decimale dal prezzo, è necessario modificare il file:

1) primo è quello di cambiare la precisione attorno alla riga

lib/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 = 'precisione' => 2, a 'precisione' => 0,

2) secondo file (cambiamento di funzione roundPrice :)

app/code/core/Mage/core/Modello /Store.php

public function roundPrice($price) 
{ 
    return round($price, 2); 
} 

Per

public function roundPrice($price) 
{ 
    return round($price, 0); 
} 

3) Terzo e ultimo è quello di cambiare funzione di formattazione:

app/code/core/Mage/Directory/Modello/Currency.php

public function format($price, 
         $options=array(), 
         $includeContainer = true, 
         $addBrackets = false) 
{ 
return $this->formatPrecision($price, 
            2, 
            $options, 
            $includeContainer, 
            $addBrackets); 
} 

PER

public function format($price, 
         $options=array(), 
         $includeContainer = true, 
         $addBrackets = false) 
{ 
return $this->formatPrecision($price, 
            0, 
            $options, 
            $includeContainer, 
            $addBrackets); 
} 
6

Tutte le risposte qui coinvolgere cambiando i file principali. Questo è NON quello che chiunque dovrebbe fare. O sviluppi un modulo e apporti le modifiche oppure lasci i file core in questo modo e modifica i prezzi con str_replace.

Quindi, andare in theme/template/catalog/product/price.phtml e (a seconda della configurazione) attorno alla riga 209 cambiamento questo:

$_coreHelper->formatPrice($_price, true) 

in

$without_decimals = $_coreHelper->formatPrice($_price, true); echo str_replace(".00", "", $without_decimals); 

Questo rimuove 0,00 dal prezzo. La cosa buona è che i prezzi con altri decimali sono mantenuti. Se non si desidera ciò è possibile rimuovere tutto dopo il punto e arrotondare il numero con la funzione round().

A seconda della configurazione altri prezzi potrebbe essere necessario il cambiamento (se si mostra prezzi senza tasse, ecc)

+0

Penso che questo sia un po 'errato perché non si tratta solo del prezzo di visualizzazione senza decimali, se seguo la tua strada, Magento farà in modo che l'ordine prenda il prezzo senza round e sul front-end sarà arrotondato il prezzo. non è vero? – rramiii

+0

@rramiii se hai valori diversi da 0 come decimali dovresti implementare questa modifica anche in ajax add to cart in modo che quei prezzi siano mantenuti gli stessi durante il checkout. Ma non capisco perché qualcuno dovrebbe inserire un prezzo come 56.89 e volerlo mostrare sul frontend come 57. basta farlo nel backend come 57. –

+0

Ci sono un paio di motivi per cui questo non funzionerà. 1. Funzionerà solo con prezzi che terminano in .00. Quindi non funzionerà quando i prodotti sono in vendita e ottieni valori decimali per i prezzi. 2. Non funzionerà con prodotti configurabili. Mentre i prezzi provengono dall'assistente, vengono sostituiti da javascript con i contenuti dell'array JSON Product.OptionsPrice, che viene creato in getJsonConfig. – aeu

0

Si può fare un altro cambiamento aggiunta a quanto sopra tutti.

vai alla pagina PriceCurrency.php quindi modificare l'ultima riga di

public function round($price) 
{ 
    return round($price, 0); 
} 

dopo che nella pagina PriceCurrencyInterface.php fare

const DEFAULT_PRECISION = 0; 

in alto.

Questo è tutto. Spero che funzionerà.

Problemi correlati