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


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.