Drupal 7,阻止所有个人资料页面。从“查看过的用户”打印字段'不是当前用户'

时间:2015-05-31 05:03:41

标签: drupal-7 profile

我试图在每个个人资料页面的块中打印几个字段。

该块需要显示正在查看的用户的字段,而不是登录用户。

$ account = user_load($ node-> uid); - 不起作用。 user-> uid也没有。 Globals用户将返回登录的用户信息。

不完全确定我应该如何将任何内容加载到块中。有什么想法吗?

1 个答案:

答案 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);

文档current_path()

这样您就可以获得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,您可以根据需要从网址获取用户名。

希望它有所帮助。