Personalizando el Currency switcher en Magento

En su último post, Pablo Montero habla sobre cómo personalizar el Store switcher en Magento.

De más está aclarar lo útil que va a resultar ese tip para muchos (en particular para los que comienzan a jugar con las múltiples store views).

Al final de su post, Pablo hace referencia a poder personalizar el seleccionador de moneda (el currency switcher).

Por defecto, al habilitar el uso de múltiples monedas, podemos ver cómo Magento agrega un dropdown con las monedas posibles a utilizar.

Currency switcher por defecto de Magento

Ahora vamos a personalizarlo un poco. En realidad, voy a mostrar como manipular ese bloque y cambiar la apariencia.

Tenemos que abrir el archivo /app/design/frontend/default/blank/template/directory/currency.phtml

De la línea 40 a la 46, van a encontrar la definición del dropdown.

<select name="currency" onchange="changeCurrency(this)">
    <?php foreach ($this->getCurrencies() as $_code => $_name): ?>
        <option value="<?php echo $_code ?>"<?php if($_code==$this->getCurrentCurrencyCode()): ?> selected="selected"<?php endif; ?>>
            <?php echo $_name ?> - <?php echo $_code ?>
        </option>
    <?php endforeach; ?>
</select>

Vamos a tocar un poquito y lo cambiamos.

<ul>
    <?php foreach ($this->getCurrencies() as $_code => $_name): ?>
        <li>
	    <input type="hidden" id ="currency<?php echo $_code ?>" name="currency<?php echo $_code ?>" value="<?php echo $_code ?>">
            <?php if($_code!=$this->getCurrentCurrencyCode()): ?>
                <a onclick="changeCurrency($('currency<?php echo $_code ?>'));return false;" href="#"><?php echo $_name; ?> - <?php echo $_code ?></a>
            <?php else: ?>
                <?php echo $_name ?> - <?php echo $_code; ?>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>

Grabamos y actualizamos.

Currency switcher modificado en Magento

Lo que hago es listar las monedas posibles y hacer clickeable los valores. Si ampliamos un poquito esta vista, llegamos a ésto.

Detalle completo de la modificación al Currency switcher en Magento

Como ven, el link funciona correctamente y modifica los valores de los precios.

P.D.: Ahora ya estoy embalado, más tarde esto se convierte en extensión configurable desde el backend. ;-)

A lo mejor te interese leer

16 thoughts on “Personalizando el Currency switcher en Magento

  1. Sí señor, este artículo es el que necesitaba para completar la customización de idioma y moneda.

    Te has marcado otro punto! ;)

  2. Al igual que ha hecho Pablo en su post, yo creo que sería mucho mejor crear un nuevo tema dentro de la interfaz default y hacer el cambio ahí. Pues así evitas que en futuras actualizaciones se pierda el cambio.

  3. @César

    Estamos de acuerdo.
    Igualmente, si bien no hubiera estado mal que hiciera referencia a ese detalle, yo no estaba abordando una modificación de templates, sino el comprotamiento de un pequeño bloque.
    Doy por sentado que si alguien se mete a este nivel de modificación (el del post), ya estuvo lidiando con otras cuestiones de nivel más alto en cuanto a la lógica de template; por lo cual, esto estaría superado.

  4. Damian podrias darme una ayuda en como hacer esto mismo pero con el store swichter, no con el language swicther que cambia los view sino con el store swicher

    Necesito verlos como lista y no como menu desplegable para poder luego tenerlos como si fuesen unos tabs…..
    Gracias

  5. @Gregorio

    El dropdown que querés modificar se encuentra en otra plantilla, llamada stores.phtml.
    Los pasos a seguir serían los mismos que con el currency switcher.
    Si se t ecomplica, más tarde armo el post con cada paso para que puedas reproducirlo.

  6. Gracias Damian
    Ya lo intente pero sin mucho exito :(
    Deseo listarlo en vez de tenerlo en un desplegable de manera a aplicarle un estilo y que quede como unos TABS con imagenes on mouse over y esas cosas.

    Gracias desde ya por la ayuda

  7. @Gregorio

    Marche un tirón de orejas.
    Ya hay post publicado para tu pregunta.
    ;-)

  8. Damian: como haz solucionado el formato de la moneda en la version 1.4.1.1, Magento maneja las monedas asi: $1.950,00 y en Chile se usa $1.950 (osea sin coma ni ceros), he buscado por google pero no logro dar con la solucion, si puedes ayudarme te agradeceria.

  9. @Julio

    Las monedas se definen dentro de los locales de Zend a través de xml.
    Deberías ajustar el xml correspondiente al locale que querés corregir. (Esto puede tener la contra de ser sobreescrito en una futura actualización).

  10. Hola Damian,

    Usé tu código y funciona genial. Pero estoy mirando la manera de que me muestre el símbolo y no el código. P. ej. €, £, etc.

    He mirado en google y encontré la manera de mostrar el símbolo usado pero no sé como hacer la otra forma.

    Es sencillo?

    gracias

  11. @simon

    De mas está decir que por defecto no sólo no te muestra el símbolo, sino que inicialmente no habría forma de que lo obtengas. Esto es porque paa el Currency Switcher se crea un array y se envían esos valores (de hecho, el currency code es necesario para que se haga el cambio de moneda cuando el usuario lo selecciona).
    Lo más rápido y poco intrusivo que se me ocurre es que sobreescribas el bloque Mage_Directory_Block_Currency para, o bien modificar el array que se genera o bien agregar un método en ese bloque para que te haga de “traductor” de los códigos al símbolo.

  12. Hola Damián,

    Al final lo resolví modificando el archivo ES.xml que está en lib/zend/locale/data. Simplemente le cambié el nombre (y no el código) sustituyéndolo por su símbolo y ahora funciona. La única “pega” es que en el admin ya no aparece la moneda con su nombre sino con el símbolo pero como dicen los ingleses “it works for me”.

    Otra cosa que se me ocurre es probar con los archivos de traducciones Es_es.csv. Haré unas pruebas a ver si esto hace lo mismo, que realmente es prácticamente lo mismo que lo anterior…

    Saludos,

  13. También tuve que editar el root.xml en el mismo directorio porque me estaban apareciendo el dólar y la libra esterlina como US$ y UK£. Ahora todo fantástico.

  14. @simon

    Justamente por la “pega” que comentás, es que no te sugerí ese cambio… pero si te sirve, bienvenido sea. Yo preferiría ir por el camino que te comenté.
    Saludos.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">