我已将一些自定义字段添加到我的用户注册表单中。即名和姓。访问Drupal 7中节点上的用户字段
注册用户可以撰写文章,并且我已经为这些文章和节点 - article.tpl.php创建了内容类型。
我想要做的是从用户注册表单(名字,姓氏)下面的文章的标题呈现两个领域。我似乎无法访问这些数据。 我想要的用户提供的具体名称,而不是登录时提供的用户名,这可能是完全随机的。
任何想法如何在node.tpl上呈现这些字段?
干杯。
我已将一些自定义字段添加到我的用户注册表单中。即名和姓。访问Drupal 7中节点上的用户字段
注册用户可以撰写文章,并且我已经为这些文章和节点 - article.tpl.php创建了内容类型。
我想要做的是从用户注册表单(名字,姓氏)下面的文章的标题呈现两个领域。我似乎无法访问这些数据。 我想要的用户提供的具体名称,而不是登录时提供的用户名,这可能是完全随机的。
任何想法如何在node.tpl上呈现这些字段?
干杯。
当用户登录到Drupal时,该用户被加载,以便您可以在请求期间访问诸如“用户名”和“电子邮件”等字段。但是,您定义的自定义字段默认情况下未加载。
你可以做的是在主题中实现预处理功能。也就是说,创建/编辑文件“的template.php”在你的主题文件夹,并添加以下代码PICE:
function [mythemename]_preprocess_node(&$vars, $hook) {
global $user;
$account = user_load($user->uid);
$vars['firstname'] = $account['path']['to']['field'];
$vars['lastname'] = $account['path']['to']['field'];
}
现在发生的是,每次Drupal是要显示一个节点,它运行所有节点变量(如$ title和$ content)通过你的函数,以便你可以改变你需要的东西。但是,您也可以添加更多变量。所以,我们要做的是让用户接受请求(可能是匿名的,将'uid'设置为0)并加载该用户的帐户,该帐户包含您定义的所有字段。
请注意,我不记得这些字段是如何存储在您的帐户。你需要看看。
记住,你可以给他们的UID所以不是$account = user_load($user->uid);
加载任何用户的个人资料数据,你会做一个user_load($authors_uid)
更具体地讲,这里是我使用收集名字和姓氏用户字段一个通用的,多用途功能并返回它们分隔的空间。根据我的用户的要求,返回是大写,但您明白了。我仍然在将D6转换为D7,因此语言检查可能不是必需的。如果我发现它不是,我会编辑这个回复。
/**
* This will return the user's name (first last in caps)
* @uses user_load()
* @param int $user_id optional user id to look for
* @return string
*/
function get_user_name($user_id = 0) {
global $user;
$active_user = user_load((($user_id > 0)? $user_id : $user->uid));
$first_name = $active_user->field_firstname[(($active_user->language == '')? 'und' : $active_user->language)][0]['value'];
$last_name = $active_user->field_lastname[(($active_user->language == '')? 'und' : $active_user->language)][0]['value'];
return strtoupper($first_name . ' ' . $last_name);
}
他们很可能会在'$帐户 - > field_firstname [$帐户 - >语言] [0] [ '值'];' – Clive
这样的回答解释了如何访问*当前登录用户的*字段,但最初的问题是询问如何显示*作者的*字段。 –