In mẫu đăng ký và đăng nhập trên cùng một trang


11

Làm cách nào để in biểu mẫu đăng ký và đăng nhập trên cùng một trang?

Tôi nghĩ rằng tôi thực sự đang tìm kiếm ID biểu mẫu, nhưng nếu bạn có chức năng kết xuất phù hợp thì sẽ rất được đánh giá cao.

Câu trả lời:


12
print(drupal_render(drupal_get_form('user_register_form')));
print(drupal_render(drupal_get_form('user_login_block')));

Xem user_register_form ()user_login_block () để biết chi tiết. Lưu ý rằng đó user_register_formlà một hàm xây dựng biểu mẫu bất thường: nó chuyển hướng trong một số trường hợp.


Người bạn đời xinh đẹp. Câu trả lời hoàn hảo!
emc

1
Bất cứ ý tưởng làm thế nào để có được điều này trong Drupal 8? Cảm ơn.
Stefan

Phil, có lẽ đây là bất kỳ sự giúp đỡ nào: api.drupal.org/api/drupal/ Kẻ
Alari Truuts

6

Tôi lấy mã từ LoginToboggan. Đây là những gì tôi nhận được.

/**
* Implementation of hook_theme()
*/
function os_pages_theme() {
  return array(
    'os_pages_login_form' => array(
      'variables' => array(
        'register_form' => NULL,
        'login_form' => NULL,
      ),
    ),
  );
}
/**
* Logintobbogin provides the code to consolidate
* the registration page and the login page however
* it doesn't do exactly the way we want so we will 
* take the code. 
* @see http://drupal.org/project/logintoboggan
*/

 /**
 * Implementation of hook_menu_alter().
 */
function os_pages_menu_alter(&$callbacks) {
  // Kill the tabs on the login pages.
  $callbacks['user/login']['type'] = MENU_NORMAL_ITEM;
  $callbacks['user/login']['page callback'] = 'os_pages_login_page';
  $callbacks['user/register']['type'] = MENU_CALLBACK;
  $callbacks['user/register']['page callback'] = 'os_pages_login_page';
  $callbacks['user/register']['page arguments'] = array('register');
  $callbacks['user/password']['type'] = MENU_CALLBACK;
  $callbacks['user']['page callback'] = 'os_pages_login_page';
}
/**
 * Menu callback for user/login
 *   creates a unified login/registration form (without tabs)
 */
function os_pages_login_page() {
  global $user;
  if ($user->uid) {
    menu_set_active_item('user/' . $user->uid);
    return menu_execute_active_handler(NULL, FALSE);
  }
  else {
    // Title just clutters the interface...
    drupal_set_title('');
    $output = os_pages_login_form();
    return $output;
  }
}
/**
 * Builds a unified login form.
 */
function os_pages_login_form() {
  $register_form = drupal_get_form('user_register_form');
  $login_form = drupal_get_form('user_login');
  $rendered_register_form = drupal_render($register_form);
  $rendered_login_form = drupal_render($login_form);
  $variables = array(
    'login_form' => $rendered_login_form,
    'register_form' => $rendered_register_form,
  );
  $output = theme('os_pages_login_form', $variables);
  return $output;
}
/**
 * Theme function for unified login page.
 */
function theme_os_pages_login_form($variables) {

  $register_form = $variables['register_form'];
  $login_form = $variables['login_form'];
  $output = '';

  $output .= '<div class="login-form">';

  // Add the login and registration forms in.
  $output .= '<div id="register-form">' . $register_form . '</div>';
  $output .= '<div id="login-form">' . $login_form . '</div>';

  $output .= '</div>';

  return $output;
}

4

Đối với điều này Bạn cần tạo một trang để đăng ký như thế này

page-user-register.tpl.php

Và in nội dung trang như bình thường. trong trang đó bạn có thể thử kết xuấtuser_login_block

Tài nguyên bổ sung

  1. http://www.trevorsimonton.com/blog/page-usertplphp-profile-php-template-drupal
  2. http://api.drupal.org/api/drupal/modules%21user%21user.module/feft/user_login_block/7

1
Câu trả lời được chọn drupal.stackexchange.com/a/27419/4471 Sẽ ném lỗi xác nhận.
niksmac

4

LoginToboggan làm điều này cho bạn: Cài đặt nó và đi đến admin / config / system / logintoboggan; chọn "Trình bày một trang đăng nhập / đăng ký hợp nhất."


ngoài ra nếu bạn muốn viết mô-đun của riêng mình, bạn có thể xem nguồn của nó
Mohammad Ali Akbari
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.