Muchas veces tenemos errores en Magento que nos volvemos locos hasta conseguir una respuesta.

La mayor parte de las veces podemos solucionarlo fácilmente si seguimos una serie de pasos durante la puesta a punto de la tienda.

Os dejo una serie de tips básicos para seguir mientras desarrollamos nuestra tienda:

1.- Desactivar la caché (inhabilitarla):

Sistema > Gestor de la caché

2.- Habilitar el log de errores de Magento:

Habilitamos la opción de log: Sistemas > Configuración > Desarrollador > Log Settings
Y no olvidamos dar permisos de escritura al sistema (777) a la carpeta /var/log
Podemos comprobar que el log funciona con una llamada desde cualquier PHP:

Mage::log(‘Prueba de log – Hola mundo’);

3.- Quitar el anidamiento de ficheros javascript, por si existe algún error en un fichero javascript para poder localizar el error.

Habilitamos la opción de log: Sistemas > Configuración > Desarrollador > Merge JavaScript Files

4.- Si trabajamos con la edición de nuestro diseño activar el depurador.

- Sistemas > Configuración > Desarrollador
- Seleccionamos nuestro website (arriba a la izquierda)
- Aparecerán 2 nuevas opciones:
* Ayuda de rutas de la plantilla
* Add Block Names to Hints
Estas opciones nos mostrarán la ruta y el borde del bloque mostrado, ideal para localizar que fichero debemos editar en nuestro directorio template.

5.- Intentar localizar el fichero de log de errores de Apache.

Es el fichero que más información nos aportará, aunque no todos los proveedores de hosting dan acceso a él. Si utilizais cPanel (que lo dan casi todos los buenos proveedores) lo teneis bajo “Registro de errores”, si es un dedicado estará en el directorio log del directorio de instalación de Apache (aunque puede variar).

06 Octubre 2009

Retomamos los artículos después de un tiempo de vacaciones.

Vamos a intentar ayudar a resolver dudas de como cambiar de posición o de orden un bloque, o simplemente hacer que este no aparezca.

Cualquier diseño de Magento está formada por un gran número de bloques que se muestran en las columnas de la izquierda o de la derecha, todo depende de la plantilla de Magento que estemos utilizando. Cambiar la posición, el orden o realizar cualquier operación con estos bloques es muy sencillo.

Toda la gestión de módulos, bloques y complementos de una página de Magento se gestiona desde unos ficheros de extensión XML que encontramos dentro del directorio “layout” de nuestra plantilla: /app/desgin/frontend/<tienda>/<plantilla>/layout/

Estos ficheros tienen la estructura de cualquier fichero XML: tenemos una serie de etiquetas anidadas correctamente de la forma <etiqueta>, cerrados correctamente, con un único elemento raíz (en este caso <layout>), sensible a mayúsculas y minúsculas, con posibilidad de asignar atributos o valores a cada una de nuestra etiquetas siempre dentro de comillas, etc… Más información sobre los ficheros XML.

Por lo tanto modificando los atributos de una etiqueta, o asignando nuevos, podemos modificar la apariencia y la estructura de la plantilla.

Por ejemplo, tenemos el bloque que se encarga de mostrar la caja para comparar productos y la caja para productos relacionados con el producto actual:

<reference name="right">
    <block type="core/template" after="column_login" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
</reference>
<reference name="left">
    <block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>
</reference>

En este ejemplo encontramos que la etiqueta se llama <block> y que tiene una serie de atributos: type, after, name… Por supuesto cerramos la etiqueta con “/>” al final para respetar el estándar de codificación XML (también puede ser con </block>) Todo ello contenido dentro de una etiqueta llamada <reference>

¿Cómo cambio la posición de este bloque?

Para cambiar la posición del bloque nos fijamos en la etiqueta <reference> a la que tiene que pertenecer el bloque. En esa etiqueta encontraremos un atributo name que puede contener diferentes valores: left, right, header, footer, content… que como su nombre indica hace referencia a una zona de la plantilla de Magento.

