ユーザープロファイルにフィールドを追加する方法は?


22

ユーザープロファイルにフィールドを追加したいのですが。ユーザーについて、データベースに保存されている彼に関するほとんどすべての情報を編集できるようにしたいと思います。私にはいくつかのアイデアがあります:多分フォームAPIを使用して行うことが可能です。


詳細ブログはこちら:goo.gl/zxBTBY
Suresh Kamrushi

回答:


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
UIで作成されたフィールドをエクスポートする方法を説明するこの非常に便利なページを見つけました。その後、このエクスポートをfield_create_fieldおよびfield_create_instanceで使用して、すべてをプログラムで行うことができます
ウイスキー

おかげで、これは非常に便利でした-同様に重みを自動で割り当てる方法を考えていますか?
慣性

あなたが追加することができます'weight' => '1',でウィジェットアレイに$instance私の答えでそれを追加しますI。
フライ

複雑な場合のために、最初に手動でフィールドを追加することが有用である/admin/config/people/accounts/fields使用次いで、フィールドインスペクタ/admin/config/development/field-inspector上記のようなコードで使用するためのフィールド及びフィールドインスタンス定義アレイをエクスポートします。
タニウス

DBの清潔を保つために、あなたはまた、フィールドを削除するhook_uninstallを実装することをお勧めします。function MYMODULE_uninstall() {field_delete_field('field_myField');}
-dxvargas

35

私は、ページが難しい見つけるために見つけましたが、時/管理/設定/人/アカウント/フィールドあなたがユーザーにフィールドを追加することができます。


2
ありがとうございますが、フォームAPIを使用してそれを行うことはできますか?もっと機能が必要です。
アレクセイ

あなたは何をしたいですか、それはフィールドでは不可能ですか?
-Attiks

Drupalテーブルに独自のフィールドを作成しましたusers。「フィールド」は、テーブルの外側に新しいフィールドを作成しますusers
アレクセイ

それがdrupalの仕組みです。なぜusersテーブル内にフィールドを保存したいのですか?
Attiks

私の意見では、より便利な方法です。私が使用して余分なフィールドを追加するために、ところでhook_form_alter(&$form, &$form_state, $form_id)
アレクセイ


4

Drupal 7では、このプロセスを使用して、さまざまなフィールドタイプ(イメージ、タグフィールドなど)を持つ新規または既存のフィールドをユーザープロファイルに追加します。

  1. フィールドUIモジュールを有効にします。
  2. 「に進みます:アカウント設定管理→設定→ピープル管理者メニューで、その後、」へ「のフィールドを管理する(2つ目のタブ)」を。

    (または、URLで直接パスを使用します:)/admin/config/people/accounts/fields

  3. フォームの下部にある[新しいフィールドを追加]または[既存のフィールドを追加]行に入力し、[保存]をクリックします。

1

どの種類のフィールドを追加しますか?

  • これがソーシャルネットワーキングサイトであり、プライバシー設定フィールドを追加する場合は、ユーザーごとプライバシーモジュールを使用します。
  • タブまたはアコーディオンフィールドを追加する場合は、field_groupモジュールを使用して、ユーザーアカウントフィールド(URL:/ admin / config / people / accounts / fields)に新しいグループを追加します。
  • また、ロールごとに異なるフィールドが必要な場合は、profile2モジュールを使用します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.