Agregar campos adicionales al formulario de contacto del sitio


18

Esto me parece extrañamente difícil. Lo que pensé sería un caso de agregar campos adicionales un poco como agregar campos a Tipos de contenido. Pero no. ¿No puedo ubicar ninguna instalación para agregar un campo de número de teléfono al formulario de contacto? ¿Alguien por ahí lo sabe?

Respuestas:


20

Esperar que los campos de formularios se configuren como tipos de contenido es una generalización excesiva. Los tipos de contenido son para contenido (texto, imagen, etc.) del sitio web, y más específicamente, en Drupal, para nodos (la pieza principal de contenido en Drupal). Usando el módulo Field y Field UI, uno puede agregar fácilmente campos al tipo de contenido usando una Web UI. Excepto en algunos casos específicos, un formulario no es parte del contenido de un sitio web, sino más bien una forma para que los usuarios agreguen y editen información, a veces contenido y a veces no.

Para personalizar (es decir, alterar) un formulario en Drupal, la forma habitual es crear un módulo personalizado que implemente el enlace . De esta manera, puede agregar elementos de formulario a formularios existentes proporcionados por otros módulos. Para utilizar la información de los campos agregados al formulario de contacto de esta manera, también deberá modificar el correo enviado utilizando una implementación de hook_mail_alter () . La siguiente guía lo guía a través de ambos pasos en Drupal 7. (Tenga en cuenta también este comentario )hook_form_FORM_ID_alter

Una solución sin código es usar el módulo Webform que proporciona un tipo de contenido de formulario y le permite agregar formularios como contenido a su sitio web. Estos formularios son configurables a través de una IU web. Se pueden configurar varios pasos de procesamiento para la información enviada a través de estos formularios. Uno de ellos es el envío de correos electrónicos. Usarlo para un formulario de contacto personalizado es un caso de uso común. Webform viene con sus propios conceptos y puntos de extensión. Si bien puede resultar una solución más fácil y rápida para formularios simples de una sola vez, también puede revelar que es demasiado grande y complejo de personalizar una vez que se alcanza un determinado umbral de características. El costo de agregar funciones adicionales a un formulario web puede superar la ganancia de evitar escribir un módulo personalizado en primer lugar.


1

Depende de qué módulo esté utilizando para su formulario de contacto. Algunos módulos proporcionarán una interfaz de fondo que no requiere programación para agregar campos adicionales. Un módulo muy popular con esta funcionalidad es Webform.

Salvo eso, los formularios en Drupal pueden ser alterados escribiendo un módulo personalizado usando el hook hook_form_alter. Hay muchos tutoriales sobre el desarrollo de mdoule y el uso de este gancho en particular.


1

Si está utilizando el módulo de contacto principal, espero que el módulo de campos de formulario de contacto pueda finalizar pronto para Drupal 7.

Este módulo permite agregar campos adicionales al formulario de contacto de todo el sitio, como la interfaz del módulo de perfil. El administrador puede definir los campos y estos estarán disponibles en el formulario de contacto de todo el sitio. Tenga en cuenta que estos campos no estarán disponibles para el formulario de contacto personal por ahora ya que no veo ninguna necesidad específica.

Si quieres algo ahora: 4 opciones:

  • Use un tipo de nodo y transfórmelo en un formulario de contacto.
  • Utiliza un formulario web.
  • Crea un módulo personalizado
  • O incluso mejor: ¡bifurca / ayuda al módulo contact_field! La página del proyecto acaba de actualizarse, por lo que al menos se mueve nuevamente y, una vez finalizada, ofrecería una forma muy agradable de agregar campos, al igual que en los tipos de contenido.

(agregando esto para buscar bot arena;))


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.