web-dev-qa-db-ja.com

現在のノードが参照する同じノードを参照する他のノードを表示するビューを構築するにはどうすればよいですか?

私が家と近所を持っているとしましょう(家はノード参照フィールドを介して自分がいる近所を参照します)。家の詳細ページで、同じ近所の他の家を表示したいと思います。

十分に単純に思え、私はこれを見つけました: ノード参照フィールドにビューを作成する しかし、同じ近所を参照する他の家を見つける必要があるため、私が行う必要があることはまったくありません現在の家は(現在の家を参照する家ではなく)持っています。

私もこれを見つけました: ノード参照ビュー:同じノードを参照する他のノードを取得 ですが、2つのコンテンツタイプ(家と近隣)しか使用していません。何か案は?このことの関係や議論を通して考えようとした後、私の脳は疲れています:)

2
Ben McCloskey

あなたは関係でこれを行うことができるはずです。近隣ノード参照フィールドを関係として追加します。引数としてNIDを追加し、関係として作成した近傍関係をそのNID引数に適用します。これは、ノード参照フィールドのNIDを引数として使用するようにビューに指示します。

2
user2014

最も簡単な方法は、Viewfieldモジュールを使用することです。

  1. まず TokenViewfield をインストールします
  2. 2つの引数(コンテキストフィルター)を使用してホームコンテンツタイプの新しいビューを追加:
    • 地域への参照フィールド
    • Content:NidとURLからのデフォルトのコンテンツID。"Exclude"をチェックします。オプションで、表示されているノードを除外します。
      enter image description here
  3. ホームコンテンツタイプに移動し、ビュータイプの新しいフィールドを追加します。
  4. トークンのヘルプでフィールドを構成します。 enter image description here
    • 注:これが複数の参照でどのように機能するかはわかりませんが、単一の参照値でうまく機能します。とにかく、PHPビューでコードを検証することで解決できます。

Update:このタスクでは関係がより良い選択ですが、私は見つけました私のDrupalに奇妙なバグがあるため、Viewfieldを使用する方法を提案しました。

2
kalabro

あなたがしていることは一般的に逆ノード参照と呼ばれています。現在のノードを参照するノード参照フィールドを持つすべてのノードを検索するためにクエリを実行しています。これを行う方法は次のとおりです。

  1. ノード参照フィールドを引数としてビューに追加します。
  2. 引数処理コードとして$args[0] = arg(1);を追加します。

引数が適切に評価されるように、ビューのブロック表示を作成することに注意することが重要です。

1
user2311

うまくいけば、これは誰かを助けるでしょう...

https://drupal.org/node/131547 から取得現在のノードをリストビューから除外します。

ビュー3

  1. 「詳細」タブをクリックします。
  2. 「コンテキストフィルター」の下の「追加」をクリックします。
  3. Content:nidを選択します。
  4. 「フィルター変数が使用できない場合」で、「デフォルト値を提供」を選択します。
  5. ドロップダウンメニューから[URLからのコンテンツID]を選択します。
  6. ウィンドウの一番下までスクロールして、[詳細]リンクをクリックします。
  7. 「除外」をクリックします
0
Debbie Delargy