访问其他用户配置文件字段


9

我使用以下命令在用户配置文件中添加了十几个新字段(在Drupal 7中):

配置->人员->帐户设置->管理字段(admin / config / people /帐户/字段)

如何访问这些值?它们似乎不属于$ user

尝试过,但没有成功:

global $user;
var_dump($user);

Answers:


13

我想我找到了。看来还有另外一个步骤。

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

现在,我可以通过$ user_full访问我的自定义配置文件字段



0

我将在/programming/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再次调用该对象。


0

您可以使用Drupal 7内核加载用户数据(包括自定义字段)

$user = entity_load($entity_type = "user", $ids = Array($user->uid), $conditions = array(), $reset = FALSE);

Drupal 7> API>实体加载中有更多详细信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.