Módulo de formulario web de Drupal. Creación de un formulario de pedido de productos.
Volvamos a nuestro catálogo de productos, que creamos en una de las lecciones anteriores. El catálogo se está llenando y mostrando correctamente, pero pedir un producto a través del formulario de contacto es bastante incómodo: hay que copiar el nombre, el código del producto y luego pegarlo en el formulario, además de escribir el mensaje. Vamos a crear un formulario que simplifique el proceso de pedido. Para ello necesitaremos el módulo Webform, que sirve para crear formularios en Drupal. Mediante este formulario enviaremos el nombre del producto y su cantidad; si necesitas también el código del producto, de forma análoga puedes añadir ese campo.
Descarga e instala el módulo Webform.
Tras la instalación debería aparecer un tipo de contenido Webform. Crea un nodo de tipo Webform y llámalo Formulario de pedido de producto (o como prefieras). Después de crearlo, serás redirigido a la página de configuración del formulario web.
Necesitamos crear dos campos: uno para el nombre del producto y otro para la cantidad. Para ello añadiremos dos textfield
(campos de texto).
En el campo de nombre escribe %get[product]
En el campo de cantidad podemos establecer el valor por defecto en "1".
También añadiremos un textfield
para el correo electrónico y un textarea
para comentarios o preferencias del cliente.
%get[product]
es el equivalente a la variable PHP $_GET['product']
, que obtiene el valor de la URL.
El formulario está listo; ahora hay que crear un enlace a este formulario y añadirle el parámetro product
en el que se incluirá el nombre del producto. Colocaremos este enlace en un bloque que se mostrará al pie de cada nodo de producto.
Para las siguientes operaciones es necesario habilitar el módulo integrado PHP filter, que permite insertar código PHP directamente en un bloque o en un nodo. Tras activarlo, aparecerá el formato de entrada PHP code.
Crea un bloque nuevo y selecciona el formato PHP code. En el contenido del bloque inserta lo siguiente:
<a href="<?php print base_path(); ?>node/6?product=<?php print drupal_get_title(); ?>">pedir producto</a>
donde node/6
es la ruta al nodo del formulario de pedido de producto.
La función drupal_get_title()
devuelve el título del nodo, que en nuestro caso es el nombre del producto; la función base_path()
devuelve la ruta base del sitio (por ejemplo, drupalbook.org/). Ahora hay que colocar el bloque en la región Contenido (Content) y configurar su visibilidad con PHP mode:
$types['tovar'] = 1; $match = false; if ((arg(0) == 'node') && is_numeric(arg(1))) { $node = node_load(arg(1)); $match = isset($types[$node->type]); } return $match;
Aquí tovar
es el nombre de la máquina (machine name) del tipo de contenido Producto.
Y con esto nuestro formulario de pedido de producto está listo.