web-dev-qa-db-ja.com

ノード参照フィールドに基づいてビューを作成する

ギャラリーと画像の2つのコンテンツタイプがあります。画像にノード参照フィールドがあります(urlからのノード参照)。ギャラリーにはノード参照フィールドがありません。

ビューを使用することにより、ギャラリーページにすべての関連画像を表示できます(コンテキストフィルターとしてノード参照フィールド "field_pers_gallery"を使用しています)。

同時に、すべての画像のページに1つのギャラリーに関連するすべての画像を表示するビューを作成する必要があります(すべての画像のフィールドfield_pers_galleryの値は同じです)。関連画像を含むFlickr画像ページのようなビューを作成したいと思います。必要なビューを作成するための適切なコンテキストフィルターを選択できないため、問題があります。

次の例を試しましたが、何の助けにもなりませんでした。理由がわかりません。

誰かが私にアドバイスを手伝ってくれる?

2
moto

ここでは、ノード参照フィールド(field_pers_gallery)をコンテキストフィルターに追加するだけで、そのフィールドに同じ値を持つすべてのノード(画像)をページに表示できる簡単な解決策があると思います。

2
Ashish

ノード参照についてはわかりませんが、別の回答が参照フィールドに エンティティ参照 を提案しているので、その提案に便乗します。

エンティティ参照を設定すると、ビュー管理UIの関係ビルダー内に「逆参照」を追加できるようになります。これらは次のように読みます

"エンティティ参照:参照エンティティ"

参照エンティティとは対照的に)...

これらは次のようになります。

enter image description here

探しているリバースリファレンスを確立するには、少し慣れる必要があります。作業が終わったら、「ここを指すノード」や、場合によっては「[ギャラリー]に表示される:」などの意味のある管理ラベルを付けると役立ちます。

0
emjayess

エンティティ参照 モジュールを使用して、現在のノードが参照しているのと同じノードを参照する他のノードを表示するソリューションを次に示します。関係は必要ありません。次の手順に従ってください。

  1. 参照しようとしているコンテンツタイプではなく、リストを表示したいコンテンツタイプでビューをフィルタリングしていることを確認してください。
  2. エンティティ参照フィールドを使用して、コンテキストフィルターを追加します。
  3. エンティティー参照フィールドには、PHP¹でデフォルト値を指定することを選択します。
  4. 次のコードをフィールド名²に適合させ、コンテキストフィルターを保存します。

    $ node = menu_get_object();
    $ referenced_node = $ node-> field_YOUR_FIELD_NAME ['und'] [0] ['target_id'];
    戻り$ referenced_node;

  5. ビューを保存してチェックアウトします。

¹免責事項:PHPセキュリティ、パフォーマンス、およびバージョン管理の不足の懸念があるため、UIで使用しないでください結果として、このソリューションを実装するproper方法には、ブロックでレンダリングするときに引数をビューに渡すブロックを作成する独自の単純なモジュールを記述する必要があります。人々がこの警告を無視するか、それをモジュールの記述に使用するかにかかわらず、うまくいけばそれが役に立ったので、これはまだ含まれています。

²フィールド名がわかりませんか? Devel モジュールをインストールして有効にし、ノードにアクセスします。 「開発」タブをクリックしてリストをナビゲートし、目的のエンティティ参照フィールドを見つけます。

0
davidneedham