Cómo hacer un módulo con soporte multistore en Magento

Una de las características que no necesita presentación en Magento es su capacidad de ser multistore.

Si estuviéramos armando un módulo para mostrar contenido en el frontend de una tienda, deberíamos tener en cuenta ésta característica. (Por más obvio que suena, aún hoy siguen apareciendo módulos que no acusan recibo de esto)

Agregar ésta posibilidad a nuestro módulo es algo realmente sencillo. Para el ejemplo, vas a seguir jugando con el ya ultra modificado módulo Dc_Test.

Una vez que hayamos activado el módulo (como siempre, el creador de Módulos es de gran ayuda), veríamos una grilla y un formulario como los siguientes.

Grilla armada con el generador de Módulos para Magento
Formulario armado con el generador de Módulos para Magento
Seguir leyendo «Cómo hacer un módulo con soporte multistore en Magento»

Magento 1.6.0.0-alpha1 (versionando por versionar)

Con una cantidad importante de correcciones y cambios bastante profundos, el jueves 26 de mayo se publicó la versión 1.6.0.0-alpha1 de Magento.

A nivel mejoras, vamos a encontrarnos con opciones para SKU dinámico para productos configurables, cambios para Moneybookers y actualización de la librería Prototype a 1.7.

A nivel código, dados los fixes que se han hecho, son demasiados los cambios que vamos a ver.

En cuanto a lo inmediatamente visible, el primer cambio lo vamos a ver al instalar, ya que en la configuración de base de datos debemos elegir el tipo, si bien por el momento tenemos una única opción.

Seguir leyendo «Magento 1.6.0.0-alpha1 (versionando por versionar)»

Cómo obtener la versión de un módulo en Magento

Podría darse el caso en el cual necesitemos obtener información de un módulo para tomar ejecutar ciertas acciones.

Definitivamente es un escenario pensado para cuando creamos extensiones. Para el caso de un desarrollo completo, nuestro control del código y de la tienda es total.

Supongamos entonces que tenemos al ya ultra trillado módulo Dc_Test. Vamos a considerar que nuestro módulo se encarga de interactuar o incluso modificar algún comportamiento del módulo Mage_Newsletter.

No recuerdo ahora las versiones, pero si que tuve que lidiar alguna vez con modelos de ese módulo, que de una versión a otra habían sido eliminados.

La solución ante ese escenario sería reescribir el código de forma tal que funcione de la misma forma sin importar la versión, pero ¿y si existiera un caso en el cual esto no fuera posible?.

Seguir leyendo «Cómo obtener la versión de un módulo en Magento»

Magento 1.5.1.0 (sin sorpresas importantes hasta la versión 2)

Otra versión que reviso (minuciosamente) tarde. El 23 de abril se publicó la versión 1.5.1.0 de Magento. (Me sigue llamando la atención lo poco anunciadas de las últimas versiones)

El changelog no es más que la suma de los cambos mostrados en la versión beta y la rc. Sólo para hacer memoria, los cambios destacados son:

  • Actualización de Magento Mobile a las versión 20.
  • Se agregan excepciones para los Mensajes de Regalo en la API.
  • Mensajes de Regalo para el Carrito.
  • Implementada compatibilidad WS-I para la API.
  • Se remplaza el uso de Varien_File_Uploader por Mage_Core_Model_File_Uploader.
  • Ha vuelto el uso de almacenamiento alternativo.

Revisando el código se ven ajustes al módulo de PayPal, al de Impuestos y XmlConnect, entre otros.

Si es que ya no la están usando, es condición probar la versión en un entorno no productivo antes de dar el salto en producción.

En mi caso, hace ya poco más de una semana que la estoy usando para un proyecto nuevo y no parece haber problemas (por el momento).

Cómo crear una clase para el Shell en Magento

Cuando pensamos en módulos para Magento nos quedamos, normalmente, con agregar funcionalidad para el frontend o para el backend.

Creo que cuando pensamos en un módulo debemos imaginarnos los cuatro posibles entornos para su aplicación. Por los cuatro entornos me refiero:

  • Frontend o tienda propiamente dicha.
  • Backend o administración.
  • API.
  • Consola.

Si bien ésta división puede parecer arbitraria, éstas serán las posibles puertas de entrada que normalmente utilicemos (dependiendo sobre si nos toca ser usuario, administrador, desarrollador o el encargado del mantenimiento; o todo).

Claro está que no todos los módulos requieren funcionalidad en los cuatro entornos, pero en muchos casos deberíamos cuidar las formas y proveer de herramientas para cada caso.

En mi caso, desde hace ya un buen tiempo, me ha tocado desarrollar unas cuantas integraciones que importan o exportan información. Normalmente, con procesos manejados a través del Cron de Magento.

Seguir leyendo «Cómo crear una clase para el Shell en Magento»