6

OK、これは私のフック フォーム変更機能です。サイト上のすべての登録フォームが上書きされますが、このページに必要なだけなので、これは望ましくありません。

 
function special_registration_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'user_register') {
    drupal_set_title(t('Custom registration'));
    $form['firstname'] = array('#type' => 'textfield', 
                               '#title' => t('First Name: *'), 
                               '#required' => TRUE, 
                               '#size' => 45, 
                               '#weight' => - 100,);
    $form['lastname'] = array('#type' => 'textfield', 
                              '#title' => t('Last Name: *'), 
                              '#required' => TRUE, 
                              '#size' => 45, 
                              '#weight' => - 99,);
  }
このページの別のテーブルにキャプチャして保存するのは、姓と名だけです。

他のページでは、古き良き時代のフォームが欲しいだけです。重量を変更する必要はありますか?私は基本的な何かが欠けていることを知っています。

4

5 に答える 5

2

argまたは $_GET['q']を使用して、現在のページをチェックするだけです。

例えば:

function special_registration_form_alter(&$form, $form_state, $form_id) {
if ($_GET['q'] !== 'whatever/path' ) { return false; }
..rest of code..
}
于 2010-06-14T09:47:23.270 に答える
2

フォームの変更を特定のページに制限したい場合は、そのページのチェックをフォーム ID チェックに追加するだけです。

function special_registration_form_alter(&$form, $form_state, $form_id) {
  // Alter the registration form, but only on 'user/register' pages
  if ($form_id == 'user_register' && 'user' == arg(0) && 'register' == arg(1)) {
    // snipped alteration code
  }
}
于 2010-06-14T09:52:39.980 に答える
0

実装しhook_user()ます。この機能により、ユーザーがサイトに登録するときに提示されるフォームを変更できます。 hook_user()user.module によって使用され、プロファイル モジュールから独立しています。

フックを として定義するhook_user($op, &$edit, &$account, $category = NULL)と、パラメーターには、登録フォームがユーザーに表示されるときの$op値が含まれます。'register'その場合、モジュールは登録フォームに追加するフォーム フィールドを返します。

于 2010-06-15T19:27:20.603 に答える
0

単純なイベント登録など、ユーザー アカウントを作成する必要があまりない場合。代わりに名前だけを収集する場合は、代わりに webform モジュールを使用できます。

于 2010-07-15T19:09:27.600 に答える
0

モジュールの Core リストで Profile モジュールを利用することもできます。プログラミングなしでこれを解決します。

于 2010-06-14T01:31:50.070 に答える