จะเพิ่มฟิลด์พิเศษในโปรไฟล์ผู้ใช้ได้อย่างไร?


22

ฉันต้องการเพิ่มเขตข้อมูลเพิ่มเติมลงในโปรไฟล์ผู้ใช้ ฉันต้องการให้ผู้ใช้สามารถแก้ไขข้อมูลเกือบทั้งหมดที่ฉันเก็บไว้ในฐานข้อมูลเกี่ยวกับเขา ฉันมีความคิดบางอย่าง: อาจเป็นไปได้ที่จะใช้แบบฟอร์ม API


บล็อกรายละเอียดอยู่ที่นี่: goo.gl/zxBTBY
Suresh Kamrushi

คำตอบ:


23

วิธีเพิ่มเขตข้อมูลผู้ใช้ด้วยรหัสเพื่อให้คุณสามารถใส่ในโมดูลของคุณ

ฉันได้พบสิ่งนี้: field_create_fieldในความคิดเห็นวิธีสร้างฟิลด์สำหรับผู้ใช้ของคุณเมื่อเปิดใช้งานโมดูลของคุณ:

/**
 * Implementation of hook_enable().
 */
function MYMODULE_enable() {
  // Check if our field is not already created.
  if (!field_info_field('field_myField')) {
    $field = array(
        'field_name' => 'field_myField', 
        'type' => 'text', 
    );
    field_create_field($field);

    // Create the instance on the bundle.
    $instance = array(
        'field_name' => 'field_myField', 
        'entity_type' => 'user', 
        'label' => 'My Field Name', 
        'bundle' => 'user', 
        // If you don't set the "required" property then the field wont be required by default.
        'required' => TRUE,
        'settings' => array(
           // Here you inform either or not you want this field showing up on the registration form.
            'user_register_form' => 1,
        ),
        'widget' => array(
            'type' => 'textfield',
            'weight' => '1',
        ), 
    );
    field_create_instance($instance);
  }
}

1
ฉันพบหน้าเว็บที่มีประโยชน์มากซึ่งอธิบายถึงวิธีการส่งออกฟิลด์ที่สร้างด้วย UI การส่งออกนี้สามารถใช้กับ field_create_field และ field_create_instance เพื่อทำทุกอย่างตามโปรแกรม
วิสกี้

ขอบคุณนี้มีประโยชน์มาก - มีความคิดวิธีกำหนดน้ำหนักอัตโนมัติด้วยหรือไม่
เฉื่อย

คุณสามารถเพิ่มลง'weight' => '1',ในอาร์เรย์วิดเจ็ตใน$instanceฉันจะเพิ่มในคำตอบของฉัน
FLY

สำหรับกรณีที่ซับซ้อนจะเป็นประโยชน์แรกเพิ่มฟิลด์ด้วยตนเองบน/admin/config/people/accounts/fieldsแล้วใช้ตรวจสอบภาคสนามใน/admin/config/development/field-inspectorการส่งออกภาคสนามและสนามอาร์เรย์นิยามเช่นสำหรับการใช้งานในรหัสเหมือนข้างต้น
tanius

เพื่อให้ DB สะอาดคุณอาจต้องการติดตั้ง hook_uninstall เพื่อลบฟิลด์ function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas

35

ฉันพบหน้ายากที่จะหา แต่ที่ / admin / config / people / accounts / field คุณสามารถเพิ่มเขตข้อมูลให้กับผู้ใช้


2
ขอบคุณ แต่ฉันสามารถใช้แบบฟอร์ม API ได้หรือไม่ ฉันต้องการฟังก์ชั่นเพิ่มเติม
Alexey

คุณต้องการทำอะไรที่เป็นไปไม่ได้กับเขตข้อมูล
Attiks

ฉันสร้างฟิลด์ของตัวเองในตาราง Drupal usersแล้ว "ทุ่ง" usersสร้างช่องใหม่นอกตาราง
Alexey

นั่นเป็นวิธีการทำงานของ drupal ทำไมคุณต้องการจัดเก็บเขตข้อมูลไว้ในตารางผู้ใช้
Attiks

เป็นวิธีที่สะดวกกว่าที่จะทำในความคิดของฉัน โดยวิธีการในการที่จะเพิ่มช่องพิเศษใช้ ihook_form_alter(&$form, &$form_state, $form_id)
Alexey


4

ใน Drupal 7 ให้ใช้กระบวนการนี้เพื่อเพิ่มฟิลด์ใหม่หรือที่มีอยู่ซึ่งมีประเภทฟิลด์ที่แตกต่างกัน (เช่นฟิลด์รูปภาพแท็ก ฯลฯ ) ไปยังโปรไฟล์ผู้ใช้:

  1. เปิดใช้งานโมดูลUI ฟิลด์
  2. ไปที่ "ผู้ดูแลระบบ→การกำหนดค่า→ผู้คน: การตั้งค่าบัญชี " ในเมนูผู้ดูแลระบบจากนั้นไปที่ " จัดการฟิลด์ " (แท็บที่สอง)

    (หรือใช้เส้นทางที่ตรงใน URL: /admin/config/people/accounts/fields)

  3. กรอกข้อมูลในบรรทัด "เพิ่มเขตข้อมูลใหม่" หรือ "เพิ่มเขตข้อมูลที่มีอยู่" ที่ด้านล่างของแบบฟอร์มและคลิก "บันทึก"

1

ฟิลด์ใดที่คุณต้องการเพิ่ม

  • หากนี่เป็นเว็บไซต์เครือข่ายสังคมและคุณกำลังเพิ่มฟิลด์การตั้งค่าความเป็นส่วนตัวให้ใช้โมดูลความเป็นส่วนตัวต่อผู้ใช้
  • หากคุณต้องการเพิ่มแท็บหรือช่องแอคคอร์เดียนให้ใช้โมดูล field_group เพื่อเพิ่มกลุ่มใหม่ในฟิลด์บัญชีผู้ใช้ (URL: / admin / config / people / accounts / field)
  • และถ้าคุณต้องการฟิลด์ที่แตกต่างสำหรับบทบาทที่แตกต่างกันให้ใช้โมดูลprofile2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.