Kullanıcı profiline nasıl ilave alan eklenir?


22

Kullanıcı profiline ek alan eklemek istiyorum. Kullanıcının onunla ilgili veritabanında sakladığım tüm bilgileri hemen hemen düzenleyebilmesini istiyorum. Bazı fikirlerim var: belki api formunu kullanarak yapmak mümkündür.


detay günlüğü burada: goo.gl/zxBTBY
— Suresh Kamrushi

Yanıtlar:


23

Kullanıcı alanlarını koda göre eklemenin bir yolu olarak, bunu modülünüze koyabilirsiniz.

Bunu buldum: field_create_field yorumlarda, modülünüzü etkinleştirdikten sonra kullanıcı için bir alan oluşturmanın bir yolunu kullanarak:

/**
 * 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
Kullanıcı Arabirimi ile oluşturulan alanların nasıl dışa aktarılacağını açıklayan çok yararlı bir sayfa buldum . Bu dışa aktarma daha sonra field_create_field ve field_create_instance ile programlı olarak her şeyi yapmak için kullanılabilir
— Whiskey

Teşekkürler, bu çok faydalı oldu - ağırlığı otomatik olarak nasıl atayacağınız konusunda bir fikriniz mi var?
— inertialmedia

ekleyebilir 'weight' => '1',widget diziye $instancecevabım ekleriz I.
— FLY

Karmaşık vakalarda ilk el ile alan eklemek için yararlıdır /admin/config/people/accounts/fields, sonra kullanmak Saha Müfettiş üzerinde /admin/config/development/field-inspectoryukarıdaki gibi kod kullanılmak üzere saha ve saha örneği tanım dizileri ihracat.
— tanius

DB'yi temiz tutmak için, alanı silmek üzere bir hook_uninstall uygulamak isteyebilirsiniz. function MYMODULE_uninstall() {field_delete_field('field_myField');}
— dxvargas

35

Sayfayı bulmayı zor buldum, ancak / admin / config / people / account / fields adresinden kullanıcılara alan ekleyebilirsiniz.


2
Teşekkürler, ama api formunu kullanarak yapabilir miyim? Daha fazla işlevselliğe ihtiyacım var.
— Alexey

Ne yapmak istiyorsun, alanlarla mümkün değil mi?
— Attiks,

Drupal tablosunda kendi tarlalarımı oluşturdum users. "Alanlar" tablonun dışında yeni alanlar oluşturur users.
— Alexey

drupal bu şekilde çalışıyor, neden alanları kullanıcı tablosunda saklamak istiyorsun?
— Attik’ler

Bence bunu yapmanın daha kolay bir yolu. Bu arada fazladan alan eklemek için kullanıyorumhook_form_alter(&$form, &$form_state, $form_id)
— Alexey


4

Drupal 7'de, kullanıcı profiline farklı alan türleriyle (Görüntü, Etiketler alanı vb.) Yeni veya mevcut bir alan eklemek için bu işlemi kullanın:

  1. Field UI modülünü etkinleştirin .
  2. Yönetici menüsünde " Yönetici → Yapılandırma → Kişiler: Hesap ayarları " seçeneğine ve ardından " Alanları yönet " e (ikinci sekme) gidin.

    (Alternatif olarak, URL’deki doğrudan yolu kullanın:) /admin/config/people/accounts/fields.

  3. Formun altındaki "Yeni alan ekle" veya "Mevcut alan ekle" satırını doldurun ve "Kaydet" i tıklayın.

1

Hangi tür alanları eklemek istiyorsunuz?

  • Bu bir sosyal ağ sitesiyse ve gizlilik ayarları alanları ekliyorsanız, Kullanıcı Başına Gizlilik modülünü kullanın.
  • Sekmeler veya akordeon alanları eklemek istiyorsanız, kullanıcı hesabı alanlarına yeni gruplar eklemek için field_group modülünü kullanın (URL: / admin / config / people / account / fields).
  • Ve farklı roller için farklı alanlar istiyorsanız, profile2 modülünü kullanın .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.