Ir al contenido principal

Drupal 7 con Location + GMap

Hoy he dedicado algunas horas a lograr tener funcionando los módulos de Location y GMap en un proyecto con Drupal 7. En Drupal 6 los había hecho y no recuerdo haber pasado gran trabajo, salvo entender para qué y como funcionan ambos módulos. Pero para eso ya hay alguna información en internet así que no voy a entrar en ese punto.
Cuando se instalan y configuran estos módulos en los tipos de contenidos que tengamos, o que se creen a partir de ese momento, tendremos la opción de permitir agregar 'localizaciones' a los nodos. Esto lo encotramos cuando editamos cada tipo de contenido, como mismo configuramos las opciones para los comentarios, la publicación, etc. de los nodos que se creen dentro de este contenido, como se ve a continuación:



El problema que tenía era que cuando se creaba un contenido, en el formulario se podía georeferenciar sobre un mapa gracias a GMap, pero cuando se renderizaba el nodo mostraba los datos de Location como texto, es decir, la dirección y las coordenadas geográficas, pero no el mapa.
La solución se la debo a un colega del canal #drupal del IRC que me advirtió que Location agrega un tipo de campo 'location' en Fields. Si utilizamos este campo en nuestros tipos de contenido podremos geoposicionar los nodos que se creen.


Luego habrá que configurar el display de ese campo para que se muestre como mapa, porque por defecto muestra la dirección como texto. También tiene la opción de mostrar el texto y el mapa a la vez.

Por último señalar que si en la configuración del tipo de contenido no especificamos que el máximo de localizaciones posibles es 0, cuando se crea un nuevo nodo tendremos el campo tipo location que creamos más la opción de 'Location Information' del tipo de contenido, por lo cual apareceran 2 mapas en el formulario y puede crear confusiones a los usuarios. Así que recomiendo ajustar a 0 las localizaciones en el tipo de contenido para tener sólo en el formulario el campo 'location'.


1 comentario

Entradas populares de este blog

Ubercart, atributos o CCK ?

Ubercart (UC) es una gran solución para e-shops. Trabajando sobre el poderoso Drupal lo convierte en una herramienta muy adaptable a muchas situaciones. Recuerdo que cuando empecé a usarlo una de las primeras dudas que me asaltó la cabeza fue decidir que era mejor con UC: campos (fields) de CCK o los atributos (attributes) del propio UC. El uso de atributos y clases para categorizar los productos de la tienda puede resolver en muchas situaciones y está muy bien pensado. Pero como no todo es perfecto acabo de chocar con una de esas situaciones que parece ser la excepción de la regla y donde he tenido que sacrificar los atributos de Ubercart por los conocidos y siempre bienvenidos campos de CCK. La idea inicial era facilitar al vendedor que subiera un solo producto, con su modelo y precio básico, y que luego los clientes pudieran seleccionar los atributos requeridos. La cuestión se complicó porque los cinco (5) atributos asociados a la clase de producto X están muy poblados. Cuando inte…

Condicionar el destinatario de email en Webform, Drupal

A pesar de que Drupal cuenta en su núcleo con el módulo 'Contact' para generar un formulario de contacto por defecto, lamentablemente no es todo lo flexible que quisiéramos, espero que en el futuro se maneje como una entidad a la cual le podamos agregar campos. Por eso, algunas veces tenemos que recurrir a Webform cuando necesitamos un formulario de contacto personalizado. Como crear un formulario con el módulo Webform no es el asunto de esta entrada y existe bastante documentación. Lo que haremos será condicionar el correo electrónico de destino según el valor de un componente del formulario. Por ejemplo, el sitio web corporativo de una empresa X que en su formulario de contacto se le ha agregado una lista desplegable con diferentes temáticas: facturación, asistencia técnica, otros temas. Cuando se agrega un componente 'select options' en un webform es necesario para cada opción, agregar un par 'llave|valor', y usualmente le asignamos un valor entero o algún …

Drupal Commerce - producto con varios precios

Montando un marketplace con Drupal Commerce, apareció un caso de uso donde el cliente quería agregar a cada producto un precio de envío diferente. Por tanto no valía una Flate Rate u alguna solución clásica de 'shipping', así que pensé que Rules y encontré esta simple solución de Josh Miller:
La idea es agregar un campo 'envío' tipo 'price' al tipo de producto en cuestión, y luego con rules, sumar al precio del producto, el precio del envío.
Crear una nueva regla de cálculo de precio. Ir a admin/commerce/config/product-pricing/rules/add y darle un nombreAgregamos una primera condición "Entity has field" a la entidad "commerce-line-item" y seleccione el campo "commerce_product". Con este paso se carga el producto para la siguiente inspección.Segunda condición, cargamos el campo con el precio: "Entity has field" a la entidad "commerce-line-item:commerce-product" y seleccionamos el campo creado previamente en el ti…