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é.

emc
la source

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.

Oswald
la source
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;
}
Adam S
la source
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
niksmac
la source
1
La réponse choisie drupal.stackexchange.com/a/27419/4471 générera une erreur de validation.
niksmac
4

LoginToboggan le fait pour vous: installez-le et accédez à admin / config / system / logintoboggan; sélectionnez «Présenter une page de connexion / d'inscription unifiée».

Mohammad Ali Akbari
la source
aussi si vous voulez écrire votre propre module, vous pouvez regarder sa source
Mohammad Ali Akbari