ฉันเคยมีสถานการณ์แบบเดียวกันมาก่อนและจัดการกับคุณสมบัติ 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; 
และโซลูชันอื่นกำลังใช้โมดูลการอนุญาตฟิลด์
  โมดูลสิทธิ์ฟิลด์อนุญาตให้ผู้ดูแลไซต์ตั้งค่าสิทธิ์ระดับฟิลด์เพื่อแก้ไขดูและสร้างฟิลด์ในเอนทิตีใด ๆ คุณสมบัติ:
  
  
  - เปิดใช้งานการอนุญาตให้ใช้ฟิลด์ในเอนทิตีใด ๆ ไม่ใช่เฉพาะโหนด
- การอนุญาตตามฟิลด์บทบาทช่วยให้มีรูปแบบการรับชมที่แตกต่างกันตามสิ่งที่ผู้ใช้เข้าถึง
- สิทธิ์ระดับผู้เขียนอนุญาตให้ดูและแก้ไขฟิลด์ตามบุคคลที่เป็นเจ้าของกิจการ
- สิทธิ์สำหรับแต่ละฟิลด์จะไม่เปิดใช้งานโดยค่าเริ่มต้น แต่ผู้ดูแลระบบสามารถเปิดใช้งานสิทธิ์เหล่านี้อย่างชัดเจนสำหรับฟิลด์ที่จำเป็นต้องใช้คุณลักษณะนี้
ในฐานะที่เป็นคุณสมบัติที่โมดูลนี้ให้สำหรับผู้ใช้ที่ไม่ระบุชื่อเรา (ผู้ใช้ที่ไม่ลงทะเบียนสามารถแก้ไขฟิลด์เหล่านั้นและลงทะเบียนผู้ใช้เห็นได้เท่านั้น (อ่านอย่างเดียว)