Panels/Ctools モジュールを使用する場合、アクセス ルールを使用して、特定のコンテンツを特定の役割だけに表示することができます。これはphpコードを必要としないので、phpでそれを行う方法を知っていても、それが最善の方法だと思います.
現在のユーザーのデータは、グローバル変数 $user として利用できます。
<?php
global $user;
if(in_array('manager', $user->roles)) {
print 'my stuff' // print the module you want to display. Usually module_invoke() or some function call.
} elseif(in_array('trainer', $user->roles)) {
print ''// stuff for users with the trainer role.
}
?>
また、コア機能によって、特定のユーザーに役割別にブロックを表示できます。ブロックの構成リンクに移動し、可視性を設定します。php を使用してブロックを出力する場合、チェックは実行されないことに注意してください。つまり、すべて PHP またはすべて UI です。
ブロックがビューの場合、ビュー UI でアクセスを設定できます。
このような場合にブロックを表示するには、 user_access()関数が個人的にお気に入りです。役割からほとんど独立してブロックを配置できます。ユーザーに権限がある場合は、それを表示します。特定のロールにこの権限があると想定する必要はありません。
また、モジュールでオーバーライドしない限り、ユーザーがページにアクセスできない場合、ブロックは表示されません。たとえば、アクセス制限なしで node/*/edit ページに node edit instruction ブロックを表示するのは安全です(送信指示を入力できるため、この場合にブロックを使用するのは非常にばかげています-例のためだけです)。ブロックを表示するには、ユーザーがそのページへのアクセスを許可されている必要があります。