0

我不希望为非管理员用户显示用户登录块。

我只希望它显示给管理员用户(在我的例子中是sitadmin,uid:1)和未登录的用户(uid:0)

在块的配置页面 (/admin/build/block/configure/user/0) 中,在页面特定设置下,我选择了“显示以下 PHP 代码是否返回 TRUE(PHP 模式,仅限专家)”。并给出以下代码:

<?php
global $user;

if($user->uid===1 or $user->uid===0)
  return TRUE;
else
  return FALSE;

?>

但是,即使对于 uid 3,4 等的用户,它仍然可见。我尝试清除缓存,但无济于事。另一方面,如果我简单地说

<?php return FALSE;?>

匿名用户不显示用户块。

注意:角色特定的可见性设置似乎对此没有影响。

4

2 回答 2

2

也可能是在$user数组中,uid 实际上是一个字符串。因此,当您给它时,===它也会尝试比较类型。你可以做$user->uid==="1"$user->uid==1

编辑:

你也可以尝试检查他们的用户角色

!in_array('authenticated user', array_values($user->roles)).

我认为这就是你想要的逻辑。我不确定您是否为登录块定义了除标准行为之外的任何其他内容……它仅在有人未登录时才显示?这和正常有什么区别?

于 2009-03-17T12:04:50.290 回答
0
<?php   
global $user;

if($user->uid==1 || $user->uid==0)
  return TRUE;
else
  return FALSE;
 ?>    

会成功的。

如果您不确定,请始终执行简单的回显并显示该块。例如:

<?php   
global $user;

if($user->uid==1)
  echo "Hello world!";
 ?> 
于 2009-03-17T06:57:39.560 回答