it-swarm.asia

كيفية إخفاء حقل مستخدم مخصص في ملف تعريف المستخدم؟

في Drupal 7 ، ما هي أفضل طريقة لمنع أي مستخدم غير إداري من تغيير حقل ملف تعريف مستخدم مخصص؟

حالة الاستخدام: لقد قمت بإنشاء حقل مستخدم يسمى "الرقم التعريفي للعميل" ولا أريد أن يتغير المستخدم (أي من عملائي الفعليين). المجال موجود كمرجع خاص بي وللاستخدام الآلي في وحدات أخرى. لا أمانع أن يرى المستخدم الرقم التعريفي للعميل ، ولكن لا يجب أن يتمكن من تعديله.

هل يجب عليّ تجاوز قالب الصفحة لصفحة ملف تعريف المستخدم؟ إذا كان الأمر كذلك ، كيف تم تغيير القالب لجعل الحقل للقراءة فقط أو غير مرئي؟

شكرا جزيلا لك على مساعدتك!

كريس

19
ctlarsen

أعتقد أذونات الحقل هو ما تبحث عنه. هنا اقتباس عنها (من صفحة مشروع الوحدة):

... يسمح لمسؤولي الموقع بتعيين أذونات على مستوى الحقل لتحرير الحقول وعرضها وإنشائها في أي كيان.

الميزات :

  • تمكين أذونات الحقل على أي كيان ، وليس فقط العقد.
  • أذونات الحقل المستندة إلى الأدوار التي تسمح بنمط عرض مختلف استنادًا إلى ما يمتلكه المستخدم من وصول.
  • تسمح الأذونات على مستوى المؤلف بعرض الحقول وتعديلها بناءً على مالك الكيان.
  • لا يتم تمكين الأذونات لكل حقل بشكل افتراضي. بدلاً من ذلك ، يمكن للمسؤولين تمكين هذه الأذونات بشكل صريح للحقول التي تتطلب هذه الميزة.
  • نظرة عامة على أذونات الحقول
17
pasine

لإخفاء الحقل من نموذج ملف تعريف المستخدم ، يمكنك تعيين #access خاصية حقل FALSE باستخدام hook_form_FORMID_alter .

المقتطف التالي يخفي الحقل field_organisation من نموذج ملف تعريف المستخدم لغير المسؤولين:

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

انظر أيضًا هذا السؤال المماثل على دروبالانسفير

يمكنك أيضًا إخفاء الحقل من صفحة ملف تعريف المستخدم (وليس النموذج) باستخدام template_preprocess_user_profile

المقتطف التالي يخفي الحقل field_organisation من صفحة المستخدم لغير المسؤولين:

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 "تسمح الوحدة للمسؤول بمنع تعديل حقول حساب المستخدم/ملف التعريف. يمكن للمسؤول تحديد الحقول التي ستكون غير مسموح ، أو الحقول التي سيتم السماح بها. "

1
Jayesh Jose