7 Mar
4 Comentarios

Customizando el Store Switcher

Publicado por Pablo Montero hace 1 año en: Desarrollo, Idioma, Traducción, Tutoriales, Útiles

Vamos a ha dar un aire distinto a la selección de store view (generalmente, cada ‘vista de tienda’ se emplea como ‘vista de idioma’), que en el theme default de Magento viene presentada en forma de dropbox. Algo parecido a esto:

language_switcher_01

Ahora queremos presentarlo así:

  • Una lista (mostrada en línea) de todos los store view (idiomas), y que cada uno vaya acompañado de un icono-banderita.
  • Rollover sobre los iconos-banderitas.
  • Dar una clase selected a la la vista de tienda en la que nos encontramos.

En este ejemplo tenemos 3 store view, español (con clase selected), inglés y japonés:

language_switcher_02

Paso 1.

Diseña o consigue tus iconos. En este ejemplo hemos usado el pack de famfamfam. Recuerda el rollover, para el estado normal del icono hemos duplicado la imagen y la hemos desaturado. Guarda los archivos en skin/frontend/default/tu_theme/images. Para este ejemplo, tenemos 6 archivos que los he llamado así:

flag-en.gif

flag-en-selected.gif

flag-es.gif

flag-es-selected.gif

flag-jp.gif

flag-jp-selected.gif

Paso 2.

Edita tu archivo languages.phtml, situado en app/design/frontend/default/tu_theme/template/page/switch; reemplaza todo con lo siguiente y guarda:

<?php if(count($this->getStores())>1): ?>
<div class="language-switcher">
    <ul>
        <?php foreach ($this->getStores() as $_lang): ?>
        <li>
            <?php if($_lang->getId()==$this->getCurrentStoreId()): ?>
                <span class="<?php echo $_lang->getCode() ?> selected">
                <?php echo $this->htmlEscape($_lang->getName()) ?></span>
            <?php else: ?>
                <a class="<?php echo $_lang->getCode() ?>" href="<?php echo $_lang->getCurrentUrl() ?>">
                <?php echo $this->htmlEscape($_lang->getName()) ?></a>
            <?php endif; ?>               
        </li>
        <?php endforeach; ?>
    </ul>
</div>
<?php endif; ?>

Paso 3.

Edita tu archivo boxes.css, situado en skin/frontend/default/tu_theme/css. Añade lo siguiente y guarda:

.language-switcher li { display:inline; }
.language-switcher a.es { background:url(../images/flag-es.gif) no-repeat; padding-left:20px; }
.language-switcher .es.selected,
.language-switcher a:hover.es { background:url(../images/flag-es-selected.gif) no-repeat; padding-left:20px; }
.language-switcher a.en { background:url(../images/flag-en.gif) no-repeat; padding-left:20px; }
.language-switcher .en.selected,
.language-switcher a:hover.en { background:url(../images/flag-en-selected.gif) no-repeat; padding-left:20px; }
.language-switcher a.jp { background:url(../images/flag-jp.gif) no-repeat; padding-left:20px; }
.language-switcher .jp.selected,
.language-switcher a:hover.jp { background:url(../images/flag-jp-selected.gif) no-repeat; padding-left:20px; }

Listo. Sólo falta darle tus últimos retoques de CSS y con esto finaliza este minitutorial.

P.D.: Me gustaría hacer lo mismo para el currency switcher (cambio de moneda), pero parece ser que funciona de otra forma. ¡Si alguien se anima que nos lo cuente!

3 Comentarios y 1 Referencia


  1. Personalizando el Currency switcher en Magento | Damian Culotta 07/03/09 6:27 pm

  1. Hola como se puede hacer esto con el store switcher ? No con el language o store view sino con el store.

    Quiero tenerlo como lista no como desplegable.
    Gracias

    #1
  2. #2
  3. Hola, ante todo, gracias por tus tutoriales, he seguido tus instrucciones en éste al pie de la letra y no me funcionó, la portada simplemente desapareció, quedando solo el bloque del head logo, y parte de la barra donde iba el selector de idioma, que había quedado convertido en un pequeño dropbox sin nada dentro.
    Mi versión de Magento es la 1.2.1.2, y la base del diseño que ando tuneando es la del Modern (mala elección, por lo que voy leyendo en los foros, pero vaya, voy demasiado avanzado como para empezar de nuevo).
    ¿Alguna idea?
    Gracias de nuevo

    #3

Dejanos un comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con *


Los comentarios son responabilidad de su autor y sujetos a moderación