В Drupal 7, как лучше всего запретить любому пользователю, не являющемуся администратором, изменять поле пользовательского профиля?
Вариант использования: я создал поле пользователя с именем «Идентификатор клиента», которое я не хочу, чтобы пользователь (любой из моих реальных клиентов) изменился. Поле существует для моей справки и для программного использования в других модулях. Я не против, чтобы пользователь видел идентификатор клиента, но у него не должно быть возможности его редактировать.
Должен ли я переопределить шаблон страницы для страницы профиля пользователя? Если да, то как изменить шаблон, чтобы сделать поле доступным только для чтения или невидимым?
Большое спасибо за Вашу помощь!
Крис
Field Permissions
отлично работает с Drupal 8, но вы можете скрыть только пользовательские поля, которые я думаю (мне нужно было такжеЧтобы скрыть поле из формы профиля пользователя, вы можете установить для
#access
свойства поля значение FALSE, используяhook_form_FORMID_alter
.Следующий фрагмент кода скрывает поле
field_organisation
из формы профиля пользователя для не-администраторов:Смотрите также этот похожий вопрос на drupalanswers
Вы также можете скрыть поле со страницы профиля пользователя (не формы), используя template_preprocess_user_profile
Следующий фрагмент кода скрывает поле
field_organisation
со страницы пользователя для не-администраторов:источник
Кажется, что есть модуль под названием http://drupal.org/project/user_readonly "Модуль позволяет администратору предотвращать изменение полей учетной записи пользователя / профиля. Администратор может выбрать, какие поля будут запрещены, или какие поля будут позволил."
источник