Provincias en un formulario de contacto personalizado en Magento

Supongamos que necesitamos armar un formulario de contacto adicional al que ya provee Magento. Supongamos también que necesitamos utilizar datos de la plataforma.

En éste ejemplo vamos a ver cómo invocar las provincias/regiones en nuestro formulario.

La porción de código referente al dropdown que mostrará las regiones se vería, pensando en el skin default, de la siguiente manera:

<div class="input-box">
    <label for="state"><?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
    <?php $_regions = Mage::getModel('directory/region')->getCollection();?>
    <select name="state" id="state" class="required-entry validate-select">
        <option value=""><?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
        <?php foreach($_regions as $_region): ?>
            <option value="<?php echo $_region->getName(); ?>"><?php echo $_region->getName(); ?></option>
        <?php endforeach; ?>
    </select>
</div>

El resultado de éste código seria el siguiente.

Ahora bien, no buscamos todas las provincias, estados o regiones que tenemos disponibles, sino que vamos a filtrar según un país dado.

En el ejemplo, previo instalación de la extensión Dc_Argentineregions, vamos a buscar obtener sólo las provincias de Argentina.

Para esto, tenemos que hacer un pequeño cambio a nuestro código.

<div class="input-box">
    <label for="state"><?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
    <?php $_regions = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter('AR')->load();?>
    <select name="state" id="state" class="required-entry validate-select">
        <option value=""><?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
        <?php foreach($_regions as $_region): ?>
            <option value="<?php echo $_region->getName(); ?>"><?php echo $_region->getName(); ?></option>
        <?php endforeach; ?>
    </select>
</div>

Y el resultado será el siguiente:

Lo que hicimos fue cambiar el método de lectura del modulo y agregarle el método addCountryFilter pasandole el código del país que necesitamos.

Posted in Magento | Tagged , , , , | 2 Comments

Magento 1.4.0.0 (al fin la versión estable)

Al fin podemos contar con la tan esperada versión 1.4.0.0 de Magento.

A lo largo de las versiones previas (alpha, beta y release candidate) fuimos viendo el set de nuevas funcionalidades y mejoras que se estaban preparando. Vale decir que que desde la rama 1.2 no se notaba tanta ansiedad por el lanzamiento.

Un breve repaso por los puntos más destacados:

  • Mejoras en la integración con PayPal.
  • Cambios en la lógica e implementación de plantillas y temas. Aquellos que debamos maquetar, comenzaremos a lidiar con nuevo personaje: base.
  • Mejoras en la gestión de backend.
  • Cambios en la gestión de errores y se suma el 503 como nuevo tipo.
  • Merge de archivos JS, generando un archivo estático.
  • Widgets: los nuevos chiches de las páginas estáticas.
  • Integración nativa de editor WYSIWYG.
  • Se reemplaza, al fin, el popup flash de las notificaciones por uno html.
  • Url de productos y categorías a nivel de store view.

Dada la cantidad de cambios, técnicos y funcionales, deberemos dedicarle un buen tiempo a recorrer nuevamente la plataforma.

Creo que éste cambio de versión supone muchos cambios, supongo que la adopción de ésta versión en producción será un poquito más lenta que en otros casos, ya que deberemos validar tanto las extensiones como los templates.

Posted in Magento | Tagged , , | 22 Comments

Dc_ArgentineRegions 0.2.0

Acabo de publicar una actualización de ésta versión, la cual corrige un problema del instalador.

En la versión inicial, por apurado, se utilizaba sql puro para insertar los valores. En ésta versión se respetan las formas de la plataforma para evitar el error que se daba al utilizar prefijos en las tablas dentro de la base de datos.

La versión ya está disponible para ser descargada.

La url de la extensión es: http://www.magentocommerce.com/extension/2619.

Posted in Magento, Mis extensiones | Tagged , , , , | Leave a comment

Magento 1.4.0.0-rc1 (a centímetros de la versión final)

Como bien se había adelantado anoche, hoy ya tenemos disponible Magento 1.4.0.0-rc1.

Es la primera versión candidata y suma una serie de mejoras (la verdad es que sorprende gratamente varios de los cambios que se han introducido); el detalle se encuentra en el changelog de la versión.

