Як додати додаткові поля до профілю користувача?


22

Я хотів би додати додаткові поля до профілю користувача. Я хотів би, щоб користувач міг редагувати майже всю інформацію, яку я зберігаю в базі даних про нього. У мене є кілька ідей: можливо, це можна зробити за допомогою форми api.


Докладний блог знаходиться тут: goo.gl/zxBTBY
Суреш Камруші

Відповіді:


23

Спосіб додавання полів користувача за кодом, щоб ви могли помістити це у свій модуль.

Я знайшов це: field_create_field з у коментарях спосіб створити поле для вашого користувача після ввімкнення вашого модуля:

/**
 * 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
Я знайшов цю дуже корисну сторінку, яка пояснює, як експортувати поля, створені за допомогою інтерфейсу користувача. Потім цей експорт можна використовувати за допомогою field_create_field та field_create_instance, щоб зробити все програмно
Віскі

Дякую, це було дуже корисно - маєте ідею, як автоматично призначити вагу?
inertialmedia

ви можете додати 'weight' => '1',до масиву віджетів у розділі $instanceЯ додам його у своїй відповіді.
ЛЕТ

У складних випадках корисно спочатку додати поле вручну /admin/config/people/accounts/fields, а потім скористатися полем Inspector on, /admin/config/development/field-inspectorщоб експортувати масиви визначення поля та екземпляра поля для використання у коді, як описано вище.
tanius

Щоб зберегти БД в чистоті, можливо, ви також хочете впровадити гак_uninstall для видалення поля. function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas

35

Сторінку мені важко було знайти, але за адресою / admin / config / люди / акаунти / поля ви можете додавати поля для користувачів.


2
Дякую, але чи можу це зробити за допомогою форми api? Мені потрібно більше функціоналу.
Олексій

що ти хочеш зробити, що неможливо з полями?
Attiks

Я вже створив власні поля в таблиці Drupal users. "Поля" створюють нові поля поза таблицею users.
Олексій

так працює drupal, чому ви хочете зберігати поля всередині таблиці користувачів?
Attiks

На мою думку, це зручніший спосіб зробити це. До речі, для того, щоб додати додаткові поля, які я використовуюhook_form_alter(&$form, &$form_state, $form_id)
Олексій


4

У Drupal 7 використовуйте цей процес, щоб додати нове або існуюче поле з різними типами поля (наприклад, зображення, поле тегів тощо) до профілю користувача:

  1. Увімкніть модуль інтерфейсу поля .
  2. Перейдіть до " Адміністратора → Конфігурація → Люди: Налаштування облікового запису " в меню адміністратора, а потім - " Керування полями " (друга вкладка).

    (Крім того, використовуйте прямий шлях у URL:) /admin/config/people/accounts/fields.

  3. Заповніть рядок "Додати нове поле" або "Додати існуюче поле" внизу форми та натисніть "Зберегти".

1

Які поля ви хочете додати?

  • Якщо це веб-сайт у соціальних мережах та ви додаєте поля налаштувань конфіденційності, використовуйте модуль конфіденційності на користувача .
  • Якщо ви хочете додати вкладки або поля акордеона, використовуйте модуль field_group, щоб додати нові групи в поля облікових записів користувачів (URL: / admin / config / people / account / polja).
  • А якщо вам потрібні різні поля для різних ролей, використовуйте модуль profile2 .
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.