Модификация формы регистрации в drupal

После установки, регистрационная форма друпала (drupal) имеет всего пару полей — login и email. В большинстве случаев это можно почитать за благо. Ибо по моему разумению большего и не надо, разве что поле проверочного кода добавить для предотвращения авторегистраций.

Но суровые будни показывают, что для коммерческих сайтов важно собрать хотя бы минимальную анкету о пользователях, которые регистрируются на сайте. Есть желание сразу разделить физических и юридических лиц, узнать, к примеру, ФИО, тел контактного лица, чтобы менеджер по работе с клиентами мог обработать данного потенциального клиента.

Расширяем анкету пользователя и добавляем поля регистрации.

Этот этап очень прост. Нужно активировать модуль Profile из группы дополнительных модулей ядра. В меню администратора появится страница /admin/user/profile, где можно создать ряд полей в анкете пользователя. Чтобы иметь возможность добавлять поля типа «дата», понадобится пакет модулей date.

У меня получился вот такой примитивный набор полей:Поля разбиты на две группы — «Контактная информация», где собраны поля подходящие для физического лица, либо представителя организации. Вторая группа полей — «Реквизиты организации» — тут мы укажем поля нужные для организаций. Также обратите внимание на специальный checkbox — profile_jurflag. Мы не будем показывать все поля анкеты без надобности. Если пользователь отмечает галочку profile_jurflag — тогда мы открываем поля с реквизитами предприятия. В случае нашей анкеты, все поля можно отметить для показа в форме регистрации. Это лишь пример, реальная анкета может содержать на много больше полей и требовать заполнить их все при регистрации не очень гуманно.

Добавляем к форме регистрации описание

Часто нужно как то морально подготовить пользователя перед заполнением формы регистрации. В drupal этот момент предусмотрен. На странице /admin/user/settings — вы найдете поле «инструкции по регистрации пользователя». В принципе, это можно реализовать и с помощью зацепки (см. далее).

Зацепка к форме регистрации и форме профиля пользователя

Следующим шагом будет необходимо реализовать зацепку form_alter к формам регистрации и профиля пользователя. Если вы пишите какой то сайт, то наверняка все зацепки и самописный код оформляете отдельным модулем. Если у вас нет такой привычки — заведите её :). Пусть это будет некий модуль — mymodule.

Все формы движка спроектированы в drupal с применением forms.API. Знакомство с этим и другими API очень полезно, если вы собираетесь иметь дело с drupal. См. — api.drupal.org.

В зацепке я собираюсь реализовать следующие операции:

  • Показывать / прятать поля организации при активации / деактивации флажка profile_jurflag.
  • Добавить пост. обработчик в форму регистрации — т.е. когда регистрация успешно прошла, я хочу выполнить какие то свои действия, например,  отправить уведомление менеджеру о новой регистрации на сайте.
  • Скрыть поле profile_jurflag из профиля пользователя — чтобы физическое лицо не переправило себя в юридическое.

Вот и все, в теории. Любопытно, возможно, посмотреть ещё код mymodule_user_register_submit

Возможно стоит упомянуть, что для вывода информации о пользователе, т.н. профиля, служит отдельных шаблон. Вы можете скопировать этот шаблон из модуля user/user-profile.tpl.php в свою тему оформления и запрограммировать его там на ваш вкус. Не забудьте при этом сбросить кеш друпала.

Написать комментарий

Мало букафф? Читайте есчо !

Дамский велик Forward Evia 815

Сентябрь 18, 2012 г.

В начале лета мы с женой начали кататься на великах. О своём драндулете я уже рассказывал ранее. А Ирине тоже требовался какой то не шибко замороченный ...

Читать

Вояж в китай..

Август 18, 2008 г.

В проекте TripIntoChina.com я принимал участие, работая в Ways LTD. Это был мой первый серьёзный проект в этой конторе и опыт работы с движком Drupal. ...

Читать

 

Комментарии к «Модификация формы регистрации в drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Модификация формы регистрации в drupal”

  1. Denis:

    А может подскажите еще в какую таблицу и в какие поля пишутся эти дополнительные поля формы регистрации?
    Чета как то с налету найти не получилось