ฉันเคยมีสถานการณ์แบบเดียวกันมาก่อนและจัดการกับคุณสมบัติ druapl แบบเต็มกำลังhook_form_alterเรามี 2 รูปแบบสำหรับผู้ใช้การลงทะเบียนและแก้ไขผู้ใช้
- user_profile_form (กำลังแก้ไข)
- user_register_form (อยู่ในการลงทะเบียน)
เราเพียงต้องการซ่อนเขตข้อมูลที่คุณระบุในลักษณะการแก้ไขดังนั้นในโมดูลที่กำหนดเองของคุณ
function yourmodule_form_alter(&$form, &$form_state, $form_id)
{
global $user;
if ($form_id == "user_profile_form") {
// ym($form);
// you also can perform this action for specified roles
//if (!(in_array('blogger', $user->roles) || in_array('administrator', $user->roles))) {
hide($form['field_mytest']);
// hide other field with this method
//}
}
}
หลังจากฟิลด์นั้นมีการลงทะเบียนตามที่คุณเห็นด้านล่าง
และไม่มีอยู่ (ซ่อน) ในลักษณะที่แก้ไข
นอกจากนี้คุณสามารถตั้งค่าให้อ่านได้อย่างเดียวแทนที่จะซ่อนไว้$form['field']['#access'] = FALSE;
และโซลูชันอื่นกำลังใช้โมดูลการอนุญาตฟิลด์
โมดูลสิทธิ์ฟิลด์อนุญาตให้ผู้ดูแลไซต์ตั้งค่าสิทธิ์ระดับฟิลด์เพื่อแก้ไขดูและสร้างฟิลด์ในเอนทิตีใด ๆ คุณสมบัติ:
- เปิดใช้งานการอนุญาตให้ใช้ฟิลด์ในเอนทิตีใด ๆ ไม่ใช่เฉพาะโหนด
- การอนุญาตตามฟิลด์บทบาทช่วยให้มีรูปแบบการรับชมที่แตกต่างกันตามสิ่งที่ผู้ใช้เข้าถึง
- สิทธิ์ระดับผู้เขียนอนุญาตให้ดูและแก้ไขฟิลด์ตามบุคคลที่เป็นเจ้าของกิจการ
- สิทธิ์สำหรับแต่ละฟิลด์จะไม่เปิดใช้งานโดยค่าเริ่มต้น แต่ผู้ดูแลระบบสามารถเปิดใช้งานสิทธิ์เหล่านี้อย่างชัดเจนสำหรับฟิลด์ที่จำเป็นต้องใช้คุณลักษณะนี้
ในฐานะที่เป็นคุณสมบัติที่โมดูลนี้ให้สำหรับผู้ใช้ที่ไม่ระบุชื่อเรา (ผู้ใช้ที่ไม่ลงทะเบียนสามารถแก้ไขฟิลด์เหล่านั้นและลงทะเบียนผู้ใช้เห็นได้เท่านั้น (อ่านอย่างเดียว)