Customizing the login, registration and request password full page layout

Last modified: August 26, 2009 - 02:51

description

This snippet allows you to load a custom layout file and override the login, request password and registration page.

usage

Useful if you want to have a stand alone login page, for example.

Step 1 of 2

  1. make a copy of your page.tpl.php file and rename it to be page-login.tpl.php.
  2. Using a text editor like notepad.exe or equivalent, modify the layout of page-login.tpl.php file to suit your desires
  3. Upload your new page-login.tpl.php layout file to your active theme folder

Step 2 of 2

  1. Using a text editor like notepad.exe or equivalent, open your template.php file.
  2. If do not already have a _phptemplate_variables fuction in this file you can paste snippet version #1 into your file directly. If you already have a _phptemplate_variables function you will have to paste snippet version #2 into the function _phptemplate_variables.
  3. Upload your edited template.php file to your active theme folder and your new layouts will take effect automatically

Snippet version #1

<?php
/**
* This snippet loads a custom page-login.tpl.php layout file when
* users click through to the login, request password or register pages
*/

function _phptemplate_variables($hook, $variables = array()) {
  switch (
$hook) {
    case
'page':
      global
$user;
      if (
arg(0) == 'user'){
        if (!
$user->uid) { //check to see if the user is logged in. If not display the special login page layout
         
$variables['template_file'] = 'page-login';
        }
        elseif (
arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password' ) {
         
$variables['template_file'] = 'page-login';
        }
      }
      break;
  }

  return
$variables;
}
?>

Snippet version #2

This version of the snippet goes inside an existing _phptemplate_variables function that already has a return $variables statement.

<?php
global $user;
if (
arg(0) == 'user'){
  if (!
$user->uid) { //check to see if the user is logged in. If not display the special login page layout
   
$variables['template_file'] = 'page-login';
  }
  elseif (
arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password' ) {
   
$variables['template_file'] = 'page-login';
  }
}
?>

It does not work. Login form

Keyser - July 2, 2009 - 21:41

It does not work. Login form still the same. I have created a file page-login.tpl.php, added there just a single text for example "asdad", then added a function _phptemplate_variables and login form still default.

Mess with the best - die like the rest

I think this is because

paulgrimshaw - August 18, 2009 - 16:07

I think this is because phptemplate isnt used in D6. I can find ways of using nodes for user registration, but I too want to replace the whole page. Is there a new method of doing this?

Drupal 6

honorfield - October 19, 2009 - 04:18

I called my login file "page-user.tpl.php" instead of "page-login.tpl.php" and it works perfectly fine:)

If i want to separate login, register and password pages, i create three new copies of the original "page.tpl.php" file in my theme folder. In my case the zen-classic theme. I call them "page-user.tpl.php" (login), "page-user-register.tpl.php" (register) and "page-user-password.tpl.php" (new password). Inside each of the files i remove the following peace of code:

          <?php endif; ?>
          <?php if (!empty($tabs)): ?>
            <div class="tabs"><?php print $tabs; ?></div>
          <?php endif; ?>

This stops Drupal from showing the typical tabs in the "Login, Register and Password" section.
Hope that helps someone. Took me a while to figure it out:)

It's all happening for a reason . . .

 
 

Drupal is a registered trademark of Dries Buytaert.