свои страницы регистрации, логина, вспоминания пароля

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

Аватар пользователя Glatos Glatos 6 декабря 2011 в 16:18

Требуется сделать свои страницы, либо отредактировать существующие.
и добавить несколько полей, например на странице регистрации сейчас логин\мыло, а хотелось бы добавить чтоб было:
логин

пароль
подтверждение пароля

мыло
подтверждение мыла
год рождения

и галочку типа согласен с правилами.

Нашёл модуль Registration blocks, подойдёт ли он для этих целей? и не понятно как им пользоваться.

ещё нашёл вот эту тему
http://www.drupal.ru/node/31493

ниже там описан пример реализации этого в двух пунктах.

первым пунктом создаётся своё меню user login.
я просто добавил его в Page.tpl.php, у меня оно такое:

<?php
  
global $user;
   if (!
$user->uid) {
    
$message .= '<div id="my-account">' t('<a href="view">МОЙ АККАУНТ</a>', array('view=> url('user/' 
 
$user->uid), 'edit=> url('user/' $user->uid '/edit'))) . '</div>';
    
$message .= '<div id="username">' t('<a href="login">Войти</a>или<a href="register">Создать аккаунт</a>'

array(

'login=> 
 
url('user/login'), 'register=> url('user/register'))) . '</div><img class="leftcap" 

src="/images/top_box_lt.png"/>'

;
  }
else {
    
$message .= '<div id="my-account">' t('<a href="view">МОЙ АККАУНТ</a>', array('view=> url('user/' 
 
$user->uid), 'edit=> url('user/' $user->uid '/edit'))) . '</div>';
    
$message .= '<div id="username">' t('<span><b>user</b></span> > ', array('user=> $user->name));
    
$message .= t('<a href="logout">Выход</a>', array('view=> url('user/' 
 
$user->uid), 'edit=> url('user/' $user->uid '/edit'), 'logout=> url('logout'))) . '</div><img 

class="leftcap" src="S/images/top_box_lt.png"/>'

;
}
echo 
$message;
?>

подойдёт ли к нему второй пункт описаный в той теме?
Если нет то как переделать?

Комментарии

Аватар пользователя Vlk Vlk 6 декабря 2011 в 17:28

Хочешь так просто отделаться?
Вставка своих полей с валидацией + отсутствующих в БД (год рождения)(или там достаточно на совершеннолетие проверить?)
Ищи модуль, или пиши свой (

Аватар пользователя Glatos Glatos 6 декабря 2011 в 22:52

ну пусть будет без дополнительных полей пока и достаточно совершеннолетие проверить, простая арифметика
Хотябы просто изменить общее оформление и добавить пару ссылок\картинок рядом..

Аватар пользователя Vlk Vlk 7 декабря 2011 в 0:52

Оформление - это css.
добавление элементов - hook_form_user_login_alter, hook_form_user_register_alter, hook_form_user_login_block_alter
Где-то так.

Кстати, в той теме, ссылку на которую ты давал, есть ссылка http://drupaldance.com/blog/%D1%82%D0%B5%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D...

Цитата оттуда:

Однако, существуют два случая, когда придется реализовать изменения через модуль:

Если нужно дополнить функционал формы (навешивание дополнительной валидации и обработчиков и т.п.)

Аватар пользователя Glatos Glatos 7 декабря 2011 в 6:35

а кто-нибудь знает в каких файлах хранится вывод этих страниц в оригинале и как изменять их вывод используя тот описанный метод по пунктам? Хотя бы посмотреть каким образом выводятся уже существующие поля и элементы, ну и может я прям там изменения бы сделал.
Также мне нужно изменить страницу профиля пользователя, в часности убрать заголовок (имя пользователя сверху) кнопки view\edit и чтоб выводилось сразу, то что на странице edit, убрать часовой пояс и выбор темы, ну выбор темы наверно в другом месте уберается. Убрать поле с именем пользовател и в будущем добавить поле старый пароль, для смены пароля.

Аватар пользователя Vlk Vlk 7 декабря 2011 в 9:52

Ну ты и крут. Думаешь, ядро правильнее ломать, чем написать функцию в пяток строчек?
Да ломай на здоровье: модуль user.

Аватар пользователя Glatos Glatos 7 декабря 2011 в 14:56

Да я сам уже нашёл, спасибо.
Да конечно это не правильно, но я думаю так можно быстрее добиться нужного результата, чем сначала разбираться в функциях, узнавать чё такое апи или сск. Я знаю как создать свой модуль, но не знаю как создать в нём функции регистрации. Если бы здесь был гайд "как создать свои страницы регистрации\логина поэтапно", но темы которые здесь есть, практически содержат просто коды, нет чёткого расписания по пунктам, типа:

1. создайте такой-то файл с таким расширением,в такой папке.
2. запишите в нём такие-то функции, наподобие вот этой, сохраните в utf-8,
3. а в таком-то файле сделайте объявление этих функций таким вот образом..

Здешние темы, в основном, состоят просто из каких-то кусков, кусков с кодами, коментов с кодами, сложно найти элементарное пояснение. Да и сами пользователи не особо стараются помогать. Изменение страниц логина\регистрации - это очень актуальная тема, но нет никакого нормального гайда, понятного начинающему пользователю друпал. Это похоже на нежелание помогать и делиться знаниями за бесплатно.
Вот даже твой комент "ломай на здоровье: модуль user"
хоть бы сказал в каких именно файлах этого модуля, про функции я уж не говорю..
А у меня без того, работа+учёба. На лыжах некогда покататься!

Вот и получается что нужно идти изучать апи и доучивать английский паралельно, а для этого надо бросить всё и засесть у компа, по меньшей мере, на пол года. А мне надо всего-то изменить 4 странички. И не известно стоит ли оно того, стоит ли тратить жизнь на это? Может через год я ваще заброшу всю эту компьютерную херню, со всем этим железом, сетями, серваками, адинэсами, тупыми юзверями и стану каким-нить рекламщиком или ваще строителем.

Так что пожалуй я выберу более простой вариант, может и не правильный, но для начала пойдёт и если я буду и дальше интересоваться друпалом, то и функции изучу по ходу дела..
Фухх.. ну, вроде всё..
Ладно.. пойду я, ато ещё ядро ломать очередной раз..

Аватар пользователя Vlk Vlk 7 декабря 2011 в 16:02

Glatos wrote:

Ладно.. пойду я, ато ещё ядро ломать очередной раз..

Да там реально все просто.

1. создаешь модуль. Инфы море. Все просто. Всего 2 файла .info и .module
2. hook_menu()
http://api.drupal.ru/api/function/hook_menu/6
3. hook_form_alter(). Проверяешь (case, if) на form_id = 'user_login' и т.п.
http://api.drupal.ru/api/function/hook_form_alter/6
4. Создаешь свой элемент формы типа <?php  $user_email = array(#type =>'textfield'.....)  ?>
http://api.drupal.ru/api/file/developer/topics/forms_api_reference.html/6
5. вставляешь его в массив $form в нужное место функцией array_splice(). Чтобы посмотреть куда - используй <?php  print_r($form);  ?> прямо в тексте функции, потом закомментируешь или удалишь.

Все!

Ах да, еще валидация.

http://xandeadx.ru/blog/drupal/122

<?php$form['#validate'][] = 'mymodule_node_form_validate';?> - этот в текст hook_form_alter

И функция проверки типа:

<?phpfunction mymodule_node_form_validate($form, &$form_state) {
  if (is_numeric($form_state['values']['title'])) {
    form_set_error('title', 'Заголовок из одних лишь цифр недопустим');
  }
}
?>

При изменении ядра тебе все равно придется разбираться и делать большую часть из вышеописанного. За исключением обертки модуля, но самое сложное - п 4. и валидацию - точно.

Аватар пользователя drupby drupby 7 декабря 2011 в 14:58

"Glatos" wrote:
А у меня без того, работа+учёба. На лыжах некогда покататься!

какие лыжи под дождем ?
А по теме -установи д7 и profile2 ,там то ты выведешь все что надо и не надо лезть в ядро ,а то обновишься и всё пропало .

Аватар пользователя Vlk Vlk 10 ноября 2015 в 11:47

Ну как, получилось изуродовать ядро? ))

Выдалась минутка, решил проверить, правильно ли я тебе написал. Мало ли, упустил чего, или соврал.
Оказалось, нет, все верно.
Вот полный текст модуля. Единственное, что он делает - выводит дополнительное поле в форму логина между логином и паролем. Без валидации.

<?php
function mylogin_form_alter(&$form$form_state$form_id) {
  
$user_login_forms = array('user_login''user_login_block');
  if (
in_array($form_id$user_login_forms)) {
    
$a['new_field_login'] = array(
      
'#type' => 'textfield',
      
'#title' => 'Test',
      
'#maxlength' => 60,
      
'#size' => 15,
      
'#required' => 0,
      
'#attributes' => array('tabindex' => 1)
    ); 

    

$form[] = array_splice($form50$a);
  } 
}
?>

Вот результат: