ertttert
По умолчанию для регистрации пользователя на сайте Drupal нужно лишь ввести пользовательское имя и допустимый адрес электронной почты. Модули могут добавлять в форму регистрации пользователя собственные поля, реализуя несколько хуков пользователя. Сейчас мы напишем модуль с именем legalagree.module
, который поможет сайту выжить в полном опасностей современном мире. Сначала создайте папку sites/all/modules/custom/legalagree
и добавьте в каталог legalagree
файлы, описанные в листингах 6.2 и 6.3. Затем активируйте модуль с помощью пункта меню → → (Администрирование→Структура сайта→Модули).
Листинг 6.2. Файл legalagree.info
name = Legal Agreementdescription = Displays a dubious legal agreement during user registration.package = Pro Drupal Developmentcore = 7.xfiles[] = legalagree.module
Листинг 6.3. Файл legalagree.module
<?php/** * @file * Поддержка коварного текста официального соглашения * во время регистрации пользователя. */ /** * Реализация hook_form_alter(). */ function legalagree_form_alter(&$form, &$form_state, $form_id) {// Проверка, выполняет ли форма регистрацию или настройку профиля пользователя. // Если нет — возврат без каких-либо действий. if (!($form_id == 'user_register_form' || $form_id == 'user_profile_form')) {return;}// Добавление в форму новой функции проверки для заключения официального соглашения. $form['#validate'][] = 'legalagree_user_form_validate';// Добавление набора полей для заключения официального соглашения. $form['account']['legal_agreement'] =array( '#type' => 'fieldset', '#title' =>t( 'Legal agreement') //Официальное соглашение ) ;// Добавление кнопок переключателя для заключения соглашения. $form['account']['legal_agreement']['decision'] =array( '#type' => 'radios','#description' =>t( 'Регистрируясь на сайте %site-name, вы принимаете пользовательское соглашение.',array( '%site-name' =>variable_get( 'site_name', 'drupal') ) ) ,'#default_value' => 0,'#options' =>array( t( 'I disagree') ,t( 'I agree') ) ) ; }/** * Обработчик проверки формы для текущего пароля на user_account_form(). * * @see user_account_form() */ function legalagree_user_form_validate( $form, &$form_state) { $user;// Визуальная проверка. if ( $form_state['input']['decision'] <> 1) { form_set_error('decision', t('You must agree to the Legal Agreement before registration can be completed.'));// Для завершения регистрации вы должны принять официальное соглашение. }else { watchdog('user', t('User %user agreed to legal terms', array('%user' => $user->name)));// Пользователь %user принял официальные условия }
Хук пользователя вызывается во время создания регистрационной формы, во время проверки данных этой формы и после добавления записи о пользователе в базу данных. Наш короткий модуль создаст примерно такую регистрационную форму, как показанная на рис. 6.2.
Всего комментариев: 1 | ||
| ||