双方向のノード参照を実装する方法は?


20

ノード参照モジュール(CCKのコンポーネント)は、あるノードから別のノードへの参照を作成する優れた方法を提供します。2つの間の双方向の関係を公開する最良の方法は何ですか?以下の例:

たとえば、2つのチケット(ノード)AとBを持つチケット追跡システムでは、チケットA-> Bからノード参照を作成し、Bを子としてマークできます。チケットAを表示する場合、この情報を表示するのは簡単です。ただし、チケットBを表示するときにこの関係を表示し、チケットAを親として表示したいと思います。

この同じ要件は、C-> Dからの参照を持つ非階層的な状況(チケットCおよびD)にも適用され、関係はチケットDとCで公開される必要があります。

回答:


25

利用可能な多くのモジュールがあり、あなたの走行距離は異なる場合があります:

BackReference(Drupal 6のみ)

NodeReferrer(Drupal 7ベータリリース)

ノード関係(Drupal 6のみ)

対応するノード参照(Drupal 7安定版リリース)

対応するエンティティ参照(Drupal 7開発リリース)

コンテンツの依存関係(Drupal 7安定版リリース)


対応するノード参照は私にとって完璧に機能します。CERが安定したら、それに切り替えます。


4

Drupal 6の場合、おそらく最適なオプションはNodeReferrerモジュールです。Drupal 7の場合、関係は法案に適合しますが、まだ準備ができていません。


私は常にNodeReferrerモジュールを使用していますが、その価値は何
ですか-electblake


はい、リレーションは非常に強力なオプションのようです。それ以外の場合、CERも優れた軽量オプションです。
シヴァム

4

Drupal 7 / Viewsを使用している場合、「逆」関係を構築して、特定のノード(または、特定のノードを参照するユーザー)を参照するノードのリストを取得できます。この問題のパッチを確認してください:http : //drupal.org/node/1043260

私の意見では、データベースに保存された明示的な事前構築された逆関係が必要でない限り(これはパフォーマンス上の理由で役立つ場合があります)、他のソリューションの1つを使用するのは過剰です。必要な場合は、いつでも独自のSQLクエリで関係を検索できます。

編集。]

[編集2:エンティティ参照を使用している場合、推奨される解決策は、対応するエンティティ参照を使用することであるように見えます。また、あまり使用されていないエンティティ参照フィールド同期もあります。


Referencesは廃止され、Entity Referenceが採用されるようです。それがこの答えを残す場所がわからない。
ジェイ

1
参照はD7が遠い記憶になるまで残ります...しかし、ERを使用している場合は、対応するエンティティ参照を使用して、参照が提供するのと同じことをそのまま実行できます。
geerlingguy

3

Drupal 7(あなたが示されている)、解決策を使用することであると思われるエンティティ参照モジュールと組み合わせて(エンティティ)参照フィールド同期モジュール同期化の関係を維持するために必要な機能を追加します。

同じことがで達成することができる参考文献モジュールCNRモジュール -このソリューションの作品(私は現在、1つのDrupal 7サイト上でそれを使用しています)が、時代遅れの/私が与えた第1の溶液の非推奨となってきています。

上記の回答で言及された他のすべてのソリューションは、Drupal 6にのみ関連します(優れたモジュールになる可能性のあるリレーションを除きますが、現在のところ、あまり多くのことを行わず、多くの問題があります)。


この回答は最近のものであり、MosheはDrupalコミュニティの上級メンバーであるため、この回答に賛成です。受け入れられた答えでは、唯一の安定したD7モジュールはCNRであり、CER(現時点では安定したリリースはありません)を支持して減価償却されています。
1

1
関係は3月にさかのぼって多くの問題を抱えていません。そして、Moshe Eshel drupal.org/user/168876!= Moshe Weitzman drupal.org/user/23(そのuidを見て...)ところで。

@chx上級メンバーとしてフィーチャーされているのを見て驚いた...私はより良い貢献者になろうとしているが、オリジナルのMosheのレベルにまで上がるとは思わない。リレーションモジュールについては、知識のある人からのフィードバックに基づいています(名前は付けません)-当時は実際にテストする機会がなく、その意見に依存していました。私は現在D7プロジェクトに取り組んでいます-私はそれが必要だと思うので、終わったらここに私の最新の意見を述べます。
モシェエシェル

2

または、カスタム実装に取り​​組んでいて、後方参照の直接的な方法が必要な場合は、にフックしnodeapisave操作をリッスンし、参照ノードをプログラムで更新することができます。




0

コンテンツ依存モジュールを使用できます。

タブを介して逆参照を提供し、次のモジュールをサポートします:ノード参照/エンティティ参照


1
相互参照を作成するためにこれをどのように使用できるか本当にわかりませんか?
mpdonadio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.