Copiamos la línea de nuestro bloque y la pegamos en la nueva referencia donde queramos que aparezca.

Por ejemplo, en el caso anterior, si queremos mover la caja de comparación de productos, llamada catalog.compare.sidebar, la moveremos a la zona de referencia de la izquierda, quedando:

<reference name="left">
    <block type="core/template" after="column_login" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
    <block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>
</reference>

Recargamos nuestra página (no hay que olvidarse de la caché de Magento) y tendremos los bloques colocados en otra posición.

¿Cómo modifico el orden de los bloques?

Es posible que al cambiar los bloques de columna estos no aparezcan donde nos interesa. Modificar el orden de los bloques de una zona se realiza indicando uno de los atributos “before” o “after” o los dos a la vez.

Para mostrar el bloque como el primero de todos utilizamos:
before=”-”

Para mostrar el bloque como el último:
after=”-”

Para mostrar el bloque antes de otro bloque:
before=”nombre-del-bloque”

Para mostrar el bloque después de otro bloque:
after=”nombre-del-bloque”

En nuestro ejemplo anterior vemos que:

<block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>

mostrará el bloque de productos relacionados el primero de la columna izquierda.

¿Y donde indico la página a mostrarlo?

Los ficheros XML que se encuentran dentro de la carpeta “layout” hacen refencia a diferentes secciones del diseño , por ejemplo el fichero catalog.xml hace referencia a todas las secciones de tipo catálogo.

Si analizamos el fichero encontraremos todas las páginas que forman parte del diseño del catálogo: <catalog_product_compare_index>, <catalog_product_view>… y el más importante <default>

Si queremos definir un bloque para toda la estructura general lo incluiremos dentro de <default>, si queremos que nuestro bloque sólo se muestre dentro de la vista del producto lo incluiremos dentro de <catalog_product_view>.

¿Y si quiero evitar que aparezca el bloque?

Se puede dar el caso de querer que aparezca un bloque en toda la profundidad (utilizando <default>) excepto en una zona en concreto. En este caso utilizaremos, dentro de la referencia concreta:

<remove name=”nombre-del-bloque”>

Y si queremos evitar que aparezca toda la columna o cualquier tipo de referencia:

<remove name=”right”>
<remove name=”left”>

Que es lo que se utiliza cuando tenemos un diseño de varias columnas y en páginas como el checkout no nos interesa mostrar columnas.

Un último apunte…

Una de las dudas que más me preguntan es porque sigue apareciendo un bloque en un sitio aunque se le haya modificado la ubicación. Esto puede ser porque no hemos refrescado la caché desde el panel de administración o bien que dentro de las opciones de CMS la página en cuestión tiene definido su propio layout y contiene un bloque que sobreescribe lo que se le indica desde el fichero XML.

02 Octubre 2009

Hoy se lanza la nueva versión de Magento. Llevabamos ya algunos días esperando este lanzamiento y ya disponemos de ella, la versión 1.3.0.

La lista de cambios, actualizaciones y nuevas funciones se incrementan, pero hay que destacar una función por encima de las demás: la velocidad. En esta versión se ha intentado mejorar la velocidad de carga de la tienda en general, y para ello han creado un nuevo tipo de catálogo “flat catalog” ¿catálogo plano?.

Esta nueva mejora permite a las tiendas con muchos productos, las que más notaban y se quejaban de la velocidad de carga y rendimiento de su base de datos, cargar hasta un 40% más rápido que con versiones anteriores (al menos en teoría).

Pero no sólo tenemos nuevas funcionalidades porque hay pequeños cambios repartidos por todo el panel de control de Magento para ayudarnos con nuestra tienda, sobre todo la posibilidad de ordenar las listas de los productos de las categorías que se había solicitado innumerables veces en los foros.  Lo podemos hacer, como muchas de las otras opciones, a nivel global o a nivel de categoría.

