it-swarm-es.com

¿Cómo puedo conectarme al proceso de envío de mensaje de formulario de contacto del sistema y modificar el HTML generado?

Tengo un Drupal sitio donde estoy usando el contacto de todo el sistema para permitir que los visitantes envíen mensajes al propietario del sitio. Una vez que un visitante envía el formulario, el usuario es redirigido a la página de inicio y aparece un adhesivo en la lectura superior:

Su mensaje ha sido enviado

Mi pregunta entonces, ¿es posible cambiar este mensaje y agregar algo de HTML a la salida? Idealmente, agregaría algunos JavaScript para crear una vista de página virtual para la cuenta de Google Analytics, de modo que pueda realizar un seguimiento como una conversión de objetivos.

Me imagino que esto sería una función hook_ en mi archivo de plantilla, pero soy relativamente nuevo en este proceso.

7
shanabus

Claro, solo use hook_form_alter () y agregue una devolución de llamada a $ form ['# submit']. La forma más fácil de encontrar la identificación de su formulario es inspeccionándola con firebug. Este artículo tiene mucha más información detallada: http://www.lullabot.com/articles/modifying-forms-drupal-5-and-6 .

En breve:

  • Encuentre la identificación del formulario de contacto, "contact_mail_page" o algo (observe cómo las vidas se convierten en guiones bajos)
  • En un nuevo módulo personalizado, implemente: yourmodule_form_alter($form_id, &$form, 'contact_mail_page') o yourmodule_form_contact_mail_page_alter($form_id, &$form)
  • Modifique el formulario de contacto como desee utilizando la variable $ form que se pasa por referencia
5
Alex Weber

El módulo formulario web podría ser más adecuado para sus necesidades si es solo un formulario general de todo el sitio.

1
user630

@shanabus, entiendes que "escribir un gancho para un módulo" es incorrecto. El objetivo principal de crear un enlace personalizado para cualquier módulo existente, incluido un módulo del sistema, es anular el comportamiento. Así es como se personaliza Drupal a las necesidades de un sitio específico. No editará el código existente, sino que agregará un código nuevo que usa el sistema "hook" para agregar funcionalidad nueva/de reemplazo.

Por lo general, una función de enlace personalizada vive en un módulo personalizado creado específicamente para el sitio por el autor del sitio. Considérelo un lugar para almacenar las personalizaciones específicas de su sitio que no compartirá con la comunidad mayor Drupal. Un uso clásico sería un hook_form_alter como Alex sugiere anteriormente.

Considere consultar la documentación de la API de gancho para obtener más detalles: http://api.drupal.org/api/drupal/includes--module.inc/group/hooks . Este es a menudo un concepto con el que los nuevos desarrolladores Drupal) luchan, así que no se desanimen si se necesita un esfuerzo adicional para resolver el concepto. Todos hemos estado aquí :)

0
DeeZone