Wie implementiert man Zweiwege-Knotenreferenzen?


20

Das Knotenreferenzmodul (eine Komponente von CCK) bietet eine hervorragende Möglichkeit, eine Referenz von einem Knoten auf einen anderen zu erstellen. Was ist der beste Weg, um eine wechselseitige Beziehung zwischen den beiden aufzudecken? Beispiel unten:

In einem Ticket-Tracking-System mit zwei Tickets (Knoten A und B) könnten Sie beispielsweise eine Knotenreferenz aus Ticket A -> B erstellen und B als untergeordnetes Element markieren. Beim Anzeigen von Ticket A wäre es trivial, diese Informationen anzuzeigen. Ich möchte diese Beziehung jedoch auch anzeigen, wenn Ticket B angezeigt und Ticket A als übergeordnetes Element angezeigt wird.

Dieselbe Anforderung würde auch in nicht hierarchischen Situationen (Tickets C & D) mit einem Verweis von C -> D gelten. Die Beziehung sollte sowohl auf Ticket D als auch auf C offengelegt werden.

Antworten:




4

Für Drupal 6 ist wahrscheinlich das NodeReferrer-Modul die beste Option . Für Drupal 7 passt Relation , ist aber noch nicht fertig.


Ich benutze immer das NodeReferrer-Modul, für das, was es wert ist
electblake

1
Das Beziehungsmodul ist jetzt bereit, seit Juli '12
ted.strauss

Ja, Relation scheint eine ziemlich mächtige Option zu sein. Ansonsten ist CER auch eine gute Option für geringes Gewicht.
Shivams

4

Wenn Sie Drupal 7 / Views verwenden, können Sie eine umgekehrte Beziehung aufbauen, um eine Liste der Knoten zu erhalten, die auf einen bestimmten Knoten verweisen (oder möglicherweise Benutzer, die auf einen bestimmten Knoten verweisen). Lesen Sie den Patch in dieser Ausgabe: http://drupal.org/node/1043260

Meiner Meinung nach ist die Verwendung einer der anderen Lösungen zu teuer, es sei denn, Sie benötigen die explizite, vorgefertigte umgekehrte Beziehung, die in der Datenbank gespeichert ist (dies kann manchmal aus Leistungsgründen hilfreich sein). Sie können jederzeit eine Beziehung in Ihrer eigenen SQL-Abfrage nachschlagen, wenn Sie ...

[Bearbeiten: Seit dem ursprünglichen Schreiben dieses Beitrags wurde der Patch in der obigen Ausgabe den Verweisen für D7 zugewiesen und sollte die bevorzugte Methode für die Rückreferenzierung sein. .]

[Bearbeiten 2: Wenn Sie eine Entitätsreferenz verwenden, sieht es so aus, als ob die bevorzugte Lösung darin besteht, entsprechende Entitätsreferenzen zu verwenden , und es gibt auch die weniger verbreitete Synchronisierung von Entitätsreferenzfeldern .]


Es sieht so aus, als ob Referenzen zugunsten von Entity Reference veraltet sein werden. Nicht sicher, wo das diese Antwort lässt.
Jay

1
Referenzen bleiben bestehen, bis D7 ein entfernter Speicher ist. Wenn Sie jedoch ER verwenden, können Sie die entsprechenden Entitätsreferenzen verwenden , um das Gleiche zu tun, wie es von References standardmäßig bereitgestellt wird.
Geerlingguy

3

In Drupal 7 (das Sie angegeben haben) scheint es die Lösung zu sein, das Entity Reference Module in Kombination mit dem (Entity) Reference Field Synchronization-Modul zu verwenden, das die erforderliche Funktionalität hinzufügt, um die Beziehungen synchron zu halten.

Dasselbe kann mit dem Referenzmodul mit dem cnr-Modul erreicht werden - diese Lösung funktioniert (ich verwende sie derzeit auf einer Drupal 7-Site), wird jedoch zugunsten der ersten von mir angegebenen Lösung hinfällig / veraltet.

Alle anderen in den obigen Antworten genannten Lösungen sind nur für Drupal 6 relevant (mit Ausnahme von Relation, das das Potenzial hat, ein großartiges Modul zu werden, das jedoch im Moment nicht wirklich viel bewirkt und viele Probleme aufweist).


Stimmen Sie über diese Antwort ab, weil sie neu ist und Moshe ein hochrangiges Mitglied der Drupal-Community ist. In der akzeptierten Antwort ist CNR das einzige stabile D7-Modul, und das wird zugunsten von CER (das bis jetzt noch keine stabile Version hat) abgeschrieben.
Aendrew

1
Die Beziehung hatte im März noch nicht viele Probleme. Und Moshe Eshel drupal.org/user/168876 ! = Moshe Weitzman drupal.org/user/23 (schau dir das an ...) btw.

@chx Ich war selbst überrascht, mich als hochrangiges Mitglied zu sehen ... Ich versuche, einen besseren Beitrag zu leisten, aber ich glaube nicht, dass ich jemals auf das Niveau der ursprünglichen Moshe aufsteigen werde. In Bezug auf das Beziehungsmodul habe ich mich auf das Feedback von jemandem gestützt, der es weiß (ich werde keine Namen nennen) - ich hatte zu diesem Zeitpunkt nicht die Gelegenheit, es wirklich zu testen, und habe mich auf diese Meinung verlassen. Ich arbeite derzeit an einem D7-Projekt - ich glaube, ich habe das Bedürfnis danach, also werde ich hier meine aktualisierte Meinung abgeben, wenn ich fertig bin.
Moshe Eshel

2

Wenn Sie alternativ an einer benutzerdefinierten Implementierung arbeiten und eine direkte Möglichkeit zum Zurückverweisen wünschen, können Sie den referenzierten Knoten nodeapieinbinden, auf den saveVorgang warten und dann programmgesteuert aktualisieren.




0

Sie können das Inhaltsabhängigkeitsmodul verwenden .

Es bietet Ihnen umgekehrte Referenzen über die Registerkarte und unterstützt die folgenden Module: Knotenreferenz / Entitätsreferenz .


1
Sind Sie sich nicht sicher, wie Sie auf diese Weise gegenseitige Referenzen erstellen können?
mpdonadio
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.