Personalizar la página de error en Magento

Hace unos días me topé con un proyecto que tenía como marca distintiva el haber aplicado todas y cada una de las malas prácticas, todas, dentro del mismo proyecto.

Uno de los errores que me parecieron más burdos, fue el hecho de modificar los archivos del gestor de errores de Magento (si, la pantalla que nos aparece mostrándonos un número de reporte).

Si bien esto puede considerarse un tema menor, será un problema al momento que debamos hacer un upgrade de versión. Como siempre, la plataforma tiene una forma de manejar este caso y es bastante sencilla.

Por defecto, la pantalla de error se ve así.

Página de error de Magento

Ya sea que por cuestiones gráficas o funcionales necesitemos cambiar la presentación de errores, la forma correcta de hacerlo es demasiado simple.

Seguir leyendo «Personalizar la página de error en Magento»

Métodos para agregar imágenes a los productos vía código en Magento

Uno de los desarrollos en los que más participo dentro de los proyectos Magento, suelen ser las integraciones entre cualquier sistema externo y la tienda, ya sea que se envíe o se reciba información.

Si bien ya van 7 años con con la plataforma y las integraciones, por más que algunos procesos ya están bastante logrados y no necesitan reprogramación, sólo configuración; siempre es necesario hacer algún ajuste o cambiar alguna lógica, ya que cada tienda es única.

Una de las entidades/procesos que rara vez se salva de ser reprogramada en las integraciones, es el catálogo. Incluso, dentro del propio mundo que puede resultar el catálogo de una tienda, la gestión de imágenes de los productos que se sincronizan también suele ser diferente entre un proyecto y otro.

Al momento de asociar imágenes a un producto, vía código, podemos pensar en 3 métodos diferentes (no es para tomar como algo definitivo, pero serían 3 las formas de atacar la tarea).

Para los distintos ejemplos, vamos a considerar que tenemos un único producto (en mi caso, el entity_id 1), con N cantidad de imágenes que se encuentran dentro de del directorio media/import.

Editar las imágenes de un producto en Magento
Seguir leyendo «Métodos para agregar imágenes a los productos vía código en Magento»

Configurar Nginx para usar una instancia de Magento y multiples websites

Hace unos días me puse a jugar con Nginx y con Magento. Una de las cosas que me complicó un poco, al principio, fue la de no tener el archivo .htaccess a disposición para armar una tienda multi-website con una única instancia.

Luego de investigar un poco, el truco está en el uso del módulo map de Nginx.

Por ejemplo, si asumimos que tenemos configurada nuestra tienda en:

/etc/nginx/sites-enables/dominio.com.ar

Vamos a editar nuestro archivo y vamos a agregar, fuera del bloque server, el bloque map, con algo como esto:

Seguir leyendo «Configurar Nginx para usar una instancia de Magento y multiples websites»

Cómo crear un placeholder configurable para nuestros módulos en Magento

Hace un tiempo me tocó crear, para la tienda Best Kiteboarding, un módulo algo más complejo que lo que normalmente uno acostumbra a hacer.

El módulo en cuestión crea una nueva entidad EAV para la gestión de los riders dentro de la tienda, permitiendo gestionar cualquiera de los atributos, con soporte multi-store view, controllers dinámicos (permitiendo configurar las url’s de acceso), galerías de imágenes, relación con productos, etc, etc.

Seguramente, de lo hecho con el módulo, se irán desprendiendo unos cuantos posts, ya que cubrir todas las funcionalidades en uno solo sería demasiado extenso.

Más allá de las funcionalidades mencionadas, uno de los temas a cubrir fue el de permitir, vía configuración, poder gestionar hasta el más mínimo detalle, dando total independencia al usuario de la tienda.

Uno de esos detalles, que a nivel frontend se notan, fue el manejo de imágenes. En el caso de la tienda, para cada rider, se gestionan distintas imágenes (avatar, imagen principal, galería de imágenes y galería de videos).

Seguir leyendo «Cómo crear un placeholder configurable para nuestros módulos en Magento»