Wie füge ich zusätzliche Felder zum Benutzerprofil hinzu?

22

Ich möchte dem Benutzerprofil zusätzliche Felder hinzufügen. Ich möchte, dass der Benutzer fast alle Informationen, die ich über ihn in der Datenbank speichere, bearbeiten kann. Ich habe einige Ideen: Vielleicht ist es möglich, form api zu verwenden.

Alexey
quelle
Detail-Blog ist hier: goo.gl/zxBTBY
Suresh Kamrushi

Antworten:

23

Eine Möglichkeit, Benutzerfelder nach Code hinzuzufügen, damit Sie diese in Ihr Modul einfügen können.

Ich habe folgendes gefunden: field_create_field mit in den Kommentaren einer Möglichkeit, ein Feld für Ihren Benutzer beim Aktivieren Ihres Moduls zu erstellen:

/**
 * 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);
  }
}
FLIEGE
quelle
1
Ich fand diese sehr nützliche Seite, auf der erklärt wird, wie mit der Benutzeroberfläche erstellte Felder exportiert werden. Dieser Export kann dann mit field_create_field und field_create_instance verwendet werden, um alles programmgesteuert zu erledigen
Whisky
Danke, das war sehr nützlich - haben Sie eine Idee, wie Sie das Gewicht auch automatisch zuweisen können?
Inertialmedia
Sie können 'weight' => '1',das Widget-Array unter $instanceIch werde es in meiner Antwort hinzufügen.
FLY
Bei komplexen Fällen ist es sinnvoll , das Feld manuell auf dem ersten hinzufügen /admin/config/people/accounts/fields, dann verwenden Sie Feld Inspector auf /admin/config/development/field-inspectorden Feld- und Feldinstanz Definition - Arrays für die Verwendung in Code wie oben zu exportieren.
Tanius
Um die Datenbank sauber zu halten, können Sie auch eine Hook-Deinstallation implementieren, um das Feld zu löschen. function MYMODULE_uninstall() {field_delete_field('field_myField');}
Dxvargas
35

Ich fand die Seite schwer zu finden, aber unter / admin / config / people / accounts / fields können Sie Benutzern Felder hinzufügen.

Attiks
quelle
2
Danke, aber kann ich das mit form api machen? Ich brauche mehr Funktionalität.
Alexey
was willst du machen, das geht mit feldern nicht?
Attiks
Ich habe bereits meine eigenen Felder in der Drupal-Tabelle erstellt users. "Felder" erstellen neue Felder außerhalb der Tabelle users.
Alexey
So funktioniert Drupal. Warum möchten Sie die Felder in der Benutzertabelle speichern?
Attiks
Es ist meiner Meinung nach bequemer, dies zu tun. Übrigens, um zusätzliche Felder hinzuzufügen, verwende ichhook_form_alter(&$form, &$form_state, $form_id)
Alexey
5

Profil in D7 ist ein bisschen komisch. Das profile2- Modul kann das tun, was Sie brauchen.

Jeremy French
quelle
4

Verwenden Sie diesen Prozess in Drupal 7, um dem Benutzerprofil ein neues oder vorhandenes Feld mit verschiedenen Feldtypen (wie z. B. Bild, Feld "Tags" usw.) hinzuzufügen:

  1. Aktivieren Sie das Feld-UI- Modul.
  2. Gehen Sie im Admin-Menü zu " Admin → Konfiguration → Personen: Kontoeinstellungen " und dann zu " Felder verwalten " (die zweite Registerkarte).

    (Alternativ können Sie den direkten Pfad in der URL verwenden:) /admin/config/people/accounts/fields.

  3. Füllen Sie die Zeile "Neues Feld hinzufügen" oder "Vorhandenes Feld hinzufügen" am unteren Rand des Formulars aus und klicken Sie auf "Speichern".
Chanuka Asanka
quelle
1

Welche Art von Feldern möchten Sie hinzufügen?

  • Wenn es sich um eine Social-Networking-Site handelt und Sie Datenschutzeinstellungsfelder hinzufügen, verwenden Sie das Modul " Datenschutz pro Benutzer" .
  • Wenn Sie Registerkarten oder Akkordeonfelder hinzufügen möchten, fügen Sie mit dem Modul field_group neue Gruppen zu den Benutzerkontofeldern hinzu (URL: / admin / config / people / accounts / fields).
  • Wenn Sie unterschiedliche Felder für unterschiedliche Rollen benötigen , verwenden Sie das Modul profile2 .
Druvision
quelle