web-gelistirme-sc.com

Kullanıcı profilindeki özel bir kullanıcı alanı nasıl gizlenir?

Drupal 7'de, yönetici olmayan bir kullanıcının özel kullanıcı profili alanını değiştirmesini önlemenin en iyi yolu nedir?

Kullanım örneği: Kullanıcının (gerçek müşterilerimden herhangi birinin) değişmesini istemediğim "Müşteri Kimliği" adlı bir kullanıcı alanı oluşturdum. Alan kendi referansım ve diğer modüllerde programlı kullanım için var. Kullanıcının Müşteri Kimliği'ni görmesini umursamıyorum, ancak düzenleyememeleri gerekir.

Kullanıcı profili sayfası için sayfa şablonunu geçersiz kılmalı mıyım? Öyleyse, şablonu bir alanı salt okunur veya görünmez yapmak için nasıl değiştirilir?

Yardımın için çok teşekkürler!

Chris

19
ctlarsen

Bence Alan İzinleri aradığınız şey bu. Bununla ilgili bir alıntı (modülün proje sayfasından):

... site yöneticilerinin herhangi bir varlığın alanlarını düzenlemek, görüntülemek ve oluşturmak için alan düzeyinde izinler belirlemesine olanak tanır.

Özellikler :

  • Yalnızca düğümlerde değil, herhangi bir varlıkta alan izinlerini etkinleştirin.
  • Kullanıcının sahip olduğu erişime bağlı olarak farklı görüntülemelere izin veren rol tabanlı alan izinleri.
  • Yazar düzeyinde izinler, alan sahibinin kim olduğuna göre alanların görüntülenmesine ve düzenlenmesine izin verir.
  • Her alan için izinler varsayılan olarak etkin değildir. Bunun yerine, yöneticiler bu özelliğin gerekli olduğu alanlar için bu izinleri açıkça etkinleştirebilir.
  • Alan izinlerine genel bakış
17
pasine

Alanı kullanıcı profili formundan gizlemek için #accesshook_form_FORMID_alter .

Aşağıdaki snippet, field_organisation yönetici olmayanlar için kullanıcı profili formundan:

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;
  }
}

Drupalanswers hakkındaki bu benzer soruya da bakın

Ayrıca alanı template_preprocess_user_profile kullanarak kullanıcı profili sayfasından (formdan değil) gizleyebilirsiniz.

Aşağıdaki snippet, field_organisation yönetici olmayanlar için kullanıcı sayfasından:

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

http://drupal.org/project/user_readonly "Modül bir yöneticinin kullanıcı hesabı/profil alanlarının değiştirilmesini engellemesine izin verir. Yönetici hangi alanların olacağını seçebilir izin verilmezse veya hangi alanlara izin verilir? "

1
Jayesh Jose