Bagaimana cara menambahkan bidang tambahan ke profil pengguna?


22

Saya ingin menambahkan bidang tambahan ke profil pengguna. Saya ingin pengguna dapat mengedit hampir semua informasi yang saya simpan di database tentang dia. Saya punya beberapa ide: mungkin itu mungkin dilakukan dengan menggunakan formulir api.


detail blog ada di sini: goo.gl/zxBTBY
Suresh Kamrushi

Jawaban:


23

Cara menambahkan bidang pengguna dengan kode sehingga Anda bisa memasukkan ini ke modul Anda.

Saya telah menemukan ini: field_create_field dengan di komentar cara untuk membuat bidang untuk pengguna Anda setelah mengaktifkan modul Anda:

/**
 * 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
Saya menemukan halaman yang sangat berguna ini yang menjelaskan cara mengekspor bidang yang dibuat dengan UI. Ekspor ini kemudian dapat digunakan dengan field_create_field dan field_create_instance untuk melakukan semuanya secara terprogram
Whiskey

Terima kasih, ini sangat berguna - punya ide cara menetapkan bobot juga secara otomatis?
inertialmedia

Anda dapat menambahkan 'weight' => '1',ke larik widget di $instanceSaya akan menambahkannya di jawaban saya.
FLY

Untuk kasus-kasus yang kompleks, pertama-tama berguna untuk menambahkan bidang secara manual /admin/config/people/accounts/fields, kemudian gunakan Field Inspector on /admin/config/development/field-inspectoruntuk mengekspor bidang dan array definisi bidang contoh untuk digunakan dalam kode seperti di atas.
tanius

Untuk menjaga DB tetap bersih, Anda mungkin juga ingin mengimplementasikan hook_uninstall untuk menghapus bidang. function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas

35

Saya menemukan halaman itu sulit ditemukan, tetapi di / admin / config / people / accounts / bidang Anda dapat menambahkan bidang ke pengguna.


2
Terima kasih, tetapi bisakah saya melakukannya menggunakan formulir api? Saya membutuhkan lebih banyak fungsi.
Alexey

apa yang ingin Anda lakukan, itu tidak mungkin dengan bidang?
Attiks

Saya sudah membuat bidang saya sendiri di tabel Drupal users. "Fields" membuat bidang baru di luar tabel users.
Alexey

Begitulah cara kerja drupal, mengapa Anda ingin menyimpan bidang di dalam tabel pengguna?
Attiks

Ini cara yang lebih mudah untuk melakukannya menurut saya. Omong-omong untuk menambahkan bidang tambahan yang saya gunakanhook_form_alter(&$form, &$form_state, $form_id)
Alexey


4

Di Drupal 7, gunakan proses ini untuk menambahkan bidang baru atau yang sudah ada dengan jenis bidang yang berbeda (seperti Gambar, bidang Tag dll.) Ke profil pengguna:

  1. Aktifkan modul Field UI .
  2. Pergi ke " Admin → Konfigurasi → Orang: Pengaturan akun " di menu admin, dan kemudian ke " Kelola bidang " (tab kedua).

    (Atau, gunakan jalur langsung di URL:) /admin/config/people/accounts/fields.

  3. Isi baris "Tambahkan bidang baru" atau "Tambahkan bidang yang ada" di bagian bawah formulir dan klik "Simpan".

1

Jenis bidang apa yang ingin Anda tambahkan?

  • Jika ini adalah situs jejaring sosial dan Anda menambahkan bidang pengaturan privasi, gunakan modul Privacy Per User .
  • Jika Anda ingin menambahkan tab atau bidang akordeon, gunakan modul field_group untuk menambahkan grup baru di bidang akun pengguna (URL: / admin / config / people / akun / bidang).
  • Dan jika Anda ingin bidang yang berbeda untuk peran yang berbeda, gunakan modul profile2 .
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.