Скрыть или отключить поле после регистрации


8

У меня есть 1 поле на странице регистрации пользователя, которое нельзя изменить после регистрации аккаунта. Это должно быть скрыто или отключено. Какой модуль может это сделать?


связанные: drupal.org/node/374416
Молот

Ответы:


4

Вы можете попробовать Field Permissions Module

особенности

  • Включите права доступа к полям для любого объекта, а не только для узлов.
  • Полевые разрешения на основе ролей, позволяющие различать шаблоны просмотра в зависимости от того, какой доступ имеет пользователь.
  • Права на уровне автора позволяют просматривать и редактировать поля в зависимости от того, кто является владельцем объекта.
  • Разрешения для каждого поля не включены по умолчанию. Вместо этого администраторы могут явно включить эти разрешения для полей, где требуется эта функция.

Как он может различать создание и редактирование пользователя, если это одно и то же поле? Я не говорю, что не может, я искренне хотел бы знать, как. И я думаю, что OP тоже.
Молот

Это будет разрешение поля на основе ролей, необходимо давать разрешение только для анонимных пользователей (не уверен, будет ли это условие работать в данном случае).
Бипин К

8

Если вы хотите сделать это в пользовательском модуле

my_module_form_user_profile_form_alter(&$form, &$form_state) {
  // Since it is on registration form, field might be reqruied.
  $form['your_field']['#required'] = FALSE;
  $form['your_field']['#access'] = FALSE;
}

Как можно различить создание и редактирование пользователя?
DRUPWAY

2
@Smalution Вам не нужно - для регистрации это было бы my_module_form_user_register_form_alterне так my_module_form_user_profile_form_alter.
Молот

1
hook is hook_form_FORM_ID_alter FORM_ID для регистрации и редактирования неэффективен
arpitr

Хорошо понял. Я проверил, когда пользователь регистрирует свой идентификатор формы "user-register-form" и когда пользователь редактирует свой идентификатор формы "user-profile-form" как обычно.
DRUPWAY

Да, как и ожидалось :)
arpitr 11.09.15

1

Попробуйте с этим кодом:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }

2
Пожалуйста, добавьте несколько слов описания.
Молот

$ form ['field_name'] ['# disabled'] = TRUE; тоже работает.
Пинев

1

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


1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}

0

Попробуйте использовать hook_form_alter, см. Пример ниже:

function MODULENAME_form_alter(&$form_state, $form_id){
      global $user;
      //$form_id :: user detail edit form id
      if($user->uid != 0 && $form_id == "required_form_id"){
         //$field :: requied field name
          $form[$field]['#access'] = FALSE;

      }
   }

0

Поместите этот код в пользовательский модуль, поле будет доступно для нового контента, но будет отключено для его редактирования.

if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);

// for user form use '#user' instead of '#node' and uid instead of nid
if (isset($form['#node']) && isset($form['#node']->nid)){

    // Prevent editing a field once the node has been created
    // hiding the field entirely on the edit form.
    $form['field_name']['#access'] = FALSE;

    // disable update field on the edit form (gray color).
    $form['field_name']['#disabled'] = TRUE;
}

}

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.