it-swarm.it

Come implementare i riferimenti nodo bidirezionali?

Il modulo di riferimento nodo (un componente di CCK) fornisce un ottimo modo per creare un riferimento da un nodo all'altro. Qual è il modo migliore per esporre una relazione a due vie tra i due? Esempio sotto:

Ad esempio, in un sistema di tracciamento dei ticket con due ticket (nodi) A e B, è possibile creare un riferimento nodo dal ticket A -> B e contrassegnare B come figlio. Quando si visualizza il biglietto A, sarebbe banale visualizzare queste informazioni. Tuttavia, vorrei anche visualizzare questa relazione durante la visualizzazione del biglietto B e mostrare il biglietto A come genitore.

Lo stesso requisito si applicherebbe anche in situazioni non gerarchiche (ticket C e D) con un riferimento da C -> D, la relazione dovrebbe essere esposta sul ticket D e su C.

20
markdorison

Sono disponibili molti moduli, il tuo chilometraggio può variare:

BackReference (solo Drupal 6)

NodeReferrer (Drupal 7 beta release)

Node Relationships (solo Drupal 6)

Riferimenti nodo corrispondenti (Rilascio stabile Drupal 7)

Riferimenti entità corrispondenti (Rilascio sviluppatore Drupal 7)

Content Dependency (Drupal 7 versione stabile)

25
tim.plunkett

Modulo di riferimento entità ora funziona con Riferimenti entità corrispondenti . Questo è l'ideale per tutti i nodi e le entità non nodi.

7
tmsimont

Per Drupal 6, l'opzione migliore è probabilmente modulo NodeReferrer . Per Drupal 7, relazione si adatta al conto ma non è ancora pronto.

4
Pierre Buyle

Se si utilizza Drupal 7/Views, è possibile creare una relazione "inversa" per ottenere un elenco di nodi che si riferiscono a un determinato nodo (o, forse, utenti che si riferiscono a un determinato nodo). Controlla la patch in questo numero: http://drupal.org/node/104326

A mio avviso, a meno che non sia necessaria la relazione inversa esplicita e preconfigurata memorizzata nel database (ciò può talvolta essere utile per motivi di prestazioni), l'utilizzo di una delle altre soluzioni è eccessivo. Puoi sempre cercare una relazione nella tua query SQL se devi ...

[Modifica: da quando ho scritto questo post in origine, la patch nel problema sopra è stata assegnata a Riferimenti per D7 e dovrebbe essere il modo preferito di backreferencing (funziona benissimo quando semplicemente hanno bisogno di elenchi di nodi o utenti che fanno riferimento a un certo altro nodo o utente) .]

[Modifica 2: se si utilizza Entity Reference, sembra che la soluzione preferita sia quella di utilizzare Riferimenti entità corrispondenti , e c'è anche il meno utilizzato Sincronizzazione campo riferimento entità .]

4
geerlingguy

In Drupal 7 (che hai indicato) sembra che la soluzione sia usare Entity Reference Module in combinazione con - (Entity) Modulo di sincronizzazione dei campi di riferimento che aggiunge le funzionalità necessarie per mantenere sincronizzate le relazioni.

Lo stesso si può ottenere con Modulo riferimenti con modulo cnr - questa soluzione funziona (la sto usando su un sito Drupal 7 attualmente), ma sta diventando obsoleto/deprecato a favore della prima soluzione che ho dato.

Tutte le altre soluzioni menzionate nelle risposte sopra sono rilevanti solo per Drupal 6 (tranne relazione che ha il potenziale per diventare un ottimo modulo, ma in questo momento, non fa molto e ha molti problemi).

3
Moshe Eshel

In alternativa, se stai lavorando su un'implementazione personalizzata e desideri un modo semplice per fare riferimento a indietro, puoi collegarti a nodeapi, ascoltare l'operazione save e quindi aggiornare a livello di programmazione il nodo di riferimento.

2
enikola

Puoi anche provare il modulo Reverse Node Reference .

1
user580

Usa semplicemente le Regole e questa regola http://drupal.org/node/183624

0
giorgio79

È possibile utilizzare il modulo Content Dependency .

Fornisce riferimenti inversi tramite scheda e supporta i seguenti moduli: riferimento nodo/riferimento entità.

0
drupal