Magento nos permite configurar multiples tiendas de forma tolalmente independiente, cada una con su dominio propio y todo bajo una sola instalación. Configurar Magento múlti-tienda con múltiples dominios nos facilita enormemente la adminstración, puesto que todas nuestras tiendas estarán bajo un mismo panel. Otra ventaja es, que solo tendremos una base de datos y por supuesto todos los benefícios de cara al posicionamiento SEO.
A continuación, algunos casos o modelos de negocio para los cuales podría interesarnos una configuración con múltiples dominios.
- Crear una tienda con diferentes idiomas bajo un mismo dominio (ver tutorial).
- Para esta opción solo necesitamos configurar una vista de nuestra tienda para cada idioma.
- Crear varias tiendas con diferentes dominios para el mismo modelo de negocio.
- Por ejemplo imaginemos que la empresa para la que estamos trabajando quiere vender los mismos productos pero en diferentes países y que cada uno tenga su propio idioma y su propio dominio, por ejemplo mi-tienda.es y my-store.com
- Crear varias tiendas para distintos modelos de negocio
- También puede ser interesante la posibilidad de tener bajo una misma instalación una tienda de ropa y una ferretería por ejemplo. Cada tienda con su dominio y productos correspondientes.
Configurar una categoría raíz
En primer lugar, para configurar nuestro Magento multi-tienda, lo que hacemos es crear la nueva categoría o categorías raíz. Una por cada modelo de negocio sería lo más aconsejable.
Para crear una nueva categoría sigue estos pasos:
- Inicia sesión en el Panel de administración de Magento
- En el menú superior, vamos a Catálogo > Administrar categorías.
- Clic en Agregar categoría raíz (Figura 1).
- Escribimos el nombre para la categoría.
- En Is Active, seleccionar Sí.
- En Configuración de pantalla (Display Settings), en Is Anchor, selecciona Sí y después Guardar categoría (Figura 2).
Configurar sitio web, dominio y vista de la tienda
Lo siguiente es crear nuestras tiendas y asociarlas a las vistas y dominios correspondientes.
- Vamos a Sistema > Administrar tiendas.
- Clic en Crear sitio web.
- Damos un nombre para la tienda.
- En el campo Código, escribe una cadena única sin espacios despues clic en Guardar sitio web (Figura 3). Este código lo usaremos para llamar a nuestra tienda desde index.php.
- Clic en Crear tienda.
- En el campo Sitio Web, seleccione el sitio web que acaba de crear.
- Escribe un nombre para tu tienda.
- En el campo categoría raíz, seleccionamos la categoría raíz que creamos al principio. Para terminar clic en Guardar almacén (Figura 4).
- Clic en Crear vista.
- En el campo Store, selecciona la tienda que acabamos de crear. Damos un Nombre a la vista. (aquí es común poner el nombre del idioma, por ejemplo Español).
- En el campo Código, ponemos una cadena única para identificar la vista nuestra tienda. Personalmente aquí suelo utilizar las iniciales del idioma, por ejemplo es para Español. El estadolo ponemos a Habilitado y hacemos clic en Guardar la vista de tienda (Figura 5).
Configurar URLs para cada tienda
Continuamos indicandole a Magento cual son las urls desde la configuración general.
- Nos dirigimos a Sistema > Configuración.
- En la lista desplegable seleccionamos Alcance de la configuración (Current Configuration Scope) (Figura 6), seleccionamos el sitio web que acabamos de crear.
Figura 6. Lista desplegable Alcance de la configuración actual. - Dentro de la opción General seleccionamos el país predeterminado (según selección tendremos que tener los archivos de traducciones correspondientes a ese idioma), países permitidos donde queremos vender nuestros productos y la información de la tienda. (Figura 7).
- Seleccionamos la opción Web en el menú de la derecha y desplegamos las secciones Unsecure y Secure, respectivamente.
- Para cada sección, desactiva la casilla de verificación Usar predeterminada a la izquierda y escribir la dirección url de la tienda, incluida la barra diagonal final. Terminamos haciendo clic en Guardar configuración en la parte superior derecha (Figura 8).
Ya tenemos la configuración básica para una tienda de Magento para poder visualizarla en el frontend.
La configuración completa es algo más compleja y explicarlo se escapa al propósito de este tutorial, aún así voy a listar a groso modo el resto de configuraciones necesarias para cada tienda (dependiendo de cada caso serán necesarias más o menos configuraciones).
- Diseño
- Emails de la tienda
- Contactos
- Email de Ventas
- Métodos de envío
- Métodos de pago
- Correos transaccionales
- Páginas y bloques staticos (home, banners,…)
- Traducir o crear productos y subcategorias
Configuración del servidor
La configuración en el servidor se puede realizar utilizando 2 métodos diferentes.
Método 1: Directorios separados para cada dominio, funciona para todas las versiones de Magento.
Método 2: Directorio compartido, funciona para versiones superiores a 1.4.0.1.
Para realizar la configuración de cualquiera de los métodos mencionados partimos desde una instalación base de Magento en nuestro servidor a partir de la que crearemos nuestra multitienda.
Método 1: Directorios separados para cada dominio
- Creamos un nuevo dominio o un dominio secundario en nuestro servidor.
- Si el nombre de dominio está alojado en otro servidor tendremos que apuntar las DNS desde el servidor donde esté alojado el nombre de dominio hacia nuestro servidor web.
- Utilizando FTP o SSH , copiamos los archivos .htaccess, indice.php, de la instalación de Magento al Document Root del nuevo dominio. Opcionalmente podemos copiar el directorio errors si queremos personalizar las páginas de error de cada web.
- Editar el archivo indice.php que acabamos de copiar y en la última línea de la siguiente manera:
Mage::run('nueva_store', 'website');
Atención: Cambie nueva_store por código dado en la configuración del nuevo sitio web.
- Por último, usando SSH, tenemos que crear los siguientes enlaces simbólicos en el directorio raíz del el nuevo dominio apuntando a los directorios y archivos de la instalación base de Magento usando el comando ln -s suponiendo que es un servidor Linux:
ln -s /home/dominio/html/app/ app ln -s /home/dominio/html/includes/ includes ln -s /home/dominio/html/js/ js ln -s /home/dominio/html/lib/ lib ln -s /home/dominio/html/media/ media ln -s /home/dominio/html/skin/ skin ln -s /home/dominio/html/var/ var
- Llegado a este punto si todo ha ido bien, ya deberíamos poder ver nuestra nueva tienda Magento en nuestro navegador web.
Método 2: Directorio compartido
Hasta ahora hemos añadido los dominios adicionales al servidor y configurado la nueva tienda en Magento. Ahora solo tenemos que decirle a Magento que tienda debe cargar basandonos en el nombre de dominio.
- Editamos el archivo .htaccess, ubicado en el directorio raíz de la instalación de Magento y agregamos las siguientes redirecciones.
RewriteCond %{HTTP_HOST} www\.dominio1\.com [NC] RewriteRule .* - [E=MAGE_RUN_CODE:dominio1_com] RewriteCond %{HTTP_HOST} www\.dominio1\.com [NC]RewriteRule .* - [E=MAGE_RUN_TYPE:website] RewriteCond %{HTTP_HOST} www\.dominio2\.com [NC]RewriteRule .* - [E=MAGE_RUN_CODE:dominio2_com] RewriteCond %{HTTP_HOST} www\.dominio2\.com [NC]RewriteRule .* - [E=MAGE_RUN_TYPE:website]
- MAGE_RUN_CODE : este es el código único elegido al crear en Magento la website / store view
- MAGE_RUN_TYPE – dependiendo de si desea cargar un sitio web específico o una vista de tienda; Estableciendolo en website o store , respectivamente.
Agregaremos una entrada para cada dominio adicional que hayamos configurado.
- Guarda el archivo
Ahora navegamos al nuevo sitio y para verificar que se ha cargado la tienda correcta. Si no es así, posiblemente el MAGE_RUN_CODE no coincida o el dominio no se resuelva en la carpeta / ruta correcta.
La capacidad de establecer el código de la tienda utilizando variables ambientales se introdujo en Magento 1.4. Si estamos ejecutando una versión anterior de Magento, el servidor web no admite variables de entorno Apache o simplemente queremos utilizar otro método podemos establecer el código de la realizando los pasos siguientes:
- Abrir index.php en cualquier editor de texto
- Buscar la siguiente línea cerca de la parte inferior del archivo:
Mage::run($mageRunCode, $mageRunType);
- Agregar las líneas siguientes justo encima de esta línea:
switch($_SERVER['HTTP_HOST']) { case 'dominio1.com': case 'www.dominio1.com': $mageRunCode = 'nueva_store1'; $mageRunType = 'website'; break; case 'dominio2.com': case 'www.dominio2.com': $mageRunCode = 'nueva_store2'; $mageRunType = 'website'; break; }
- Guarda el archivo
Importante: Reemplazar el dominio, el runCode y el runType de acuerdo con la configuración establecida. Podemos agregar tantas sentencias condicionales como tiendas.
Buenas, una pregunta…
Yo quiero colgar el idioma principal del dominio, y luego los otros idiomas en directorios.
dominio.com -> tienda en ES
dominio.com/en -> tienda EN
dominio.com/it -> tienda IT
dominio.com/fr -> tienda en FR
¿Cómo lo hago?
Gracias!
A ver si he entendido. Lo que quieres es tener un solo dominio multi-idioma con el prefijo de país al final de la url.
La configuración es la siguiente:
1. Crear tantas vistas de tu tienda como idiomas necesitas. Para conseguir dominio.com/es, el código de la vista debe ser código=es.
2. Desde Sistema > Configuración > General > General, configura el país predeterminado y los países permitidos (selecciona el alcance de la configuración).
3. Ahora ve a Sistema > Configuración > General > Web > Opciones de URL > Agregar código de la tienda en la URL = Si (alcance de la configuración = default)
4. Si aún no lo tienes, instala las traducciones correspondientes y listo.
¡Què bueno! Aplastantes hechos. Manten este nivel es un blog estupendo. Tengo que leer màs articulos como este.
Saludos
Hola! Una pregunta: Si tengo alojados mis dominios (2) en un host diferente al del dominio en que tengo instalado magento, y donde deseo crear múltiples tiendas, puede funcionar? o, debería direccionar los DNS´s de los 2 dominios al host donde tengo instalado Magento. Ej. Dominio 1 (Host1), dominios 2 y 3 (Host 2). Objetivo crear multi-tiendas. Puede ser? Gracias.
Efectivamente, los dominios tienen que apuntar al host donde tienes alojado el Magento.