我试图在每个个人资料页面的块中打印几个字段。
该块需要显示正在查看的用户的字段,而不是登录用户。
$ account = user_load($ node-> uid); - 不起作用。 user-> uid也没有。 Globals用户将返回登录的用户信息。
不完全确定我应该如何将任何内容加载到块中。有什么想法吗?
答案 0 :(得分:0)
假设您正在查看具有此类网址路径的用户个人资料
drupal/user/USER_ID
您可以执行以下操作:
// Option 1
$user = explode('/', current_path());
$user_id = end($user);
// Option 2
// $path = explode('/', current_path());
// $user_id = $path[count($path)-1];
$account = user_load($user_id, true);
这样您就可以获得URL的最后一部分并将其传递给user_load
函数。我们将true
设置为第二个参数,因此它从数据库而不是缓存加载。
在不将URL分成几部分的情况下执行相同操作的另一种方法是使用arg()来获取参数
在这种情况下,代码看起来像这样
// Option 3
// drupal/user/USER_ID
// drupal = arg(0)
// user = arg(1)
// USER_ID = arg(2)
$account = user_load(arg(2), true);
在这两种情况下检查$user_id
是否为整数,不要让它至少传递一个整数,然后你可以检查user_load
的结果。
<强>更新强>
如果您在网址中使用了用户名,则可以使用user_load_by_name()
加载完整的user
对象
所以代码会稍微改变一下。试试这个:
$account = user_load_by_name(arg(2));
为简单起见,我使用了arg
,您可以根据需要从网址获取用户名。
希望它有所帮助。