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.
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.
Lo que hago es listar las monedas posibles y hacer clickeable los valores. Si ampliamos un poquito esta vista, llegamos a ésto.
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. ;-)



Sí señor, este artículo es el que necesitaba para completar la customización de idioma y moneda.
Te has marcado otro punto! ;)
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.
@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.
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
@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.
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
@Gregorio
Marche un tirón de orejas.
Ya hay post publicado para tu pregunta.
;-)
Indicame donde :) por favor
He visto muchos post pero ninguna respuesta aun , nigun codigo de ejemplo
@Gregorio
Acá está el ejemplo para personalizar el selector de grupo de tiendas.
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.
@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).
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
@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.
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,
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.
@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.