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.

Alexey
sumber
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);
  }
}
TERBANG
sumber
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.

Attik
sumber
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
5

Profil di D7 agak aneh. The PROFILE2 modul dapat melakukan apa yang Anda butuhkan.

Jeremy French
sumber
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".
Chanuka Asanka
sumber
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 .
Druvision
sumber