Как переопределить форму только на одной странице?

Хорошо, таким образом, это - моя форма рычага, изменяют функцию. Это заставляет все формы регистрации на сайте быть по записанному, который я не хочу, как я просто хочу это на этой странице.

 
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,);
  }
Я только имя и фамилия, которая будет получена и сохранена в другой таблице только на этой странице.

На других страницах я просто хочу старую добрую сформированную форму. Я должен все еще изменить вес? Я знаю, что пропускаю что-то элементарное.

6
задан Dan Heberden 14 June 2010 в 01:29
поделиться

5 ответов

Вы также можете использовать модуль Profile в основном списке модулей. Это решит это без какого-либо программирования, уф.

0
ответ дан 17 December 2019 в 07:00
поделиться

Если вы хотите ограничить изменение формы определенной страницей, вы можете просто добавить проверку страницы к проверке идентификатора формы, например:

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
  }
}
2
ответ дан 17 December 2019 в 07:00
поделиться

Вам просто нужно проверить текущую страницу, используя либо arg , либо $ _GET ['q'].

например:

function special_registration_form_alter(&$form, $form_state, $form_id) {
if ($_GET['q'] !== 'whatever/path' ) { return false; }
..rest of code..
}
2
ответ дан 17 December 2019 в 07:00
поделиться

Реализуйте hook_user () ; функция позволяет изменять форму, предоставляемую пользователям при регистрации на сайте. hook_user () используется user.module и не зависит от модуля профиля.

Определение ловушки как hook_user ($ op, & $ edit, & $ account, $ category = NULL) , параметр $ op будет содержать значение ' register ', когда пользователю предоставляется форма регистрации. В этом случае модуль возвращает поля формы, которые он хочет добавить в форму регистрации.

0
ответ дан 17 December 2019 в 07:00
поделиться

Если вам действительно не нужно создавать учетные записи пользователей, например, для простой регистрации на мероприятие. Если вместо этого вы собираете только имена, вы можете вместо этого использовать модуль веб-формы.

0
ответ дан 17 December 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: