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.


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);
  }
}

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.


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


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".

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 .
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.