How to Add a Field to the Drupal Contact form
by Joaquin Lippincott, President & Founder
Ever wish you could use the existing Drupal Contact module as your sitewide contact form and just add a field or two? You can and it's really easy. All you need to do is create a new module and add the fields via the hook_form_alter() function. Here's an example of how we do it on metaltoad.com:
<?php /** * Implementation of hook_form_alter(). * @see http://api.drupal.org/api/function/hook_form_alter * We add a few custom fields to the default Drupal contact form */ function mtmcontact_form_contact_mail_page_alter(&$form, $form_state) { $form['company'] = array( '#title' => t('Your company'), '#type' => 'textfield', '#required' => true, ); $form['phone'] = array( '#title' => t('Your phone'), '#type' => 'textfield', ); // reorder the elements in the form to include the elements being inserted $order = array('contact_information', 'name', 'company', 'phone', 'mail', 'subject', 'message', 'copy', 'submit'); foreach($order as $key => $field) { $form[$field]['#weight'] = $key; } }
The second part keeps the fields in an explicit order and includes references to the form elements that are already created by the Contact module. To change the order, simply modify the array.
Comments
You'll have to use
Posted by Oscar Merida on . [Reply]
You'll have to use hook_alter_message() to actually send the values of your new fields via email.
Muy buen tutorial,
Posted by Anonymous on . [Reply]
Muy buen tutorial, felicidades
Where in drupal, i mean in
Posted by Anonymous on . [Reply]
Where in drupal, i mean in which file I have to do this changes. I am using drupal version 6. So please help me out.
Sorry for not putting home page, because i have my site on localhost. Trying to learn drupal.
Thanks
I've just created a module
Posted by Web Design on . [Reply]
I've just created a module with a similar concept, for weather the user wants to be contacted by phone or not, reviewing some of this would probably have saved me some time developing :)
I have modified the default
Posted by Nigel on . [Reply]
I have modified the default contact form with some additional fields
This information was really useful
As we get further along in
Posted by Joaquin Lippincott on . [Reply]
As we get further along in the Drupal major revision timeline, it's worth noting that this tutorial is for Drupal 6.
Contact form fields module of Drupal
Posted by Anonymous on . [Reply]
Try http://drupal.org/project/contact_field instead.
Someone knows how to add a
Posted by Anonymous on . [Reply]
Someone knows how to add a javascript function (es. onchange) to a the SELECT tag of Category filed in Drupal 6?
I'm trying with #attributes but seems not work..
jQuery bind
Posted by Dylan Tack on . [Reply]
onchange is a bit old-fashioned. I would recommend using jQuery to bind the change event. See http://api.jquery.com/change/ for some examples. This code would go in a javascript file, not in your form_alter.
What version is this for?
Posted by mark hankins on . [Reply]
WHat D version is this for? I'm just trying to add a "phone" field in D7 (first project since moveing from D6) and it won't work using hook_form_alter!
Drupal 6
Posted by Dylan Tack on . [Reply]
This code was written for Drupal 6. It's pretty obsolete now, I would recommend trying the webform module instead.
Remove message field from contact form
Posted by Alex on . [Reply]
Hello,
how can I remove the message text area from contact form?
I need just: email, name, phone, city and drop down list.
thanks
Drupal 7
Posted by Elvis on . [Reply]
Since this article is for drupal 6, how do I add another field in drupal 7?
help~~
Posted by csyr on . [Reply]
it works well to add field for this form .but how can i save the field's data to database ?
add "Send yourself a copy." with web forms
Posted by prasannah on . [Reply]
I need to implement "Send yourself a copy." feature as we would find in the default contact form on Drupal 7 to new form I setup with Webforms module. Can someone be able to help me with this.
Drupal 7
Posted by Everett Zufelt on . [Reply]
FYI, in drupal 7 the hook changes, you need to use:
hook_form_FORM_ID_alter()
So your function would look like:
function yourmodule_form_contact_site_form_alter(&$form, &$form_state, $form_id) {
// place code here.
}
sending additional fields on mail message
Posted by João Antonio Ferreira on . [Reply]
Use something like this to send company and phone with mail message:
/**
* Implements hook_mail().
*/
function YOURMODULENAME_mail_alter(&$message) {
if ($message['id'] == 'contact_page_mail' ||
$message['id'] == 'contact_page_autoreply') {
$message['body'][] = t('company') . ': "' . $message['params']['company'] . '"';
$message['body'][] = t('phone') . ': "' . $message['params']['phone'] . '"';
. . .
}
}
Add new comment