Algo interesante de la lista de cambios, es que han incluído, por primera vez, un avance de lo que se espera incluir en la versión estable (en éste caso está relacionado con funcionalidades de medios de pago).

Supongo que para cuando se publique la versión definitiva, vamos a tener que hacer un repaso de todos los cambios que se implementan entre las dos versiones estable (1.3.2.4 y 1.4.0.0), pero por lo pronto, algunos puntos a destacar son:

  • Mejoras en los temas, aplicando cambios a nivel html, css, accesibilidad y con mejora para SEO.
  • PayPal sigue recibiendo ajustes por todos lados.
  • Mejora de performance en los Reportes. (Creo que éste es el módulo más “flaco” de la plataforma).
  • Más de performance, pero ésta vez en el Indexador del buscador.
  • Se agrega la página de error 503.
  • Ya no se utilizará el archivo php que mergea todos los js y los manda al navegador en un único gran archivo. Se ha reimplementado la función y se genera un archivo estático. Ahora la url de llamada quedaría parecido esto: http://www.dominio.com.ar/media/js/98c1e2dc916a2f3c980226a4cb0bae11.js

Es un momento oportuno para ponerse a controlar compatibilidad de extensiones y comenzar a pensar los pasos para una migración sana (supongo que Febrero va a ser un mes que se va a caracterizar por toneladas de posts en los foros oficiales pidiendo ayuda o mostrando problemas con los upgrades).

Posted in Magento | Tagged , , | Leave a comment

Magento 1.4.0.0-beta1 (novedades a diestra y siniestra)

Ya mucho se han enterado, creo que desde la versión 1.2 no había tanto interés en una nueva release.

Desde el 8 de Diciembre de éste año contamos con la Beta 1 de Magento 1.4.0.0.

Definitivamente, la lista de cambios es grande (muy grande). Sólo basta con ver el changelog.

Desde la alpha 3, se nota (y en ésta beta mucho más) la mejora de performance. Sin grandes ajustes, comparando las distintas versiones out-of-the-box, ésta última release se lleva todos los premios.

Por supuesto, los widgets siguen siendo las estrellas visuales y funcionales de ésta nueva versión. Ya podrán resolverse muchas cuestiones de contenido (hasta ahora) estático, de forma visual (ya hay varias extensiones bajo la categoría widget).

Como decía, la lista de cambios es particularmente numerosa. En algún punto, se nota la influencia de la versión Enterprise (aunque algunas funcionalidades son bienvenidas, hay cambios que se siguen esperando).

Algunos de los cambios no menores que destaco son:

  • Mejoras en las variables para plantillas de email. La interfase actual es mucho más amigable, existen referencias a la variables a utilizar y de forma gráfica podemos incluirlas. También contamos con al posibilidad de definir estilos para cada template.
  • Creación de variables personalizadas para utilizar en las plantillas.
  • Muchas configuraciones se realizan de manera gráfica (dense una vuelta por el backend, en Sistema -> Configuración).
  • Refactorización del modelo del Onepage Checkout.
  • Mejoras de performance (insisto, se nota).
  • Varios cambios en los widgets en comparación a su antecesora.
  • Actualización del Zend Framework a la versión 1.9.4

La lista de mejoras es realmente extensa. En ésta oportunidad no sólo cuestiones funcionales, sino de código (tanto en líneas como en lógicas) que nos van a obligar a repasar algunos fundamentos.

También se viene notando un movimiento más amable para con la comunidad, aunque pensar que se volverá a la luna de miel que se vivió durante el 2008, es demasiado inocente.

El CAB viene trabajando en pro de atender a varios de los pedidos y reclamos que se han lanzado desde la comunidad. Si bien está claro que esto no es inmediato, todavía pienso que se necesitan algunas señales un poco más contundentes.

Hay que destacar dos cuestiones: el Magento UserVoice ha resultado una buena forma de concentrar peticiones; y se sabe que se está trabajando en lograr mejor (o al fin) documentación oficial.

Ahora si, a seguir testeando. Recuerden que sólo la versión estable debería utilizarse en producción, por lo cual no es recomendable usarla para otra cosa que no sea testing.

Por hoy ésto es todo, ahora esperamos ansioso la versión 1.4.0.0-rc1 que está anunciada para las próximas horas.

Posted in Magento | Tagged , , | Leave a comment

