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.