Más opciones y una revisión con capturas la podemos ver en el blog de Damian Culotta.

31 Marzo 2009

Vía activecodeline he encontrado un pequeño truco para poder sacar el rol del usuario que está navegando por nuestras tiendas en Magento.

Es un tip muy útil si necesitamos diferenciar a usuarios para ofrecerles distintos precios, distintos mensajes o cualquier otra cosa. Por ejemplo, un usuario normal no tendrá el mismo precio que un distribuidor. Conociendo el rol del usuario podemos mostrar un atributo u otro en función de ese rol.

Lógicamente requiere que el usuario esté registrado, de lo contrario el usuario será siempre un usuario anónimo.

getCustomerGroupId();
$role = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
 
$role = strtolower(trim($role));
 
if($role == '<identificador_de_rol>')
{
    echo 'Bienvenido usuario con rol xxxxxx';
}

26 Marzo 2009

En toda tienda online una de sus partes fundamentales son los distintos métodos de pago disponibles para realizar nuestra compra. En muchas ocasiones el depender de uno u otro método puede originar una compra o un abandono del carrito. Mucha gente prefiere comprar con métodos conocidos y huye de métodos alternativos que no conoce.

Vamos a intentar resumir los principales métodos de pago que solemos utilizar (al menos en España) en nuestras tiendas. Como es lógico sólo hemos seleccionado los más conocidos, pero existen muchos más dentro de la sección de Magento Connect.

 

Sermepa / Servired
extension-magento-serviredServired es la pasarela de pago más utilizada para el pago de productos en España. Esta extensión, desarrollada por defcon2 y con soporte oficial en el foro de la comunidad española de Magento, ha evolucionado junto a las nuevas versiones que surgían de Magento y actualmente dispone de una versión estable y segura para poder conectar con la pasarela de Sermepa.
Al igual que el resto de pasarelas, esta extensión necesita de una serie de datos que nos tienen que proporcionar y que podemos añadir fácilmente desde nuestro panel de control de Magento.
Funciona correctamente con la última versión disponible hasta el momento de Magento (v1.2.1.2)

Enlace: extensión Servired/Sermepa

 

 

Pasat 4B
extension-magento-4bAl igual que ocurre con la gran mayoría de cajeros de este país, cuando el cajero no pertenece a la red Servired pertenece, por lo general, a un red 4b.
Este es el módulo que nos permitirá utilizar la pasarela española de 4b y que nos permite aceptar pagos de las principales tarjetas del mercado: Visa, Mastercard, Maestro… como también de MobiPay.

Lamentablemente esta extensión no es gratuita y tiene un precio algo elevado, 500€.

Enlace: extensión 4b
(Continue Reading)

17 Marzo 2009

Poner una tienda es algo que nos llevará un tiempo. Tendremos que instalar la tienda, escribir descripciones tanto para categorías como para productos, configurar nuestros métodos de pago, métodos de envío… en definitiva un tiempo en el que nos dedicaremos a lo que ya tenemos con la instalación del software de la tienda.

Y después, cuando ya tenemos todo casi configurado, con todos nuestros artículos con su correspondiente foto y su texto descriptivo, nos asalta la duda… ¿como puedo hacer para que mi tienda sea diferente a las otras?

Necesitamos tener un diseño bonito y único, algo que llame la atención a nuestro cliente nada más entrar en nuestra web. Yo siempre lo asocio a cuando vamos a comprar algo a una tienda física, nos llama más la atención una tienda moderna con grandes escaparates y mucha luz que no una tienda antigua, oscura y que no sabes muy bien lo que te vas a encontrar cuando pases por la puerta. Por supuesto podemos ir convencidos a una tienda “fea” porque nos la han recomendado, pero en muchas ocasiones no será así y entramos en tiendas que nunca antes hemos visitado. Todo se basa en la confianza que nos transmite la tienda en un primer vistazo.

