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 に答える