访问用户配置文件变量(Accessing user profile variables)

2019-10-19 18:04发布

使用我创建注册时的用户填写文本框称为profile_real_name该形象模块。 如何在node.tpl.php访问这个变量?

我用dsm($user)函数输出用户变量,它包含除profile_real_name数据一切

我也跑了dsm($vars)phptemplate_preprocess_user_profile ,我可以看到它载有没有包含我所需要的信息的对象称为帐户,但这个对象是不是在$用户变量可用。

非常感谢

Answer 1:

如果您要访问node.tpl.php作者的个人资料信息,然后你想用一个phptemplate_preprocess_node函数,而不是一个user_profile工作。 节点预处理功能没有默认为$帐户对象的,所以你必须将其加载到:

这正好在你的template.php文件中phptemplate_preprocess_node功能:

if ($vars['uid']) {
  $vars['account'] = user_load(array('uid' => $vars['uid']));
}

然后,你就可以访问你的node.tpl.php作者的配置文件值。 你问到具体的值将是:

print($account->profile_real_name);

然而,这听起来像你可能希望节点作者的名字出现作为profile_real_name值,而不是他们的帐户名?

如果是这样,一个更有效的办法是重写theme_username功能。

这不是你直接问,所以我不会去到这里的东西,但这个职位上的drupal.org论坛将是开始为Drupal 5或6的好地方: http://drupal.org/node/122303 #评论-204277



Answer 2:

$account就是你通常所说的不是全球用户避免意外覆写,这将导致用户获得身份登录该用户的全球用户的用户。

我只是做了一些检查,并为您解决问题最简单的方法是使用$帐户模板,而不是$用户。

使用$user模板或做这样WmasterJ表明有故障。 您将发布错误的数据。 您会后谁的个人资料正在观看的用户的登录的用户没有数据的数据。 当您查看所有其他用户的个人资料比你自己的这个错误会发生。

预处理功能是不是很难做,在你的template.php文件在你的主题,你只需更换phptemplate定义的代码与你的主题的名字。 在这种情况下,你不会需要改变预处理功能,因为你已经拥有你所需要的。



Answer 3:

如果你想内,例如做这个用户profile.tpl.php所有你需要的信息中存在$account阵列。

否则,您可以通过加载(的人是,或者如果可以查询数据库并获取当前登录基于它的ID的用户对象访问用户数据uid这种方式)。

首先获得uid当前用户的:

$uid = $user->uid;

然后加载用户对象:

// Create user objets based on uid ()
$user_obj = user_load($user->uid);

然后加载用户配置文件变量:

// Load profile
profile_load_profile($user_obj);

现在$user_obj变量(其通过引用以传递profile_load_profile )具有与可以像这样被访问的简档信息的对象:

$user_obj->profile_real_name

希望能帮助到你!



文章来源: Accessing user profile variables