Come aggiungere campi extra al profilo utente?


22

Vorrei aggiungere altri campi al profilo utente. Vorrei che l'utente fosse in grado di modificare quasi tutte le informazioni che memorizzo nel database su di lui. Ho alcune idee: forse è possibile farlo usando il modulo API.


blog di dettaglio è qui: goo.gl/zxBTBY
Suresh Kamrushi,

Risposte:


23

Un modo per aggiungere campi utente per codice in modo da poterlo inserire nel modulo.

Ho trovato questo: field_create_field con nei commenti un modo per creare un campo per il tuo utente dopo aver abilitato il tuo modulo:

/**
 * 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
Ho trovato questa pagina molto utile che spiega come esportare i campi creati con l'interfaccia utente. Questa esportazione può quindi essere utilizzata con field_create_field e field_create_instance per fare tutto programmaticamente
Whisky

Grazie, è stato molto utile: hai idea di come assegnare automaticamente il peso?
inertialmedia,

è possibile aggiungere 'weight' => '1',all'array di widget nel $instancelo aggiungerò nella mia risposta.
VOLA

Per i casi complessi, è utile aggiungere primo campo manualmente /admin/config/people/accounts/fields, quindi utilizzare campo ispettore sulle /admin/config/development/field-inspectoresportare array definizione istanza di campo e di campo per l'uso nel codice come sopra.
tanius,

Per mantenere pulito il database, potresti anche voler implementare un hook_uninstall per eliminare il campo. function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas,

35

Ho trovato la pagina difficile da trovare, ma in / admin / config / people / account / fields puoi aggiungere campi agli utenti.


2
Grazie, ma posso farlo usando il modulo API? Ho bisogno di più funzionalità.
Alexey,

cosa vuoi fare, che non è possibile con i campi?
Attiks,

Ho già creato i miei campi nella tabella Drupal users. I "campi" creano nuovi campi all'esterno della tabella users.
Alexey,

è così che funziona drupal, perché vuoi archiviare i campi nella tabella degli utenti?
Attiks,

Secondo me è un modo più conveniente di farlo. A proposito, al fine di aggiungere campi extra che usohook_form_alter(&$form, &$form_state, $form_id)
Alexey


4

In Drupal 7, usa questo processo per aggiungere un campo nuovo o esistente con diversi tipi di campo (come immagine, campo Tag ecc.) Al profilo utente:

  1. Abilitare il modulo IU campo .
  2. Vai su " Ammin → Configurazione → Persone: Impostazioni account " nel menu Ammin, quindi su " Gestisci campi " (la seconda scheda).

    (In alternativa, utilizzare il percorso diretto nell'URL:) /admin/config/people/accounts/fields.

  3. Compila la riga "Aggiungi nuovo campo" o "Aggiungi campo esistente" nella parte inferiore del modulo e fai clic su "Salva".

1

Che tipo di campi vuoi aggiungere?

  • Se si tratta di un sito di social network e si stanno aggiungendo campi relativi alle impostazioni sulla privacy, utilizzare il modulo Privacy per utente .
  • Se si desidera aggiungere schede o campi di fisarmonica, utilizzare il modulo field_group per aggiungere nuovi gruppi nei campi dell'account utente (URL: / admin / config / people / account / fields).
  • E se vuoi campi diversi per ruoli diversi, usa il modulo profile2 .
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.