Bloque

No siempre un módulo es lo mejor ;)

Bloque

Hace unos días, preparando un proyecto para un cliente nos surgió un pequeño dilema ¿Usar un módulo específico para un tipo de operación o bien utilizar módulos más comunes como views para hacer algo parecido? La cuestión es que necesitabamos preparar un gestor de publicidad con todo lo que puede utilizar un usuario medio pero sin todas la complejidad de los módulos específicos. En resumen necesitábamos algo  MUY ágil y sencillo para gestionar "una publicidad" que aparecerá en unos determinados nodos o vistas. Drupal dispone de varios módulos, los cuales probamos para ver si era lo que necesitabamos.

Ad era sin duda la mejor opción, pero es tan "grande" que parecía que estabamos matando moscas a cañonazos. Probamos con SimpleAds , también un genial módulo pero al igual que ocurría con el anterior... demasiado grande.

Así que decidimos hacerlo de una forma "artesanal", usando views y un poco de código.

Drupal modules

Lo primero que preparamos fue un tipo de contenido publicidad con los campos que necesitábamos, no son muchos:

  • Título
  • Cuerpo de la noticia
  • Imagen/banner
  • Localización (Taxonomia)
  • Tema (que es un campo que comparte con otro tipo de nodo)
  • Fecha (Inicio y fin)
  • Enlace

Una vez listo, preparamos una views con 2 contextual filters que son la localización y el tema. El bloque generado por la views sólo se mostrará en un determinado tipo de contenido y para elegir cuál usamos la "maravillosa" API de views3... hook_views_query_alter(&$view, &$query) para ello, por ejemplo, para el tema, lo unico que hacemos es buscar el valor de ese campo en el nodo cargado y modificar la query de la views.

Ej:

$id_nodo = arg(1); // Cargamos la id del nodo actual
    $result = db_select('TABLA', 'u') 
      ->fields('u', array('CAMPO'))
      ->condition('entity_id', $id_nodo, '=')
      ->execute() ->fetchAll();
    $tema = $result[0]->CAMPO_value;
    $query->where[0]['conditions'][1]['value']= $tema;

De esta forma ya tenemos nuestro mini-gestor de publicidad. Pero necesitábamos tambien contar con estadísticas de clicks. Tiramos de otro módulo que tambien usaba ya el proyecto para generar url cortas:  ShURLy (mola como suena :P). Así, poniendo la url corta en el enlace del nodo publicidad podemos tener los "clicks" que se han hecho en anuncio concreto.

Además de todo esto, preparamos un views de administración para poder "gestionar" de forma directa —y, por tanto más sencilla— la publicidad.

En este ejemplo hablamos de gestión de espacios publicitarios, pero echándole un poco de imaginación pueden surgir bastantes más utilidades sin necesidad de instalar más módulos

Bloque

En geekia diseñamos servicios y productos digitales pensados para las personas. Si quieres que te ayudemos a crear experiencias relevantes para tus clientes, contacta con nosotros.