Configuraciones Avanzadas
Seguimos avanzando en nuestro paseo por Magento. En este punto vamos a ver algunas de las opciones más avanzadas de las que disponemos, tales como la capacidad multitienda, multiidioma o multimoneda.
Veremos también como realizar una importación avanzada de productos, y reglas de catálogo y carrito que nos permitirán manejar mejor las ofertas y los productos de nuestra tienda.
Multitienda
Magento nos ofrece la capacidad de gestionar varias tiendas dentro de un único sitio web. ¿Para que sería esto útil? Bien, esto nos permitiría tener una tienda por cada idioma que utilicemos, o con diferentes monedas, pero, además, también podríamos tener diferentes catálogos y productos.
Es algo muy versátil que vamos a ir examinando detenidamente, para empezar vamos a estudiar el ámbito de los diferentes niveles que tenemos:
-
Global -> configuraciones e información que será utilizada en todos los escaparates de tiendas.
-
Website -> esto hace referencia a un conjunto de tiendas, que comparten cuentas de cliente, pedidos y carritos de la compra.
-
Store -> una tienda es un grupo de escaparates que hacen referencia a la misma categoría, o catalogo.
-
Store view -> los escaparates son representaciones visuales de una tienda, y nos servirán, por ejemplo, para ofrecer la tienda en múltiples idiomas.
¿Como se traduce esto en nuestra instalación de Magento? Lo podemos ver de una forma muy sencilla desde nuestro panel de administrator, si vamos a Sistema -> Configuración, podremos ver a la izquierda un desplegable donde podemos seleccionar el alcance de la configuración.
La configuración por defecto equivale al nivel global de alcance. Los cambios y selecciones que hagamos aquí afectaran pues a todo el sitio, y, a no ser que en los niveles inferiores indiquemos lo contrario, serán los que se apliquen.
Después tenemos Main Website, que estaría al nivel de Website, es decir, las tiendas que hay dentro comparten información de clientes, pedidos etc.
En este caso solo tenemos una tienda, Main Store, que contiene tres escaparates, o Store Views, cada uno, como hemos comentado antes, equivale a un idioma.
¿Como podemos crear y modificar estos elementos? Para ello iremos a Sistema -> Gestionar tiendas, donde podremos ver una pantalla similar a la siguiente:
En el centro podemos ver un listado, en tres columnas, que nos muestra tanto los sitios web de que disponemos, como tiendas, como vistas de tienda (escaparates). En este caso lo que vemos se traduce en lo que teníamos en el desplegable anterior:
-
Main Website
-
Main store
-
English
-
French
-
German
-
-
Además de visualizar esta información, en la parte superior de esa pantalla tenemos tres botones:
-
Crear un sitio web
-
Crear una tienda
-
Crear una vista de tienda
Veamos un poco estos apartados
Crear un sitio web
Una vez hacemos clic en el botón crear un sitio web, accederemos a la siguiente pantalla:
Solo hemos de introducir esos tres valores, y guardar, para que nuestro sitio web sea creado.
Crear una tienda
Crear una tienda es un proceso igual de sencillo que el anterior, veamos el aspecto que tiene la pantalla de creación:
La variación es mínima, por un lado deberemos seleccionar el sitio web al que se asociará la tienda, el nombre que queremos que tenga, y la categoría raíz del catálogo. Este último parámetro es el que nos permitirá tener un catálogo por cada tienda.
Crear una vista de tienda
Por último tenemos que crear los escaparates para nuestra tienda, con un proceso muy similar al que hemos seguido hasta ahora:
Seleccionando en este caso la tienda a la que pertenecerá la vista, su nombre y código, y si está habilitada. Así como el orden en que aparecerán los productos en el pedido.
Multiidioma
Una vez que tenemos las diferentes vistas de nuestra tienda, dotarla de capacidades multiidioma es bastante sencillo. Y es que ya vimos los pasos necesarios para instalar un nuevo idioma, ahora veremos como asociar los idiomas a las vistas de tiendas.
Para hacer la prueba, vamos a crear una nueva vista de tienda, desde la pantalla Sistema -> Gestionar tiendas -> Nueva vista de tienda:
Una vez hecho esto guardamos, y en nuestro frontend veremos algo similar a lo siguiente en el desplegable de selección de idiomas:
Con lo que tenemos nuestra nueva vista disponible. ¿Como asociar un idioma a esta vista? Para eso iremos a Sistema -> Configuración, seleccionamos el alcance correspondiente:
Iremos a la pestaña general:
Después de eso iremos a las opciones de localización, deseleccionaremos el checkbox “Use Website” (indicativo del uso de las opciones globales) y seleccionaremos el idioma que nos interese, en este caso, inglés.
Y con esto al seleccionar la pestaña en el frontend se cambiará el idioma de esa vista en concreto.
Posibles problemas, y solución
Es posible que al crear esta nueva vista, al intentar acceder a ella desde el frontend veamos el siguiente mensaje:
Este mensaje nos indica que no hemos seleccionado ninguna página CMS para mostrar. Bien, seleccionemosla ahora, para ello iremos a nuestra página de administración, CMS -> Pages. Si nos fijamos en la línea de la home page:
Podemos ver como en la cuarta columna aparece las tres vistas de tienda, pero no hay ni rastro de nuestra nueva vista. Haremos clic en esta linea, y veremos una pantalla similar a la siguiente:
Como podemos ver la opción Prueba no aparece seleccionada, por lo tanto, está página no se muestra en dicha vista, mostrando por lo tanto el mensaje de error. Vamos a seleccionar la opción Todas las vistas de tienda, de manera que si en el futuro añadimos más vistas no tengamos este mismo problema. Guardaremos los cambios, y con esto se habrá solucionado nuestro pequeño problema.
Desde que fichero se genera el selector de idioma
El selector de idioma se genera desde el fichero app -> design -> frontend -> base -> default -> template -> page -> switch -> languages.phtml y tiene este contenido:
<?php if(count($this->getStores())>1): ?>
<div class=”form-language”>
<label for=”select-language”><?php echo $this->__(‘Your Language:’) ?></label>
<select id=”select-language” title=”<?php echo $this->__(‘Your Language’) ?>” onchange=”window.location.href=this.value”>
<?php foreach ($this->getStores() as $_lang): ?>
<?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ‘ selected=”selected”‘ : ” ?>
<option value=”<?php echo $_lang->getCurrentUrl() ?>”<?php echo $_selected ?>><?php echo $this->htmlEscape($_lang->getName()) ?></option>
<?php endforeach; ?>
</select>
</div>
<?php endif; ?>
Por supuesto podríamos duplicar este fichero y colocarlo en la carpeta de la plantilla que estemos utilizando, por ejemplo app -> design -> frontend -> default -> blank_seo -> template -> page -> switch -> languages.phtml
De esa manera podremos hacer las modificaciones que queramos sin la necesidad de modificar al fichero base. Por ejemplo vamos a añadirle el siguiente código, al principio:
<?php if(count($this->getGroups())): ?>
<div class=”store-switcher”>
<label for=”select-store”><?php echo $this->__(‘Select Store:’) ?></label>
<select id=”select-store” title=”<?php echo $this->__(‘Select Store’) ?>” onchange=”location.href=this.value”>
<?php /*foreach ($this->getStores() as $_store): ?>
<option value=”<?php echo $_store->getUrl(”) ?>”<?php if($_store->getId()==$this->getCurrentStoreId()): ?> selected=”selected”<?php endif; ?>><?php echo $_store->getName() ?></option>
<?php endforeach;*/ ?>
<?php foreach ($this->getGroups() as $_group): ?>
<?php $_selected = ($_group->getId()==$this->getCurrentGroupId()) ? ‘ selected=”selected”‘ : ” ?>
<option value=”<?php echo $_group->getHomeUrl() ?>”<?php echo $_selected ?>><?php echo $this->htmlEscape($_group->getName()) ?></option>
<?php endforeach; ?>
</select>
</div>
<?php endif; ?>
Es una versión levemente modificada de lo que podemos encontrar dentro del fichero app -> design -> frontend -> base -> default -> template -> page -> switch -> stores.phtml Pero hemos cambiado esta linea:
<?php if(count($this->getGroups())>1): ?>
por esta otra
<?php if(count($this->getGroups())): ?>
Para mostrar el desplegable incluso aunque solo tengamos una tienda:
Ahí tenemos, un desplegable para tiendas, y otro para vistas.
Multimoneda
Al igual que podemos tener una tienda con múltiples idiomas, también podemos tener una tienda con múltiples monedas. Para ello deberemos seleccionar que monedas, y para que vistas, queremos que estén disponibles. Iremos pues a nuestro panel de administración, menú Sistema -> Configuración. Seleccionaremos el alcance desde el desplegable de la izquierda, y, en la pestaña General, seleccionaremos Configuración de la Moneda. La pantalla será similar a la siguiente:
De ahí podemos seleccionar las monedas que estarán permitidas. Así como la opción por defecto. Pero, ¿Es suficiente con esto para mostrar el desplegable de selección de moneda? Puede que no, y eso dependerá de nuestra plantilla, y de nuestra instalación de Magento.
Vamos a solucionar primero el tema de nuestra instalación de Magento. Una vez hemos seleccionado las monedas que queremos que estén disponibles, iremos, en nuestro panel de administración, al menú Sistema -> Gestionar tipos de cambio, ahí veremos una pantalla como la siguiente:
En esa pantalla deberemos hacer clic en importar, para que Magento importe los tipos de cambio. Si no tenemos esta importación realizada, no se mostrará la moneda en el desplegable, pues Magento no sabrá cambiar de un tipo monetario a otro. Es pues un paso muy importante.
Luego podemos trabajar en el tema de la plantilla, para ahora sí mostrar el desplegable de selección de moneda, por ejemplo en nuestro fichero app -> design -> frontend -> default -> blank_seo -> layout -> page.xml añadiremos en este código:
<block type=”page/html_header” name=”header” as=”header”>
<block type=”page/template_links” name=”top.links” as=”topLinks”/>
<block type=”page/switch” name=”store_language” as=”store_language” template=”page/switch/languages.phtml”/>
<block type=”core/text_list” name=”top.menu” as=”topMenu”/>
<block type=”page/html_wrapper” name=”top.container” as=”topContainer” translate=”label”>
<label>Page Header</label>
<action method=”setElementClass”><value>top-container</value></action>
</block>
</block>
la siguiente linea:
<block type=”page/html_header” name=”header” as=”header”>
<block type=”directory/currency” name=”currency” template=”directory/currency.phtml”/>
<block type=”page/template_links” name=”top.links” as=”topLinks”/>
<block type=”page/switch” name=”store_language” as=”store_language” template=”page/switch/languages.phtml”/>
<block type=”core/text_list” name=”top.menu” as=”topMenu”/>
<block type=”page/html_wrapper” name=”top.container” as=”topContainer” translate=”label”>
<label>Page Header</label>
<action method=”setElementClass”><value>top-container</value></action>
</block>
</block>
Luego en el fichero app -> design -> frontend -> default -> blank_seo -> template -> page -> html -> header.phtml donde tenemos:
<div>
<?php echo $this->getChildHtml(‘topSearch’) ?>
<p><?php echo $this->getWelcome()?></p>
<?php echo $this->getChildHtml(‘topLinks’) ?>
<?php echo $this->getChildHtml(‘store_language’) ?>
</div>
Añadiremos la siguiente línea:
<div>
<?php echo $this->getChildHtml(‘currency’) ?>
<?php echo $this->getChildHtml(‘topSearch’) ?>
<p><?php echo $this->getWelcome()?></p>
<?php echo $this->getChildHtml(‘topLinks’) ?>
<?php echo $this->getChildHtml(‘store_language’) ?>
</div>
Ya solo nos queda copiar, si deseamos modificar el aspecto del desplegable, la carpeta app -> design -> frontend -> base -> default -> template -> directory a app -> design -> frontend -> default -> blank_seo -> template -> directory y con eso nuestro desplegable de selección de monedas aparecerá:
Permitiendo a nuestro visitantes cambiar de divisa cómodamente.
Importación avanzada de productos
Vamos ahora a ver un poquito sobre la exportación de importación de productos. Importar productos nos puede ayudar a insertar una gran cantidad de productos a una tienda recién creada. Sin necesidad de introducirlos uno a uno. Vamos a ver algunos pasos tanto para exportar, como para importar.
Empezaremos con la exportación, esto nos ayudará a ver el formato necesario para la importación. En nuestro panel de administración iremos a Sistema → Importar/Exportar → Perfiles. En esa pantalla haremos clic en Export all products:
Eso nos llevará a una pantalla donde podremos editar el perfil de exportación, con gran cantidad de opciones, veamos algunas de ellas. Por ejemplo, tenemos información del perfil:
Aquí tenemos el nombre del perfil, el tipo de entidad (productos o clientes), la dirección (si es exportación o importación) así como la tienda y su ámbito. Más abajo tenemos información del archivo:
Con estas opciones indicaremos donde, y bajo que nombre, se crea el archivo. Y justo debajo tenemos opciones relacionadas con su formato:
Podemos adaptar estas configuraciones para abrir el archivo bajo Excel, Open Office etc Especificando los campos delimitadores, el tipo de fichero etc
Por último tenemos algunos filtros, que nos permitirán especificar aún más que productos queremos exportar:
Bien, ahora para realizar la exportación haremos clic en la pestaña Ejecutar perfil:
Y posteriormente en el botón Run profile in popup. Una vez el proceso de exportación haya finalizado podremos ver un fichero que se habrá generado en proyecto-mg → var → export, el fichero tendrá el nombre que nosotros le hayamos dado en la configuración, en este caso export_all_products.csv
Podemos abrir este fichero, por ejemplo con Open Office Calc, al hacerlo se nos presentará una pantalla de opciones:
Aquí deberemos configurar las opciones, para que correspondan con las que seleccionamos en el momento de la exportación, dentro de nuestra instalación de Magento. Al abrir el fichero nos encontraremos con una estructura similar a la siguiente:
La primera fila es ocupada por los nombres de los campos, y, a partir de ahí, cada fila será uno de los productos de nuestra tienda.
Vayamos ahora con la importación de productos. Para ir ahí iremos a Sistema → Importar/Exportar → Perfiles. Así como antes hicimos clic en Export all products ahora haremos clic en Import all products. Las opciones serán más o menos las mismas, pero podremos importar los ficheros de dos maneras:
-
Subiendo los ficheros, mediante un formulario, para lo cual tendremos la configuración de esta manera:
Esto funciona un poco a la inversa que con la exportación. Este proceso de puede tanto insertar, como actualizar productos, los campos básicos requeridos para la importación son los siguientes:
-
type (es el tipo de producto, como simple)
-
attribute_set (grupo de atributos, por defecto Default)
-
tax_class_id
-
status (enabled or disabled)
-
weight
-
sku
-
name
-
price
-
description
-
short_description
Como hemos dicho estos campos son indispensables para la importación de los productos, pero, además, si queremos que estén visibles deberemos proporcionar los siguientes campos:
-
visibility (”Catalogue,Search”)
-
category_ids (las categorías deben ser existentes, así que primero deberemos averiguarlas)
-
qty
-
image, small_image, thumbnail (las imagenes las dejaremos dentro de la carpeta media/import, precediendo el nombre por una /)
Nota: antes de poder ejecutar el importador, despues de seleccionar el fichero, deberemos de hacer clic en el boton guardar y continuar. De esta manera el importados sabrá que fichero debe importar.
Ejecutamos igual que al exportar y veremos una imagen similar a:
Nota sobre las imagenes en los templates
Independientemente del tamaño con el que subamos las imagenes, a la hora de utilizarlas en el template, por ejemplo app → design → frontend → base → default → template → catalog → product → list.phtml, utilizando el método resize:
<img src=”<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(135); ?>” width=”135″ height=”135″ alt=”<?php echo $this->stripTags($this->getImageLabel($_product, ‘small_image’), null, true) ?>” />
En caso de tener más tiempo, podemos seguir indagando el tema de las importaciones con este artículo de la wiki:
Reglas
Vamos ahora con el tema de las promociones, estos menús los podemos encontrar en nuestro panel de control, en el menú Promociones, ahí tenemos Reglas de precios del catálogo y Reglas de precios del carrito de compras. Comenzaremos con las opciones del catálogo.
Catálogo
Dentro de nuestro panel de administración iremos a Promociones → Reglas de precios del catálogo, donde veremos una pantalla similar a la siguiente:
Aquí tenemos algunas reglas de ejemplo, podemos estudiarlas para ver como se crean, y como funcionan las reglas de catálogo. Para crear una regla, haremos clic en el botón Añadir una nueva regla, veremos una pantalla como la siguiente:
Aquí vemos algunos de los campos que debemos insertar, entre ellos el nombre de la regla, su descripción, el estado, y a que sitios web de nuestra tienda se aplica. Estos datos en principio nos ayudarán a identificar la regla, y saber si está o no activa. Sigamos viendo los campos que deberemos rellenar:
Aquí podemos indicar a que grupos de clientes se aplicará esta regla, desde que fecha hasta que fecha, y con que preferencia sobre otras reglas. Después de eso a podemos acceder a la pestaña condiciones:
Y desde aquí construir las condiciones que harán cumplir nuestra regla. Podemos definir si debe cumplir todo o parte, si debe cumplir las condiciones (VERDADERO) o si no debe cumplirlas (FALSO). Después haciendo clic en el símbolo de + (verde) podremos crear todas las condiciones que nos interesen. Por último accederemos a la pestaña Acciones:
En esta pantalla podemos definir el tipo de descuento a aplicar, en que cantidad, y si a partir de aplicar este descuento se dejarán de aplicar el resto. Esto unido con la prioridad que vimos en la primera pantalla nos permitirá combinar las reglas como queramos.
Carrito
Ahora veremos como funcionan las reglas de carrito, iremos a Promociones → Reglas de precios del carrito de compras. Haremos clic en Añadir nueva regla, y accederemos a una pantalla muy similar a la anterior, vamos a centrarnos en las diferencias:
-
Información de la regla:
-
Coupon → por si queremos que la regla se aplique como un cupón de descuento.
-
Uses per costumer → cuantas veces se podrá beneficiar de la regla un mismo cliente.
-
Público en Feed RSS → si queremos que se publique en el RSS, a modo de publicitar el descuento.
-
-
Condiciones → funciona igual que en el caso anterior.
-
Acciones → es una pantalla similar, con algunas diferencias:
-
Maximum Qty Discount is Applied To → cantidad máxima para la que se aplica el descuento.
-
Apply to Shipping Amount → aplicar también al coste de envio.
-
Envío gratuito
-
-
Labels → aquí podemos definir las etiquetas, que será la forma en que los visitantes de nuestra tienda verán nombrar la regla/promoción. De manera que noten que se está utilizando.
Categorías:
































