追加のユーザープロファイルフィールドへのアクセス


9

以下を使用して、ダースほどの新しいフィールド(Drupal 7)をユーザープロファイルに追加しました。

設定->ユーザー->アカウント設定->フィールドの管理(admin / config / people / accounts / fields)

これらの値にアクセスするにはどうすればよいですか?$ userの一部ではないようです

試したが、成功しなかった:

global $user;
var_dump($user);

回答:


13

見つけたと思います。思われる追加のステップが1つあります。

global $user;
$user_full = user_load($user->uid); // user_load(uid) returns the complete array
var_dump($user_full);

$ user_fullからカスタムプロファイルフィールドにアクセスできるようになりました


1

パネルはこれを関係と非常に簡単に行うことができます。


0

これは別の解決策だと思うので、https: //stackoverflow.com/questions/8124089/get-value-of-custom-user-field-in-drupal-7-templateから私の回答を再投稿しています。この例は、デフォルトのユーザー名の代わりにfield_real_nameのようなものを使用する方法を示しています。

前処理関数を使用している場合、グローバル$userオブジェクトを取得する必要はありません。$ variables配列の$variables['name']フィールドを、私が呼び出したカスタムフィールドのフィールドに変更できますfield_real_name$variables配列にアクセスできるので、これでユーザー情報を取得できます-uidに関連付けられた情報をロードします(template_preprocess_usernameを参照):

function mythemename_preprocess_username(&$variables) {
    $account = user_load($variables['account']->uid);
    ...more code will go here in a moment
}

あなたdpm($account)(またはkpr($account)develを使用していない場合)は、グローバル$userオブジェクトを使用せずにすべてのユーザー情報にアクセスできることがわかります。

そして、あなたはの出力を変更することができます$variables['name']あなたのことfield_real_nameとして、次のとおりです。

function mythemename_preprocess_username(&$variables) {

  // Load user information with user fields
  $account = user_load($variables['account']->uid);

  // See if user has real_name set, if so use that as the name instead
  $real_name = $account->field_real_name[LANGUAGE_NONE][0]['safe_value'];
  if (isset($real_name)) {
    $variables['name'] = $real_name;
  }
}

0

奇妙な理由で、Drupal 7のプロフィールフィールドは、以前のものとは異なります。ただし、ユーザープロファイルオブジェクトは、追加のプロファイルフィールドに配列要素としてアクセスできるようにします。例えば:

$profile->field_fieldname['und'][0]['value']

は使用できませんが、次のように書き換えると機能します。

$user_profile['field_fieldname']['#object']->field_fieldname['und'][0]['value'];

だから私は単に私のコードで次のことをしました:

/*
 * Create simplified variables as shortcuts for all fields.
 * Use these variables for read access lateron.
 */
$firstname = $user_profile['field_first_name']['#object']
  ->field_first_name['und'][0]['value'];

$middlename = $user_profile['field_middle_name']['#object']
  ->field_middle_name['und'][0]['value'];

$surname = $user_profile['field_surname']['#object']
  ->field_surname['und'][0]['value'];

$image = $user_profile['field_user_picture']['#object']
  ->field_user_picture['und'][0]['uri'];

$userオブジェクトをもう一度呼び出すのではなく、物事を機能させるための別の方法。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.