El diseño personalizado de una tienda, o cualquier otra página web, a cargo de un estudio de diseño puede resultar caro… muy caro. Sólo nos queda una solución y es recurrir a las plantillas web.

Las plantillas web son una forma rápida, sencilla y muy barata de disponer de un diseño novedoso en nuestra tienda. Disponemos de muchas opciones de diseño, muchas de ellas orientadas ya hacía un tipo de tienda: productos informáticos, ropa, vinos… por lo que el diseño pasa de ser algo complicado y caro a ser algo sencillo y barato.

El proceso para instalar una plantilla web en Magento es muy sencillo, pero hay que tener en cuenta que las plantillas web que compremos vienen sin personalizar, por lo que tendremos que modificar algunas partes de ellas. Esto tampoco es un problema porque en muchas tiendas de plantillas web, como por ejemplo Eplantillas.com, nos entregan los diseños con el fichero de diseño original en formato PSD, Photoshop, y tan sólo tendremos que abrir el fichero y modificar la cabecera o aquellos elementos que queramos modificar; exportamos estos elementos (podemos sobreescribirlos) y ya tenemos una plantilla web totalmente personalizada.

¿Que no sabemos de diseño web y no tenemos ninguna idea de manejar Photoshop u otro programa de diseño? Tampoco es problema, porque por un poco más de precio podemos pedir que nos personalicen la plantilla y aún así nos saldrá un 80% más barata la plantilla web más personalización que si una empresa de diseño nos la realiza en exclusiva para nosotros.

Como conclusión vemos que es una manera fácil de ahorrar en el lanzamiento de nuestra tienda y ya sabemos que en cualquier nuevo negocio siempre debemos intentar reducir los gastos de inicio al mínimo.

16 Marzo 2009

26-02 2009

Desde la comunidad de Magento encontramos un aviso de seguridad por inyección de XSS en nuestro panel de administración.

Se explica como corregir editando los ficheros correspondientes. Seguramente en breve dispondremos de una nueva actualización de Magento corrigiendo estos errores, pero más vale corregirlo ahora que esperar.

3 fallos XMS en el admin de Magento

26 Febrero 2009

Muchos de vosotros antes de lanzar una tienda basada en Magento probais vuestra tienda y como funciona Magento en local. Generalmente en local, para ahorrar tiempo o quebraderos de cabeza, acudimos a programas que nos instalan PHP+MySQL+Apache directamente. Uno de estos programas, y uno de los más famosos, es Xampp.

Sin embargo, cuando intentamos instalar Magento sobre Xampp vemos que la instalación no avanza o que recibimos un error de que no tenemos activado innoDB en nuestro MySQL.

¿Qué es innoDB?

Podemos definirlo rápidamente como una serie de tablas que permiten realizar transacciones entre tablas relacionadas, lo que nos ofrece la posibilidad de tener una integridad entre datos y/o tablas creadas bajo MySQL. La otra tecnología que se usa generalmente en MySQL es MyIsam. Más información en la wikipedia.

¿Cómo podemos activar innoDB?

Para activarlo debemos editar el fichero de configuración de MySQL: my.cnf que dependiendo de nuestro sistema operativo estará en uno u otro sitio.

En window podemos encontrarlo en mysql/bin y en linux dentro de la carpeta etc de nuestra instalación.

Abriendo este fichero, tendremos que comentar la línea donde aparece “skip-innodb’ y descomentar las siguientes líneas, quedando de la siguiente forma:

# Comment the following if you are using InnoDB tables
#skip-innodb
innodb_data_home_dir = "D:/xampplite/mysql/"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "D:/xampplite/mysql/"
innodb_log_arch_dir = "D:/xampplite/mysql/"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
## Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

Reiniciamos nuestro MySQL y ya tendremos soporte innoDB en nuestra instalación Xampp.

NOTA: Esto se puede aplicar a casi cualquier instalación de MySQL, pero en nuestro caso se ha utilizado Xampp.

24 Febrero 2009

