web-dev-qa-db-ja.com

コンテキストフィルターと関係を使用して関連記事を表示するにはどうすればよいですか?

だから、私はこれを一日中理解しようと努めてきました。基本的にプレビューアで一時的に機能していましたが、現在はまったく機能していないようです。

使用例:コンテンツタイプ「Article」で公開された各ノードには、含まれるタグの分類フィールドが付属しています。私がやろうとしていることは、他の記事にリンクする一連のサムネイルを使って、記事の下に表示されるブロックを作成することです。これらの記事は、各記事で使用されているタグに基づいて関連付けられています。

したがって、問題は次のとおりです。

  1. コンテキストフィルターとビューを使用してこれを設定し、ビュー自体が記事で分類用語の参照として使用されるfield_tagsを自動的に表示し、各記事のタグに基づいて出力を自動的に表示するようにするには、どのような方法が適切ですか?

関係フィルターを介してコンテンツタイプ:記事に用語が含まれることを認識できるように、コンテキストフィルターを設定しようとしましたが、率直に言って、これを達成するために何をする必要があるかについて、ちょっと困惑しています。

8
John Riley

Drupal 7の1つのプロジェクトに同じものを実装して、同じカタログの製品を表示しました。

記事コンテンツのビューを作成し、タグのコンテキストフィルターを作成できます。そのタグの記事がすべて表示されます。

以下の手順に従ってください:

  • タグのコンテキストフィルターを追加します。 [デフォルト値を提供]ラジオボタンをオンにしました。
  • タイプドロップダウンで[分類用語のURLからのID]を選択します。
  • 「ノードページからデフォルトフィルターをロードする」チェックボックスをチェックしました。
  • 「語彙による用語の制限」チェックボックスをオンにしました。
  • [語彙]セクションで、ビューにフィルターを追加する語彙(タグ)のチェックボックスをオンにしました。
  • [詳細]セクションで、[複数の値を許可する]チェックボックスをオンにしたので、複数のタグを使用して用語をフィルタリングできます。

以下の画像を参照してください。

また、ノードIDのコンテキストフィルターを追加し、以下の手順に従う必要があります。これにより、現在のノードページが関連ビューセクションに表示されなくなります。

  • コンテンツを追加:ビューのNidコンテキストフィルター。
  • [デフォルト値を提供する]ラジオボタンをオンにし、タイプドロップダウンで[URLからのコンテンツID]を選択します。
  • コンテキストフィルターの[詳細]セクションで、[除外]チェックボックスをオンにしました。

display related product in views of same category

1

Similar by Terms を使用してみましたか?

(編集)ビュー分類法の引数の問題は、分類法がブードゥー分類法モジュールコードではなくフィールドに含まれるようになったことです。このため、Drupal 6の分類APIの一部は、Drupal 7.では使用できません。

Views Arguments from Context でContextモジュールを使用します。私は パッチ を移植しましたDrupal 7.これにより、ビューのコンテキストフィルターの下に別のオプションが表示され、コンテキストまたは読み込まれたオブジェクトとエンティティに基づいて引数を取得します時間。

これは特に関数を使用しています:

function taxonomy_node_get_terms($node, $key = 'tid') {
static $terms;
  if (!isset($terms[$node->vid][$key])) {
    $query = db_select('taxonomy_index', 'r');
    $t_alias = $query->join('taxonomy_term_data', 't', 'r.tid = t.tid');
    $v_alias = $query->join('taxonomy_vocabulary', 'v', 't.vid = v.vid');
    $query->fields( $t_alias );
    $query->condition("r.nid", $node->nid);
    $result = $query->execute();
    $terms[$node->vid][$key] = array();
    foreach ($result as $term) {
      $terms[$node->vid][$key][$term->$key] = $term;
      }
  }
return $terms[$node->vid][$key];
}

Drupalコアから削除されるべきではありません。現在のノードオブジェクトに渡した場合に使用する分類用語が見つかります。

0
Adam S