it-swarm-id.com

Bagaimana cara menyembunyikan bidang pengguna khusus di profil pengguna?

Di Drupal 7, apa cara terbaik untuk mencegah pengguna non-administratif mengubah bidang profil pengguna khusus?

Gunakan case: Saya telah membuat bidang pengguna yang disebut "ID Pelanggan" yang saya tidak ingin pengguna (salah satu pelanggan saya yang sebenarnya) berubah. Kolom ada untuk referensi saya sendiri dan untuk penggunaan terprogram dalam modul lain. Saya tidak keberatan pengguna melihat ID Pelanggan, tetapi mereka seharusnya tidak dapat mengeditnya.

Haruskah saya mengganti template halaman untuk halaman profil pengguna? Jika ya, bagaimana templat diubah untuk membuat bidang hanya baca atau tidak terlihat?

Terima kasih banyak atas bantuan Anda!

Chris

19
ctlarsen

Saya pikir Izin Lapangan adalah apa yang Anda cari. Berikut ini adalah kutipan tentang hal itu (dari halaman proyek modul):

... memungkinkan administrator situs untuk mengatur izin level lapangan untuk mengedit, melihat, dan membuat bidang pada entitas apa pun.

Fitur :

  • Aktifkan izin bidang pada entitas apa pun, bukan hanya simpul.
  • Izin bidang berbasis peran memungkinkan pola tampilan yang berbeda berdasarkan pada apa yang dimiliki pengguna.
  • Izin tingkat penulis memungkinkan tampilan dan pengeditan bidang berdasarkan siapa pemilik entitas.
  • Izin untuk setiap bidang tidak diaktifkan secara default. Sebagai gantinya, administrator dapat mengaktifkan izin ini secara eksplisit untuk bidang di mana fitur ini diperlukan.
  • Ikhtisar izin bidang
17
pasine

Untuk menyembunyikan bidang dari formulir profil pengguna, Anda dapat mengatur #access properti bidang ke FALSE menggunakan hook_form_FORMID_alter .

Cuplikan berikut menyembunyikan bidang field_organisation dari formulir profil pengguna untuk non-admin:

function YOURCUSTOMMODULE_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    $form['field_organisation']['#access'] = FALSE;
  }
}

Lihat juga pertanyaan serupa tentang drupalanswers

Anda juga dapat menyembunyikan bidang dari halaman profil pengguna (bukan formulir) menggunakan template_preprocess_user_profile

Cuplikan berikut menyembunyikan bidang field_organisation dari halaman pengguna untuk non-admin:

function YOURCUSTOMMODULE_preprocess_user_profile(&$vars) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    unset($vars['user_profile']['field_organisation']);
  }
}
5
batigolix

Tampaknya ada modul bernama http://drupal.org/project/user_readonly "Modul ini memungkinkan administrator untuk mencegah modifikasi bidang akun/profil pengguna. Administrator dapat memilih bidang mana yang akan tidak diizinkan, atau bidang mana yang akan diizinkan. "

1
Jayesh Jose