في Drupal 7 ، ما هي أفضل طريقة لمنع أي مستخدم غير إداري من تغيير حقل ملف تعريف مستخدم مخصص؟
حالة الاستخدام: لقد قمت بإنشاء حقل مستخدم يسمى "الرقم التعريفي للعميل" ولا أريد أن يتغير المستخدم (أي من عملائي الفعليين). المجال موجود كمرجع خاص بي وللاستخدام الآلي في وحدات أخرى. لا أمانع أن يرى المستخدم الرقم التعريفي للعميل ، ولكن لا يجب أن يتمكن من تعديله.
هل يجب عليّ تجاوز قالب الصفحة لصفحة ملف تعريف المستخدم؟ إذا كان الأمر كذلك ، كيف تم تغيير القالب لجعل الحقل للقراءة فقط أو غير مرئي؟
شكرا جزيلا لك على مساعدتك!
كريس
أعتقد أذونات الحقل هو ما تبحث عنه. هنا اقتباس عنها (من صفحة مشروع الوحدة):
... يسمح لمسؤولي الموقع بتعيين أذونات على مستوى الحقل لتحرير الحقول وعرضها وإنشائها في أي كيان.
الميزات :
- تمكين أذونات الحقل على أي كيان ، وليس فقط العقد.
- أذونات الحقل المستندة إلى الأدوار التي تسمح بنمط عرض مختلف استنادًا إلى ما يمتلكه المستخدم من وصول.
- تسمح الأذونات على مستوى المؤلف بعرض الحقول وتعديلها بناءً على مالك الكيان.
- لا يتم تمكين الأذونات لكل حقل بشكل افتراضي. بدلاً من ذلك ، يمكن للمسؤولين تمكين هذه الأذونات بشكل صريح للحقول التي تتطلب هذه الميزة.
- نظرة عامة على أذونات الحقول
لإخفاء الحقل من نموذج ملف تعريف المستخدم ، يمكنك تعيين #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']);
}
}
يبدو أن هناك وحدة تسمى http://drupal.org/project/user_readonly "تسمح الوحدة للمسؤول بمنع تعديل حقول حساب المستخدم/ملف التعريف. يمكن للمسؤول تحديد الحقول التي ستكون غير مسموح ، أو الحقول التي سيتم السماح بها. "