РЕШЕНО: Создание формы регистрации - подскажите пожалуйста!

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

Аватар пользователя denserdv denserdv 11 января 2014 в 12:54

Здравствуйте!

Описываю задачу:
1) на главной странице сайта разместить форму регистрации
2) в этой форме чтобы юзер вводил только емаил и кликал кнопку "войти"
При этом значение для поля логина приравнивается к емаилу

Я подумал что это можно сделать темизацией по примеру с формой авторизации. Пример для формы авторизации у меня есть. Вот такой:

<form accept-charset="UTF-8" id="user-login-form" method="post" action="/node?destination=node">
<input class="field" type="text" name="name" id="edit-name" value="Ваш Логин">
Пароль: <input class="field" type="password" name="pass" id="edit-pass">
<input type="hidden" value="" name="form_build_id">
<input type="hidden" value="user_login_block" name="form_id">
<input type="submit" class="submit" value="Войти" name="op" id="edit-submit" OnClick="SetCookie()">
<a href="/user/register">Регистрация</a> / <a href="/user/password">Забыли пароль?</a>
</form>

А вот для формы регистрации не нашел ничего подобного.
Подскажите пожалуйста, возможно ли также просто создать в шалоне форму для регистрации?

или я вообще не туда думаю?

я не программист, поэтому огромная просьба подсказывать человеческим языком :).
(основы php представляю, поэтому хочу сам разобраться как сделать)

Итого, задача решена
- для организации "входной страницы" на сайт, где висит только форма регистрации и фоновая картинка я сделал:
1) шаблон главной страницы page--front.tpl.php;
2) модулем formblock вывел форму регистрации в блок на главную страницу;
3) модулем email_registration сделал регистрацию пользователя только вводом одного емаила (логин создается автоматом из первой части емаила, а пароль юзер создает сам при первом входе на сайт);
4) также, в этом созданном шаблоне поставил проверку - еслю юзер авторизован, то переадресовываю его на нужную страницу, если нет - то показывать контент этой.
(ссылки на указанные модули в комментариях к этой статье. Сюда вывел только итоговое решение)

вот код такой проверки:


<?php if(!empty($user) && $user->uid != 0) {
    
// Если пользователь авторизован, то переадресация на нужную страницу, иначе показывать форму регистрации
    
header('Location: http://сайт.ру/news');
      exit; 
} else { 
?>
// здесь код самого шаблона. Взял его из обычного шаблона page.tpl.php и закоментировал ненужные блоки - боковые колонки, шапку и т.п. Оставил только вывод самого контента.
<?php ?>

Я не пограммист. Если сделал грубые ошибки - пожалуйста укажите, постараюсь исправится Smile

Комментарии

Аватар пользователя denserdv denserdv 13 января 2014 в 3:54

Отлично! Модуль подходит. Все просто.

остался один непонятный момент - мне же надо чтобы форма регистрации была главной страницей сайта. Для этого я просто в Конфигурация-Система-Информация о сайте указал что главная страница будет:
user/register

И это работает.

Но! теперь все ссылки на главную страницу (логотип, хлебные крошки и т.п.) ведут на страницу регистрации. А если пользователь уже авторизовался - открывается его профиль.

В шаблоне дизайна у логотипа я поставл нужный мне урл - так сказать вторую главную страницу - которую должны видеть авторизованные. Но как подправить это для хлебных крошек?

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

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

Аватар пользователя sergeybelya sergeybelya 13 января 2014 в 10:46

denserdv wrote:
Отлично! Модуль подходит. Все просто.

остался один непонятный момент - мне же надо чтобы форма регистрации была главной страницей сайта. Для этого я просто в Конфигурация-Система-Информация о сайте указал что главная страница будет:
user/register

И это работает.

Но! теперь все ссылки на главную страницу (логотип, хлебные крошки и т.п.) ведут на страницу регистрации. А если пользователь уже авторизовался - открывается его профиль.

В шаблоне дизайна у логотипа я поставл нужный мне урл - так сказать вторую главную страницу - которую должны видеть авторизованные. Но как подправить это для хлебных крошек?

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

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

Зачем вам делать главной страницу регистрации? Просто выведите форму входа/регистрации на главную.
Если этого недостаточно, то можно осуществлять редирект пользователя в зависимости от роли либо с помощью https://drupal.org/project/login_destination или модуля rules.

Аватар пользователя denserdv denserdv 13 января 2014 в 11:18

"sergeybelya" wrote:
Просто выведите форму входа/регистрации на главную.

Извините, может я тормозу сижу.. но как вывести форму регистрации? Блок авторизации я могу вывести в блоках. А именно форму регистрации как выводить на главную?
Я и придумал указать в качестве главной страници - регистрационную..

За ссылку на модуль спасибо - попробую.

Кстати, тут еще мне подсказали способ, вроде бы интерсный, может кому пригодиться:
- я бы просто сделал отдельную форму в которой были-бы нужные поля, при отправки этой формы автоматически регистрировать пользователя, саму форму выводитьв блок.

Аватар пользователя denserdv denserdv 13 января 2014 в 15:41

еще одно решение описано здесь: http://www.drupal.ru/node/55173
- в кратце - можно сделать шаблон и вывести в нем форму регистрации так:

<?php 
    
print drupal_render(drupal_get_form('user_register_form')); 
?>

- мне не помогло - ибо на странице вывелась форма регистрации со всеми полями из профиля, включая два поля для пароля (ввести пароль и повторить ввод пароля). А мне нужно чтобы один емаил спрашивался при регистрации с юзера (Я организовал регистрацию путем ввода одного только емаила с помощью модуля https://drupal.org/project/email_registration)

И еще добрые люди подсказали:
Устанавливаете модуль https://drupal.org/project/formblock

В блоках появляется форма регистрации, выводиться как надо(с включенным модулем email_registration) , только если пользователь авторизирован, форма не выводится Smile

Этот модуль действительно очень удобен. На данный момент доступна только дев-версия его, но у меня в друпал-7 работает.

Итого, задача решена:
- для организации "входной страницы" на сайт, где висит только форма регистрации и фоновая картинка я сделал шаблон главной страницы, модулем formblock вывел форму регистрации в блок на главную страниу, модулем email_registration регистрацию пользователя только вводом одного емаила (логин создается автоматом из первой части емаила, а пароль юзер создает сам при первом входе на сайт).
Также, в этом созданном шаблоне поставил проверку - еслю юзер авторизован, то переадресовываю его на нужную страницу, если нет - то показывать контент этой.