Imprimer les formulaires d'inscription et de connexion sur la même page


11

Comment imprimer les formulaires d'inscription et de connexion sur la même page?

Je pense que je cherche vraiment juste les identifiants de formulaire, mais si vous avez la bonne fonction de rendu à portée de main, ce serait très apprécié.

Réponses:


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

Voir user_register_form () et user_login_block () pour plus de détails. Notez qu'il user_register_forms'agit d'une fonction de création de formulaire inhabituelle: elle redirige dans certains cas.


Beau compagnon. Réponse parfaite!
emc

1
Une idée comment obtenir cela dans Drupal 8? Merci.
Stefan

Phil, peut-être que cela peut vous être utile: api.drupal.org/api/drupal/…
Alari Truuts

6

J'ai pris le code de LoginToboggan. Voilà ce que j'ai.

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

Pour cela, vous devez créer une page d'inscription comme celle-ci

page-user-register.tpl.php

Et imprimez le contenu de la page comme d'habitude. dans cette page, vous pouvez essayer de rendreuser_login_block

Ressources additionnelles

  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
La réponse choisie drupal.stackexchange.com/a/27419/4471 générera une erreur de validation.
niksmac

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.