Magento: cambiar entre las múltiples vistas de tiendas

En varios casos creamos en una misma instalación de Magento varias vistas de la tienda. esto nos servirá para tener ‘varias tiendas’ en el mismo Magento. Un ejemplo que es muy utilizado es la creación de varias vistas, cada una de ellas mostrando un precio diferente de los productos. Otro ejemplo sería la traducción a varios idiomas de la tienda: para cada idioma una vista de tienda nueva.

Aquí podéis ver cómo crear las diferentes vistas de tienda:
Artículo en Template Monster

Sigamos con el ejemplo de los precios. Supongamos que tenemos dos vistas creadas: zona1 y zona2. Cada una de ellas mostrará un precio diferente según la zona escogida (por ejemplo por código postal).

1. Creamos las vistas (zona1 y zona2) siguiendo el artículo anterior

2. Asignamos a cada producto el precio que le corresponde a su tienda
2.1 Para ello vamos a editar el producto y en la parte superior izquierdo veremos que podemos escoger las vistas que hemos creado.
2.2 Escogemos la zona1 , vamos al precio del producto y le ponemos el precio que queremos, ejemplo 10
2.3 Escogemos la zona2 , vamos al precio del producto y le ponemos el precio que queremos, ejemplo 20

Vale, ya tenemos las dos vistas y los productos con los precios según la vista (zonas en este caso).

Ahora viene lo importante y lo que seguro que estás buscando:

¿En la tienda Magento, el usuario como cambia entre las múltiples vistas?

Según el código postal que inserte el usuario, le mostraremos una zona u otra. Para ellos trabajaremos con cookies para saber en todo momento en que zona estamos.

Código a añadir en el footer.phtml de nuestra plantilla


    
    
    
    

Este código, si no existe la cookie donde almacenamos la tienda en la que estamos (zona), la creamos con la tienda base por defecto. Además, de no existir, muestra el formulario que pide el código postal. Cuando se envía el formulario, se actualiza el contenido de la cookie después de tratar el valor añadido.

Ya está? eso es todo? Ni mucho menos.

index.php de Magento

Vale, ahora tenemos una cookie que nos indica con que tienda trabajar. Ahora trabajemos el index.php para indicar, según la cookie, que tienda mostrar

index.php de Magento

Al final del fichero encontraremos el código:

$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
Mage::run($mageRunCode, $mageRunType);

Hay que modificarlo por:

if (isset($_COOKIE['TiendaZona'])) {
    if ($_COOKIE['TiendaZona'] == 'base') {
        $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
        // Si existeix
    } else {
        $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : $_COOKIE['TiendaZona'];
    }
} else {
    $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
}
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
Mage::run($mageRunCode, $mageRunType);

Este nuevo código trata el contenido de la cookie y actúa en consecuencia.

Resumiendo: en el footer.phtml de la plantillar creamos cookie y tratamos el formulario. En el index.php de la raíz de Magento tratamos el contenido de la cookie para mostrar la tienda que queramos.

Atención: todo el trabajo de crear cookies debe hacerse fuera del index.php. Sino, dará error. No puede haber ninguna salida antes de crear las cookies.

Ahí queda el artículo sobre Magento. Supongo que de aquí unos meses o años cuando lo vuelva a leer, pensaré que cómo me atreví…