Como adicionar campos extras ao perfil do usuário?

22

Eu gostaria de adicionar campos adicionais ao perfil do usuário. Eu gostaria que o usuário pudesse editar quase todas as informações que guardo no banco de dados sobre ele. Eu tenho algumas idéias: talvez seja possível fazer usando a API do formulário.

Alexey
fonte
blog de detalhes está aqui: goo.gl/zxBTBY
Suresh Kamrushi

Respostas:

23

Uma maneira de adicionar campos de usuário por código, para que você possa colocar isso em seu módulo.

Eu encontrei o seguinte: field_create_field com nos comentários uma maneira de criar um campo para seu usuário ao ativar seu módulo:

/**
 * 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);
  }
}
MOSCA
fonte
1
Encontrei esta página muito útil , que explica como exportar campos criados com a interface do usuário. Esta exportação pode, então, ser usado com field_create_field e field_create_instance fazer tudo por meio de programação
Whiskey
Obrigado, isso foi muito útil - tem uma idéia de como atribuir automaticamente o peso também?
inertialmedia
você pode adicionar 'weight' => '1',à matriz de widgets no $instanceeu adicionarei na minha resposta.
FLY
Para casos complexos, é útil para primeiro adicionar o campo manualmente em /admin/config/people/accounts/fields, em seguida, usar Inspector campo em /admin/config/development/field-inspectorexportar as matrizes definição de instância de campo e de campo para uso em código como o acima.
11135 tanius
Para manter o banco de dados limpo, você também pode implementar um hook_uninstall para excluir o campo. function MYMODULE_uninstall() {field_delete_field('field_myField');}
Dxvargas 06/07/19
35

Achei a página difícil de encontrar, mas em / admin / config / people / accounts / fields você pode adicionar campos aos usuários.

Attiks
fonte
2
Obrigado, mas posso fazê-lo usando o formulário api? Eu preciso de mais funcionalidade.
Alex11
o que você quer fazer e que não é possível com os campos?
Attiks
Eu já criei meus próprios campos na tabela Drupal users. "Campos" criam novos campos fora da tabela users.
Alexey
é assim que o drupal funciona. Por que você deseja armazenar os campos na tabela de usuários?
Attiks
É a maneira mais conveniente de fazer isso na minha opinião. A propósito, a fim de adicionar campos extras que eu usohook_form_alter(&$form, &$form_state, $form_id)
Alexey
5

O perfil no D7 é um pouco estranho. O módulo profile2 pode fazer o que você precisa.

Jeremy French
fonte
4

No Drupal 7, use esse processo para adicionar um campo novo ou existente com diferentes tipos de campo (como Imagem, campo Tags etc.) ao perfil do usuário:

  1. Ative o módulo UI do campo .
  2. Vá para " Admin → Configuração → Pessoas: configurações da conta " no menu do administrador e depois para " Gerenciar campos " (a segunda guia).

    (Como alternativa, use o caminho direto no URL:) /admin/config/people/accounts/fields.

  3. Preencha a linha "Adicionar novo campo" ou "Adicionar campo existente" na parte inferior do formulário e clique em "Salvar".
Chanuka Asanka
fonte
1

Que tipo de campos você deseja adicionar?

  • Se este é um site de rede social e você está adicionando campos de configurações de privacidade, use o módulo Privacidade por usuário .
  • Se você deseja adicionar guias ou campos de acordeão, use o módulo field_group para adicionar novos grupos aos campos da conta do usuário (URL: / admin / config / people / accounts / fields).
  • E se você quiser campos diferentes para funções diferentes, use o módulo profile2 .
Druvision
fonte