Guardar una variable pasada por URL en webform

Pongamos el caso de que tenemos un formulario al que se puede acceder de diversas formas: a través de un enlace en la misma web, a través de anuncios en Facebook, a través de anuncios en Google AdWords… una forma de saber por donde ha venido más gente es crear parámetros que acompañen a la URL original, por ejemplo:

  1. Desde la misma Web: http://www.example.com/webform?misma-web
  2. Desde Facebook: http://www.example.com/webform?facebook
  3. Desde Google: http://www.example.com/webform?google

Estos enlaces los colocamos cada uno en su plataforma correspondiente, y luego mediante herramientas de analítica Web como Google Analytics podemos hacernos una idea de cuantas personas accedieron al formulario y desde donde lo hicieron.

Guardar el valor de los parámetros

Pero si además queremos almacenar el dato del parámetro en nuestro backend, de modo que podamos exportarlo después en Excel o CSV para realizar cálculos o estimaciones, tenemos que tocar código. Primero crearemos en nuestro Webform un campo oculto llamado ‘Piloto’ cuya clave o nombre de máquina será ‘piloto’. Seguidamente creamos un módulo que se sirva del hook hook_node_view para detectar que estamos viendo el formulario deseado, y si es así meteremos el parámetro en una variable de sesión con el mismo nombre:

Como vemos detectamos el formulario actual mediante el valor de su nid, luego comprobamos si existe algún tipo de parámetro y si es así lo metemos todo en la variable de sesión. ¿Por qué? porque queremos conocer de donde viene el usuario, y puede ser que no rellene el formulario a la primera. Puede ser que se vaya a otra página de nuestra Web y vuelva, con lo cual los parámetros se habrán perdido y no los podremos guardar. Pero si lo hacemos con variables de sesión, el problema se arregla.

Lo siguiente es alterar el formulario para meter en el campo oculto ‘piloto’ o bien el variable del parámetro (si existe) o bien la variable de sesión. Lo hacemos con hook_form_alter:

Cuando el usuario le dé a guardar, almacenaremos desde donde ha hecho click.

Experto en la Gestión de Proyectos Web basados en Drupal con más de 8 años de experiencia. Desarrollo Full Stack (Front-end, Back-end, Site-Builder).

No Replies to "Guardar una variable pasada por URL en webform"