พิมพ์แบบฟอร์มการลงทะเบียนและเข้าสู่ระบบในหน้าเดียวกัน


11

ฉันจะพิมพ์แบบฟอร์มลงทะเบียนและเข้าสู่ระบบในหน้าเดียวกันได้อย่างไร

ฉันคิดว่าฉันกำลังมองหา ID ของฟอร์มจริงๆ แต่ถ้าคุณมีฟังก์ชั่นการเรนเดอร์ที่ถูกต้องมันก็จะเป็นที่นิยมมาก

คำตอบ:


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

ดูuser_register_form ()และuser_login_block ()สำหรับรายละเอียด โปรดทราบว่าuser_register_formเป็นฟังก์ชันตัวสร้างฟอร์มที่ผิดปกติ: มันเปลี่ยนเส้นทางในบางกรณี


เพื่อนที่สวยงาม คำตอบที่สมบูรณ์แบบ!
emc

1
ความคิดใดที่จะได้รับสิ่งนี้ใน Drupal 8 ขอบคุณ
สเตฟาน

Phil บางทีนี่อาจเป็นความช่วยเหลือใด ๆ : api.drupal.org/api/drupal/ …
Alari Truuts

6

ฉันเอารหัสจาก LoginToboggan นี่คือสิ่งที่ฉันได้รับ

/**
* 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

สำหรับสิ่งนี้คุณต้องสร้างหน้าสำหรับการลงทะเบียนเช่นนี้

page-user-register.tpl.php

และพิมพ์เนื้อหาของหน้าตามปกติ ในหน้านั้นคุณสามารถลองแสดงผลได้user_login_block

แหล่งข้อมูลเพิ่มเติม

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

1
คำตอบที่เลือกdrupal.stackexchange.com/a/27419/4471 จะโยนข้อผิดพลาดการตรวจสอบ
niksmac

4

LoginTobogganทำสิ่งนี้เพื่อคุณ: ติดตั้งและไปที่ admin / config / system / logintoboggan; เลือก "แสดงหน้าเข้าสู่ระบบ / การลงทะเบียนแบบรวม"


นอกจากนี้หากคุณต้องการเขียนโมดูลของคุณเองคุณสามารถดูแหล่งที่มาของมัน
Mohammad Ali Akbari
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.