0

そのため、そのユーザーの他のユーザー ロールに基づいて、特定のリンクをユーザー ロールのウェルカム ページ (ルールによってそこに向けられる) に表示させたいと考えています。このようなリンクは、ユーザーごとに複数存在する場合があります。

例えば:

ユーザー Bob が、管理者、植物学トレーナー、およびライオン調教師のユーザー ロールを持っているとします。彼のマネージャーのユーザー ロールは、彼をマネージャーのウェルカム ページに誘導します (既に完了しています)。ただし、彼のユーザー ロールに基づいて、マネージャーのウェルカム ページには、植物学のトレーニング ページとライオンの調教ページの両方へのリンクも含まれます。

どうすればこれを行うことができますか?これにも rules モジュールを使用しますか?

これは Drupal 6 にあります

4

1 に答える 1

0

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 ブロックを表示するのは安全です(送信指示を入力できるため、この場合にブロックを使用するのは非常にばかげています-例のためだけです)。ブロックを表示するには、ユーザーがそのページへのアクセスを許可されている必要があります。

于 2012-07-20T05:37:31.460 に答える