drupal 7 свяжитесь с нами форма отправить письмо
Я использую модуль контактов для отправки электронной почты на мой почтовый ящик, как настроить тело письма? по умолчанию это:
the user name (http://example.com/user/3) use
http://example.com/contact ...
the message body
я использовал hook_form_alter
добавив некоторые поля в форму обратной связи, свяжитесь с нами form.eg:phone, address,company name.email dress, как сделать так, чтобы они отображались в теле письма. благодарю вас.
4 ответа
Рассмотрите возможность использования модуля веб-формы. Вам не нужно будет реализовывать какие-либо хуки для добавления полей или настройки полей для отправки по электронной почте.
Это намного проще, чем контактный модуль Drupal
Мухаммед предложил хорошее решение, чтобы мы использовали модуль Webform для добавления полей. Таким образом, вам не нужно писать код.
Для ваших конкретных нужд вы можете использовать hook_mail_alter, который поможет вам изменить сообщение электронной почты, а также добавить дополнительные поля в тело сообщения.
Модуль Entityforms использует стандартные поля Drupal, что означает, что вы можете использовать любые стандартные поля Drupal. Для тех из вас, кто использовал Webforms, этот модуль приносит функциональность Webform в "стандартный" мир полей / сущностей Drupal.
Хотя Webform является отличным модулем с огромным количеством последователей, он не интегрируется со стандартными модулями Drupal или объектно-ориентированными модулями. Так что для сайтов Drupal 7 рекомендуется использовать модуль Entityforms!
Как и Webform, он хорошо интегрируется с модулем Rules для уведомлений о отправке форм и допускает сложную логику уведомлений.
Как вы можете видеть в contact.module, есть несколько предопределенных, жестко закодированных переменных. Если вы добавите свои собственные поля в форму, они не будут доступны для почты.
Чтобы сделать их доступными там, вам нужно написать, зарегистрироваться и написать свой собственный обработчик почты;
Реализация hook_mail
function email_example_mail($key, &$message, $params) {
global $user;
$options = array(
'langcode' => $message['language']->language,
);
switch ($key) {
case 'contact_message':
$message['subject'] = t('E-mail sent from @site-name', array('@site-name' => variable_get('site_name', 'Drupal')), $options);
$message['body'][] = t('@name sent you the following message:', array('@name' => $user->name), $options);
$message['body'][] = check_plain($params['message']);
break;
}
}
Тогда способ отправки почты:
function email_example_mail_send($form_values) {
$module = 'email_example';
$key = 'contact_message';
$to = $form_values['email'];
$from = variable_get('site_mail', 'admin@example.com');
$params = $form_values;
$language = language_default();
$send = TRUE;
$result = drupal_mail($module, $key, $to, $language, $params, $from, $send);
if ($result['result'] == TRUE) {
drupal_set_message(t('Your message has been sent.'));
}
else {
drupal_set_message(t('There was a problem sending your message and it was not sent.'), 'error');
}
}
Этот метод затем вызывается из пользовательского обработчика отправки:
function email_example_contact_form_submit($form, &$form_state) {
email_example_mail_send($form_state);
}
Который вы регистрируете в hook_form_alter
(Я не знаю точный form_id для основной контактной формы, поместите ее туда, куда я положил contact
):
function email_example_contact_form_alter($form, &$form_state) {
$form['#submit']['my_very_own_submit'] = array();
}