Dc_ArgentineRegions 0.1.0 (versión única)

Magento incluye las provincias (o estados) de algunos países solamente.

En éste caso, ésta extensión agrega las provincias de Argentina para simplificar el proceso de carga del checkout para aquellas tiendas que funcionen en dicho país.

A continuación, la página de Dc_ArgentineRegions.

Regalo Nº 1, publicado.

Posted in Magento, Mis extensiones | Tagged , , , , | 2 Comments

No estaba muerto, estaba de parranda

Parafraseando a la rumbera “El muerto vivo”, es que retomo mis cuestiones online.

Hace no mucho, alguien me dedicó un “que en paz descanse”. Bueno, usted verá… “estaba tomando caña”. (No te alcanzan las cabezas para entender en qué andaba).

Dicho esto, vuelvo a ocuparme de manera un poco más prolija del blog, y como yapa, se vienen unos cuantos regalitos.

Posted in Sin importancia | 6 Comments

Convertir productos simples en virtuales en Magento

Cada tanto suele aparecer la misma pregunta (en alguna de sus dos variantes): ¿como hago para convertir un producto simple en un producto virtual? (o podría ser el caso inverso).

En líneas generales, dentro de Magento, los productos simples y los virtuales son lo mismo (atributo más, atributo menos). Veamos un ejemplo de producto simple.

+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
| entity_id | entity_type_id | attribute_set_id | type_id | sku            | category_ids | created_at          | updated_at          | has_options | required_options |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+
|         3 |              4 |                4 | simple  | simple-product | 4            | 2009-12-12 18:31:36 | 2009-12-12 18:31:36 |           0 |                0 |
+-----------+----------------+------------------+---------+----------------+--------------+---------------------+---------------------+-------------+------------------+

Como ven, en la columna type_id se especifica qué tipo de producto estamos usando.

La gran diferencia entre un tipo de producto y otro, dada su naturaleza, es que el virtual no necesita de especificación del método de envío (dado que es un producto que no se enviaría).

Si vemos el checkout de un simple, el 3º y 4º paso hace referencia a los envíos.

Checkout de un producto simple en Magento

Continue reading

Posted in Magento | Tagged , , | 2 Comments

Iniciar un proyecto con CodeIgniter

En Php podemos encontrar gran cantidad de frameworks que buscan resolver cuestiones estructurales al momento de plantearnos una aplicación. Uno de ellos, es CodeIgniter.

Este post no trata sobre vender las bondades del framework, sino sobre cómo empezar a usarlo.

Inicializar un proyecto es algo bastante sencillo y rápido.

Lo primero será descargar CodeIgniter.

Una vez descomprimido el paquete (y suponiendo que lo ubicamos en el directorio del proyecto) nos vamos a encontrar con la siguiente estructura.

/
|
+--/ system
|
+--/ user_guide
|
+-- index.php
|
+-- license.txt

Ahora, si apuntamos con nuestro navegador hacia la dirección/carpeta en donde esté el proyecto, tendríamos que ver la siguiente página.

Bienvenida de CodeIgniter

Continue reading

Posted in CodeIgniter, Php | Tagged , , | 3 Comments

Accediendo a configuraciones de Magento

Hace unos días me tocó armar una extensión en la cual se sobreescribían varios bloques, controladores y modelos de Magento.

El problema con el cual me encontré, era que necesitaba obtener valores de configuración (de los que se almacenan en la tabla core_config_data) en módulos que no eran los originales.

Normalmente, dentro de un módulo que guarda valores en esa tabla, utilizamos algo como ésto para recuperar dicho valor.

<?php
$this->getConfigData('clave_a_buscar');
?>

Ahora bien, con $this sabemos que estamos en nuestro módulo y lo que busca es la calve.

El caso que comento tenía una diferencia: $this no era $this. Es decir, $this es un módulo creado por mi, pero la configuración pertenece a otro módulo.

Para poder solucionarlo, el truco consiste en llamar al método de forma estática y en lugar de pedir sólo la clave que buscamos, tenemos que indicar el path completo.

<?php
Mage::app()->getStore()->getConfig('mi_modulo/mi_clave');
?>

De ésta manera, obtenemos cualquier valor de configuración, en cualquier lugar del código, sin importar el scope.

Posted in Magento | Tagged , , , , | 8 Comments