使用我创建注册时的用户填写文本框称为profile_real_name该形象模块。 如何在node.tpl.php访问这个变量?
我用dsm($user)
函数输出用户变量,它包含除profile_real_name数据一切
我也跑了dsm($vars)
在phptemplate_preprocess_user_profile
,我可以看到它载有没有包含我所需要的信息的对象称为帐户,但这个对象是不是在$用户变量可用。
非常感谢
使用我创建注册时的用户填写文本框称为profile_real_name该形象模块。 如何在node.tpl.php访问这个变量?
我用dsm($user)
函数输出用户变量,它包含除profile_real_name数据一切
我也跑了dsm($vars)
在phptemplate_preprocess_user_profile
,我可以看到它载有没有包含我所需要的信息的对象称为帐户,但这个对象是不是在$用户变量可用。
非常感谢
如果您要访问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
$account
就是你通常所说的不是全球用户避免意外覆写,这将导致用户获得身份登录该用户的全球用户的用户。
我只是做了一些检查,并为您解决问题最简单的方法是使用$帐户模板,而不是$用户。
使用$user
模板或做这样WmasterJ表明有故障。 您将发布错误的数据。 您会后谁的个人资料正在观看的用户的登录的用户没有数据的数据。 当您查看所有其他用户的个人资料比你自己的这个错误会发生。
预处理功能是不是很难做,在你的template.php文件在你的主题,你只需更换phptemplate
定义的代码与你的主题的名字。 在这种情况下,你不会需要改变预处理功能,因为你已经拥有你所需要的。
如果你想内,例如做这个用户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
希望能帮助到你!