всплывающая форма входа на highslide, небольшие изменения на страницах входа\регистрации\восстановления пароля

Главные вкладки

Аватар пользователя pl1707 pl1707 16 апреля 2011 в 16:39

делаю сайт на друпале. заказчик ставит мне задачи и я их пытаюсь выполнить ...

первая задача которую передо мной поставили, точнее первая которую я решил тут описать решение.

после установки модуля highslide для просмотра фотографий у меня в меню навигации появился пункт войти, при нажатии на который появляется во всплывающем окне поверх сайта форма входа (примерно такое же видел на сайтах укоза) - она понравилась заказчику, но у него тут появилась другая потребность. чтоб на этой форме входа были ещё и две ссылки на создания учётной записи и на восстановления пароля. и заказчику ненравится внешний вид страниц регистрации\входа\восстановления_пароля , точнее ему не нравится вверху 3 вкладки с надписями регистрация\вход\восстановление_пароля.

убираем 3 вкладки ...

1. открываем фаил template.php (находим его в папке с вашей темой) и в нём добавляем следующие строчки (они перенаправляют нас на шаблон page_user_login.tpl.php при запросе страниц входа\регистрации\вост.пароля и описывают заголовки этих страниц)

function phptemplate_preprocess_page(&$vars) {
global $user;
    if(arg(0) == 'user' && (arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password')){
        if ($user->uid == 0) {                                                                    
          $vars['template_files']['0'] = 'page_user_login';                                      
                            }
        switch (arg(1)) {
            case 'login':
                $vars['title'] = 'Вход';                                            
                $vars['head_title'] = 'Вход';
                break;
            case 'password':
                $vars['title'] = 'Забыли пароль?';                                  
                $vars['head_title'] = 'Забыли пароль?';
                break;
            case 'register':
                $vars['title'] = 'Регистрация';                                    
                $vars['head_title'] = 'Регистрация';
                break;
                        }    
    }
    return $vars;
}

2. делаем копию файла page.tpl.php и переименовываем его в page_user_login.tpl.php
3. редактируем его удаляя строку

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

она отвечает за tabs - находится в блоке

4. сохраняем и чистим кеш.
получили

ps - внешний вид страниц меняем уже редактируя css

вторым пунктом
мне надо было сделать, как уже писал, форму входа во всплывающем окне, поверх сайта после подключения модуля highslideпоявилась ссылка вход в меню навигации, при нажатии на которую выглядело вот так

так как в меню должен был быть только пункт входа на сайт (пункт меню войти), а уже на странице входа должны быть ссылки на регистрацию и восстановления пароля, пришлось мучится. ни один модуль такого вроде делать не может, по крайней мере я такого не нашёл. долго мучился но всё же у меня получилось это сделать.
и так что я делал
1. открыл фаил user.module текстовым редактором (находится ваш_сайт/modules/user)
2. изучив код пришёл к выводу что нужно поменять
находим

function user_login(&$form_state) {
  global $user;

  // If we are already logged on, go to the user page instead.
  if ($user->uid) {
    drupal_goto('user/'. $user->uid);
  }

  // Display login form:
  $form['name'] = array('#type' => 'textfield',
    '#title' => t('Username'),
    '#size' => 60,
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#required' => TRUE,
  );

  $form['name']['#description'] = t('Enter your s username.', array('s' => variable_get('site_name', 'Drupal')));
  $form['pass'] = array('#type' => 'password',
    '#title' => t('Password'),
    '#description' => t('Enter the password that accompanies your username.'),
    '#required' => TRUE,
  );
  $form['#validate'] = user_login_default_validators();
  $form['submit'] = array('#type' => 'submit', '#value' => t('Log in'), '#weight' => 2);

  return $form;
}

перед

  return $form;
}

вставляем

  $items = array();
  if (variable_get('user_register', 1)) {
    $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
  }
  $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
  $form['links'] = array('#value' => theme('item_list', $items));

3. сохраняем и чистим кеш
в итоге получилось вот так

тоже самое мы видим на странице http://ваш_сайт/user/login

как уже писал выше, правим css и получаем приятные страницы входа, регистрации и восстановления пароля

Комментарии