• урок
  • pantey

Добавляем чекбокс в форму регистрации пользователя

29.10.2013

При создании вашего очередного проекта, например - форум, при регистрации очередного пользователя есть необходимость быть уверенным в том, что данный пользователь был ознакомлен с условиями и правилами данного ресурса, иначе запретить для него возможность регистрации на сайте. Для решения данной задачи, можно использовать чекбокс при регистрации, если пользователь его отметил – значит он ознакомлен с правилами ресурса и может продолжать регистрацию, если не отметил – то запретить дальнейшую регистрацию. Как реализовать такой функционал в Drupal 7, я сейчас продемонстрирую. Как всегда в моём распоряжении стандартная тема «Bartik». А теперь собственно к реализации, открываем файл template.php вашего шаблона, если у вас его нет, то необходимо создать. И используем хук:

  1. theme_form_user_register_form_alter(&$form, &$form_state, $form_id);

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

  1. <?php function bartik_form_user_register_form_alter(&$form, &$form_state, $form_id) {
  2. $form['terms_of_use'] = array(
  3. '#type' => 'checkbox',
  4. '#title' => "Я согласен с правилами и условиями сайта",
  5. '#description' => '<div style="width:300px; height:200px; overflow-y:scroll; border:1px solid;">Вы не должны ругаться матом и распространять спам </div>',
  6. '#required' => TRUE,
  7. );
  8. }
  9. ?>

Не забывайте только подставлять названия вашего шаблона в имени функции, в моём случае это bartik. Теперь, нам лишь осталось почисить кеш сайта и посмотреть результат.

Как мы видим, всё выглядит так как мы и хотели. Если же вам необходимо сделать чекбокс не обязательным, то измените ключ #required на FALSE, т.е код должен выглядеть следующем образом:

  1. <?php function bartik_form_user_register_form_alter(&$form, &$form_state, $form_id) {
  2. $form['terms_of_use'] = array(
  3. '#type' => 'checkbox',
  4. '#title' => "Я согласен с правилами и условиями сайта",
  5. '#description' => '<div style="width:300px; height:200px; overflow-y:scroll; border:1px solid;">Вы не должны ругаться матом и распространять </div>',
  6. '#required' => FALSE,
  7. );
  8. }
  9. ?>

На этом всё.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (3)

Profile picture for user 1541
Денис
28.03.2014

Спасибо большое! По Вашей инструкции получилось зарулить чекбокс с первого раза.

Profile picture for user 1541
Олег Пушкарский
31.08.2017

а можно тоже самое для формы обратной связи(webform) и что бы кнопка отправить была не активной до включения чекбокса?

Profile picture for user pantey
pantey
31.08.2017

да, используйте

<?php

hook_form_ID_FORM_alter();

вместо ID_FORM вставьте ID вашей формы