Si en nuestra instalación en local tenemos problemas al acceder a nuestro panel de control, después de haber comprobado que estamos escribiendo correctamente nuestro usuario y contraseña (si no lo estamos podemos modificar la contraseña de Magento) el problema puede estar ocasionado por el nombre de dominio que estamos utilizando en local.

Generalmente en una instalación local utilizamos un nombre simple y sencillo para hacer pruebas de nuestra instalación de Magento: localhost, magento, pruebas…

Magento, por seguridad, comprueba el dominio guardado en la cookie que se guarda cuando accedemos con nuestro nombre de usuario.

En este dominio debemos tener un punto para que la verificación sea la correcta.

En los dominios de internet siempre tenemos un punto, al menos el que separa el nombre de dominio de la extensión, y magento, para evitar posibles intentos de acceso no deseado comprueba que el dominio este formado de forma correcta.

Por lo que para solventar este problema tan sólo tenemos que modificar nuestro host y ponerlo con algún punto: magento.pruebas, pruebas.magento, etc.

13 Febrero 2009

12-02 2009

Algunas funciones de Magento requieren, para un funcionamiento correcto, que se ejecuten una serie de tareas cada cierto tiempo. No es algo obligatorio y podemos funcionar tranquilamente con nuestra tienda. Sin embargo, hay mucha gente que en su tienda tiene o utiliza varias monedas en el precio de sus productos y necesita, entre otras cosas, una actualización del cambio de monedas de Magento, tal y como se realizaba en osCommerce.

Para este, y otras tareas, Magento dispone de un fichero al que llamar periodicamente que se encarga de actualizar todos los servicios.

Para activar el cron de Magento necesitamos, además de acceso a nuestro panel de control, tener acceso a nuestra máquina, bien por SSH, bien por CPanel, Plesk, etc.

En primer lugar accedemos a nuestro panel de control y en la zona de Configuración / Avanzado podemos seleccionar las monedas que tenemos instalads, la limpieza de logs, etc.

Ahora vamos a instalar nuestro cron.

Lo único que tenemos que hacer es programar el crontab de nuestro sistema Linux para que llame al fichero “cron.php” que se encuentra en la carpeta raíz de nuestra instalación de Magento.

Si disponemos de acceso SSH a nuestra máquina de alojamiento, accedemos y escribimos lo siguiente:

crontab -e

Y estaremos en el editor que nuestro sistema tenga configurado para editar el crontab.

Ahora escribimos:

* 3 * * * /ruta/a/bin/php -f /ruta/absoluta/de/nuestro/magento/cron.php

Guardamos y nuestro cron habrá quedado programado para ejecutarse todos los días a las 3.

Para más información de las configuraciones de crontab podemos ir a la wikipedia.

¿Y si no tenemos acceso SSH/Consola?

Otra posibilidad es hacerlo directamente en nuestro panel de control del alojamiento. Generalmente tendremos CPanel o Plesk, por ser dos de los más extendidos, pero el sistema es el mismo para todos. En este caso vamos a dar las instrucciones para Cpanel.

Vamos a nuestro panel de control y pulsamos sobre la opción de Cron Jobs.

Pulsamos sobre el botón de Standard.

En el campo de “Command to run” escribimos la orden de php (php -f) junto con la ruta donde tenemos instalado nuestro Magento. La ruta absoluta.

php -f /home/<nombre de usuario>/public_html/cron.php

o

php -f /home/<nombre de usuario>/htdocs/cron.php

esta ruta puede variar en cada uno de nuestros servidores, además debemos modificar “nombre de usuario” por el nombre de usuario que nos han asignado.

Seleccionamos las opciones de la siguiente manera:

cron-magento-cpanel

Pulsamos sobre “Guardar” y tendremos nuestro cron preparado.

 

 

Importante: Es posible que no todos los alojamientos den la posibilidad de ejecutar tareas programadas con el cron. En caso de duda consultaremos con nuestro proveedor.

12 Febrero 2009