it-swarm-eu.dev

Jak implementovat obousměrné uzlové odkazy?

Modul odkazování na uzly (součást CCK) poskytuje skvělý způsob, jak vytvořit odkaz na jeden uzel z jiného. Jaký je nejlepší způsob, jak odhalit obousměrný vztah mezi nimi? Příklad níže:

Například v systému sledování vstupenek se dvěma lístky (uzly) A a B můžete vytvořit odkaz na uzel z lístku A -> B a označit B jako dítě. Při prohlížení lístku A by bylo triviální zobrazovat tyto informace. Chtěl bych však také zobrazit tento vztah při prohlížení lístku B a ukázat lístek A jako jeho rodič.

Stejný požadavek by platil také v nehierarchických situacích (lístky C & D) s odkazem na C -> D, vztah by měl být vystaven jak na lístku D, tak na C.

20
markdorison

K dispozici je mnoho modulů, vaše míle se mohou lišit:

BackReference (pouze Drupal 6)

NodeReferrer (verze Drupal 7 beta)

vztahy uzl (pouze Drupal 6)

Odpovídající odkazy na uzly (Drupal 7 stabilní verze)

Odpovídající odkazy na entity (Vydání Drupal 7 dev)

Závislost na obsah (stabilní vydání Drupalu 7)

25
tim.plunkett

Entity Reference Module nyní pracuje s Corresponding Entity Reference . To je ideální pro všechny uzly a entity bez uzlů.

7
tmsimont

Pro Drupal 6) je nejlepší volbou pravděpodobně modul NodeReferrer . Pro Drupal 7, relace se hodí k účtu, ale ještě není připraven.

4
Pierre Buyle

Pokud používáte Drupal 7/Pohledy), můžete si vytvořit 'obrácený' vztah a získat seznam uzlů, které odkazují na daný uzel (nebo možná uživatelé, kteří odkazují na daný uzel uzel). Podívejte se na opravu v tomto vydání: http://drupal.org/node/104326

Podle mého názoru, pokud nepotřebujete výslovný, předem vytvořený zpětný vztah uložený v databázi (to může být někdy užitečné z důvodů výkonu), je použití jednoho z dalších řešení nadměrné. Vždy si můžete vyhledat vztah ve svém vlastním dotazu SQL, pokud potřebujete ...

[Upravit: Od doby, kdy byl tento příspěvek původně napsán, byla záplata ve výše uvedeném problému věnována Reference pro D7 a měla by být upřednostňovaným způsobem zpětné konference (funguje skvěle, když jednoduše potřebujete seznamy uzlů nebo uživatelů odkazujících na určitý jiný uzel nebo uživatele) .]

[Úpravy 2: Pokud používáte Entity Reference, vypadá to, že upřednostňovaným řešením je použití Corresponding Entity Reference , a je zde také méně rozšířená Synchronizace referenčních polí entity .]

4
geerlingguy

V Drupalu 7 (což jste uvedli) se zdá, že řešením je použít Entity Reference Module v kombinaci s - (Entity) modul synchronizace referenčního pole , který přidává nezbytnou funkčnost k udržení synchronizace vztahů.

Totéž lze dosáhnout pomocí Reference Module with cnr module - toto řešení funguje (používám jej na jednom Drupal 7 webu v současné době) ), ale stává se zastaralým/zastaralým ve prospěch prvního řešení, které jsem dal.

Všechna další řešení uvedená ve výše uvedených odpovědích jsou relevantní pouze pro Drupal 6 (s výjimkou Vztah , který má potenciál stát se skvělý modul, ale právě teď toho moc nedělá a má spoustu problémů).

3
Moshe Eshel

Alternativně, pokud pracujete na vlastní implementaci a chcete přímý způsob zpětného odkazování zpět, můžete se připojit k nodeapi, poslouchat operaci save a pak programově aktualizovat odkazovaný uzel.

2
enikola

Můžete také vyzkoušet modul Reverse Node Reference .

1
user580

Jednoduše použijte pravidla a toto pravidlo http://drupal.org/node/183624

0
giorgio79

Můžete použít modul Content Dependency .

Poskytuje zpětné odkazy prostřednictvím karty a podporuje následující moduly: odkaz na uzel/entita.

0
drupal