Drupal: редактировать шаблон электронной почты из контактной формы
При отправке сообщения в моей контактной форме в Drupal 6.x я получаю следующее сообщение в верхней части каждого сообщения:
[Имя] отправил сообщение, используя контактную форму на [www.mysite.com/contact]
Я хотел бы удалить это сообщение. Оглядываясь вокруг, я обнаружил, что это происходит из contact.module здесь:
$message['body'][] = t("!name sent a message using the contact form at !form.", array('!name' => $params['name'], '!form' => url($_GET['q'], array('absolute' => TRUE, 'language' => $language))), $language->language);
Я провел небольшое исследование, и мне кажется, что мне нужно создать собственный модуль с функцией hook_mail_alter() для редактирования файла contact.module. Когда дело доходит до этого, я немного теряюсь. Может ли кто-нибудь любезно провести меня через шаги для выполнения задачи?
Большое спасибо.
2 ответа
Я недавно сделал что-то подобное. Вот шаблон, который вы можете использовать, чтобы получить то, что вам нужно. Большая часть из контактного модуля. Код ниже взят из Drupal 7, но должен работать как в Drupal 6.
/**
* Implementation of hook_mail_alter().
*/
function modulename_mail_alter(&$message) {
if ($message['id'] == 'contact_page_mail') {
$language = $message['language'];
$params = $message['params'];
$variables = array(
'!form-url' => url($_GET['q'], array('absolute' => TRUE, 'language' => $language)),
'!sender-name' => format_username($params['sender']),
'!sender-url' => $params['sender']->uid ? url('user/' . $params['sender']->uid, array('absolute' => TRUE, 'language' => $language)) : $params['sender']->mail,
);
$message['body'] = array();
$message['body'][] = t("Your custom message with variables", $variables, array('langcode' => $language->language));
$message['body'][] = $params['message']; // Append the user's message/
}
}
function theme_mail_alter(&$message) {
// only alter contact forms
if (!empty($message['id']) && $message['id'] == 'contact_page_mail') {
$contact_message = $message['params']['contact_message'];
$message['body'] = [];
$fields = $contact_message->getFields();
$new_body .= 'Message:' . PHP_EOL . $contact_message->get('message')->value . PHP_EOL . PHP_EOL;
foreach ($fields as $field_name => $field) {
if (get_class($field->getFieldDefinition()) == 'Drupal\field\Entity\FieldConfig') {
$new_body .= $field->getFieldDefinition()->label() . ':' . PHP_EOL;
if (isset($contact_message->get($field_name)->entity->uri->value)) {
$uri = $contact_message->get($field_name)->entity->uri->value;
$url = file_create_url($uri);
$new_body .= $url . PHP_EOL . PHP_EOL;
} else {
$new_body .= $contact_message->get($field_name)->value . PHP_EOL . PHP_EOL;
}
}
}
$message['body'][] = $new_body;
}
}