2012-04-11 1 views
1

ユーザーが登録すると、ユーザープロファイルを使用して1つ以上の場所に関連付けられます。場所はカスタムコンテンツタイプです。私は、この場所への関係を定義するユーザープロファイルにカスタムフィールドを持っています。Drupal 7 Viewsの現在のユーザーを関連フィールドとして使用するにはどうすればよいですか?

私は、認証されていないユーザーを返し、昇格した役割のユーザーに限定されたユーザータイプのビューを持っています。私は、関連付けられた場所の値がビューを要求している現在のユーザーからの1つ以上の場所の値と一致する、認証されていないユーザーのみを返すフィルタを追加したいと思います。

関連する場所でフィルタリングできますが、その値を現在のユーザーの値に関連付けることはできません。コンテキストフィルタエリアだけでなく、関係領域に現在のユーザuidを追加できる場合、私はこれを行うことができるかもしれないように感じます。カスタムフィルタやリレーションシップに頼らずにこれを行うことはできますか?

EDIT:

ので、多分、これは明確に役立ついくつかの混乱があるかもしれません。

User -> Profile -> Locationはデータ連鎖です。現在ログインしているユーザーの場所の値と一致するユーザーのみを表示します。

User (any) -> Profile (Student) -> Location(s) == User (current) -> Profile (admin) -> Location(s)

私はこれを行うためのSQLを書くことができますが、これは一人でビューを使用して行うことが可能であるかどうかは明らかではない、または私は、カスタム関係やフィルタが必要な場合。

答えて

0

景色の中、これを行うための唯一の方法は以下の通りです:

  1. ユーザータイプ
  2. を使用しての表示がProfile2タイプ(私の場合は「学生」)との関係を追加してくださいは
  3. 追加型プロファイルのコンテキストフィルタ:学生:「PHPコード」
  4. :場所
  5. 型「のデフォルト値を提供」を選択このようにPHPを使用して

、あなたは現在をロードすることができ、あなたのコンテキストフィルター保存TRUE

  • に「複数の値を許可する」「もっと」の下

    global $user; 
    $profile = profile2_load_by_user($user->uid,'facilitator'); 
    if (!$profile) { return ''; } 
    if (!isset($profile->field_location['und'])) { return ''; } 
    $locations=''; 
    foreach ($profile->field_location['und'] as $location) { 
        $locations.=','.$location['nid']; 
    } 
    return substr($locations,1); 
    
  • 、設定します。

    は、次のコードを使用しますユーザーをフィルタリングする関連する値を取得します。これは他の多くの状況や状況において有用であるかもしれません。

  • 関連する問題