web-dev-qa-db-ja.com

ビューのブロック:ユーザーが選択したタグをコンテキストフィルターとして使用して、プロファイルページ(/ user)にコンテンツブロックを表示します

ユーザーのプロフィールページに、指定されたタグに基づいてコンテンツを引数/コンテキストフィルターとしてフィルターするブロックがあります。私のサイトのユーザーは、自分のプロファイルにタグを追加できます(フリータグ分類から自動入力フィールドが取得されます)。これらのタグは、「フォロー」したいトピックです。このブロックに、個人が選択したタグでタグ付けされたコンテンツを表示したいと思います。前もって感謝します!

2
craigritchie

これに対する解決策を見つけました。コンテンツビューの代わりにユーザービューを使用するのが私の方法でした。次に、teaxonomy用語に適切な関係を追加します。

私はこれらの指示を使用しました:

  • ユーザービューを作成します。
  • ユーザーにコンテキストフィルターを追加します:uid。フィルター値が存在しない場合は、現在ログインしているユーザーを使用してデフォルト値を作成します。 (これにより、ビューに1つのユーザーオブジェクト(ログインユーザー)が表示されます。)
  • ユーザーアカウントの関連する分類基準参照フィールドを使用して、関係を追加します。これにより、ログインしたユーザーの「興味」の用語に関する情報が得られます。
  • 「用語:用語でマークされたノード」(またはそのようなもの)と呼ばれる別の関係を追加します。これにより、ログインしているユーザーのインタレスト用語でマークされたすべてのノードに関する情報が表示されます。

この記事から: https://drupal.org/node/1111722

それが役に立てば幸い!

1
swayhacks

hook_user_load を使用する必要があります

タグの配列を使用してユーザー変数をロードします。

次に、ブロック内のビューを印刷するために view_embed_view が必要です。

print views_embed_view('my_contents', $display_id = 'page', HERE THE CONTEXTUAL FILTERS )
0
Tyler Durden

これまでに行ったことはありませんが、最初に次のことを試してみます。

  1. ビューを定義します。ビューのタイプがデフォルトの「ノード」ではなく「ユーザー」であることを確認してください。
  2. フィールドを定義します。 Drupal 7を使用している場合は、 コンテンツタイプとフィールドの操作 :の記事を読んでください。

    ユーザーアカウントのフィールドは、[アカウント設定]ページの[フィールドの管理]タブでサイト全体で定義されます。ユーザーアカウントのフィールドを定義すると、各ユーザーアカウントにそのフィールドが追加されます。たとえば、ユーザーが伝記を含めることができるように長いテキストフィールドを追加できます。

  3. これらのフィールドを定義したら、それらをビューに追加し、ビュー内にブロック表示を作成します。ビューを保存します。
  4. / userページに表示される任意のリージョンにViewブロックを追加します。
0
amateur barista