連絡先フォームに電話フィールドと会社フィールドを追加したい。 template.php
のフォームを上書きする方法ありがとうございました
このモジュール http://drupal.org/project/contact_field はあなたがやりたいことをするでしょう、そして私はD6以来それについて知っていますが、最後にD7でそれを試したときはバグがありました。
これまでのところ、チャームのように常に機能することがわかっている最良の代替策は、webformモジュール http://drupal.org/project/webform です。必要に応じてフィールドを追加または削除できるからです。それとメールサポートはうまく機能し、メールサーバーまたはサービスが何らかの理由でダウンした場合に備えて、すべての連絡先の試行を保存するボーナスも得られます。
hook_form_alter() を使用して、これら2つのフィールドを連絡先フォームに追加してみませんか?
function MYMODULE_form_alter( &$form, &$form_state, $form_id ) {
if( $form_id == 'contact_site_form' ){
$form['message']['#weight'] = 2;
$form['copy']['#weight'] = 3;
$form['phone'] = array(
'#type' => 'textfield',
'#title' => t('Phone'),
'#required' => TRUE,
'#weight' => 1
);
$form['company'] = array(
'#type' => 'textfield',
'#title' => t('Company'),
'#required' => TRUE,
'#weight' => 1
);
}
}
hook_mail_alter() を使用して、連絡先メールを変更できます。変数$message['params']
には、送信されたフォームの値が含まれます。
/**
* Implementation of hook_mail_alter
* Override mail structure
*/
function MYMODULE_mail_alter(&$message){
if($message['id'] == 'contact_page_mail') {
$language = $message['language'];
$params = $message['params'];
/*
$message['to'] = $more_receipient;
$message['subject'] = $subject_overridden;
$message['body'][0] = $msg_body;
$message['body'][1] = $param_to_msg_body;
*/
}
}
検討できる次のモジュールがあります。
これにより、サイト全体のお問い合わせフォームの機能が拡張されます。見栄えの良いお問い合わせフォームを生成することで、ドロップダウンカテゴリメニューを削除します。
ただし、それは最小限に維持され、7.xでの作業が必要であり、まだプロダクションの準備ができていません。 fixes を使用して私のフォークを見つけてください。ただし、それでも完全には機能しません。
または、これはDrupal API:
/**
* Implements of hook_FORM_ID_form_alter().
*/
function foo_form_contact_site_form_alter(&$form, &$form_state, $form_id){
$form['location'] = array(
'#title' => t('Your location'),
'#type' => 'textfield',
'#required' => TRUE,
);
$order = array('name', 'mail', 'subject','location', 'cid', 'message', 'copy', 'actions');
foreach($order as $key => $field) {
$form[$field]['#weight'] = $key;
}
}
/**
* Implements of hook_mail_alter().
* This is where the mail being sent if edited. I just add it the the end of the message
*/
function foo_mail_alter(&$message) {
if ($message['id'] == 'contact_page_mail'){
$message['body'][] .= t('This is their location - ').$message['params']['location'];
}
}