Ir al contenido principal

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 código como las abreviaturas de países o idiomas por ejemplo: '1|azul' o 'ES|España'.
La clave está en agregar la dirección de correo a la cual queremos hacer llegar la entrada del webform según lo que el usuario seleccione en el componente 'select options'. Volvemos al ejemplo anterior y agregaríamos:

  • economia@miempresa.com|facturación
  • soporte@miempresa.com|asistencia técnica
  • atencioncliente@miempresa.com|otros temas
Luego en la pestaña 'E-mails' del webform seleccionamos en la primera columna de la tabla 'Email to' la opción de 'Component value' y le indicamos el nombre del componente del 'Select options' que determinará a que dirección de correo llegará cada entrada que se realice del webform según la selección del usuario.


Comentarios

Entradas populares de este blog

Actualizar Ruby con RVM en OS X 10.9 Maverick

Cocoapods me pide una versión de Ruby mayor que 2.0, pero Maverick viene por defecto con 1.9.3 así que tiré de rvm pensando que serían un par de líneas pero no, he pasado un buen rato en el proceso. Hagamos el cuento corto:

$rvm list known

y no aparece ninguna versión 2 o superior, así que:
$rvm get latest

y ahora con:
$rvm list known

tenemos:
# MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p431] [ruby-]1.9.2[-p330] [ruby-]1.9.3[-p551] [ruby-]2.0.0[-p643] [ruby-]2.1.4 [ruby-]2.1[.5] [ruby-]2.2[.1] [ruby-]2.2-head
ruby-head
ahora si,
$rvm install 2.2.1
pero
Error running 'requirements_osx_brew_libs_install automake libtool libksba', showing last 15 lines of /Users/hedmon/.rvm/log/1428514809_ruby-2.2.1/package_install_automake_libtool_libksba.log
Las dependencias estaban instaladas pero no linkeadas, así que vamos a resolverlo con Homebrew.
$brew update $brew upgrade $brew link automake libtool libksba
ahora vuelvo a intentar $rvm install 2.2.1

Entonces …

Eclipse total de sol, 20 de marzo de 2015

La vida me premió con la oportunidad de ver un evento astronómico espectacular como es un eclipse de sol, que unos pocos afortunados más al norte pudieron disfrutarlo en su versión total, aunque desde el centro de Europa pudimos apreciar más de un 70% del fenómeno y con un clima despejado.

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…