質問
管理者ではないユーザーに対してユーザーログインブロックを表示したくない。
管理ユーザー(私の場合は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!";
?>
所属していません StackOverflow