Модификация формы регистрации в 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 в свою тему оформления и запрограммировать его там на ваш вкус. Не забудьте при этом сбросить кеш друпала.

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

Подсчет кол-ва нулевых подмассивов

Март 21, 2023 г.

Разбор задачи с литкода. (2348. Number of Zero-Filled Subarrays). Суть: есть массив чисел, нужно подсчитать кол-во подмассивов, состоящих из нулей. Например, дан массив [0, 0, 1]. Как видим, есть последовательность из двух нулей в начале ...

Читать

Утилита для администрирования меню в Drupal

Июнь 26, 2017 г.

Очередные обновления модуля MAT для Drupal 7. Модуль тестируется на одном из сайтов, над которыми я работаю. Такое горячее тестирование возможно благодаря ...

Читать

Найти элемент по его классу в HTML на чистом js

Май 4, 2020 г.

Немного ванильного js, на этот раз: как найти контейнер по указанному классу. Сразу рассмотрим более сложный пример, когда требуется найти элемент с классом .class-child внутри элемента .class-parent. В DOM мы используем функцию element.getElementsByClassName(CLASSNAME), ...

Читать

Как получить строку из R.string по имени

Ноябрь 30, 2022 г.

В общем случае, когда вы находитесь в контексте Activity, это выглядит так: [crayon-6aadc4eb63ee1132252660/] При этом вызов getResources() в этом контексте и необязателен, т.е. работает и так: [crayon-6aadc4eb63ee7583604558/] Если вы находитесь ...

Читать
 

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

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



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

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

  1. Denis:

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