質問

管理者ではないユーザーに対してユーザーログインブロックを表示したくない。

管理ユーザー(私の場合はsitadmin、uid:1)とログインしていないユーザー(uid:0)に対してのみ表示したい

ブロックの構成ページ(/ admin / build / block / configure / user / 0)のページ固有の設定で、<!> quot;次のPHPコードがTRUEを返すかどうかを表示する(PHPモード、専門家のみ)。<!> quot;次のコードが与えられます:

<?php
global $user;

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

?>

ただし、uid 3,4などのユーザーでも表示されます。キャッシュをクリアしようとしましたが、何の効果もありません。一方、単に置く場合

<?php return FALSE;?>

匿名ユーザーのユーザーブロックは表示されません。

注:ロール固有の可視性設定は、これに影響を与えないようです。

役に立ちましたか?

解決

また、$user配列では、uidは実際には文字列である可能性があります。したがって、===を指定すると、タイプの比較も試行されます。 $user->uid==="1"または$user->uid==1

を実行できます

編集:

また、ユーザーの役割を確認してみてください

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

私はあなたが望むロジックだと思います。ログインブロックの標準動作以外を定義しているかどうかわかりません。誰かがログインしていない場合にのみ表示されますか?それは通常とどう違いますか?

他のヒント

<?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!";
 ?> 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top