Як реалізувати двосторонні посилання на вузли?


20

Модуль опорного вузла (компонент CCK) забезпечує чудовий спосіб створення опорного вузла з іншого. Який найкращий спосіб викрити двосторонні відносини між ними? Приклад нижче:

Наприклад, у системі відстеження квитків з двома квитками (вузлами) 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 dev release)

Залежність від вмісту (стабільний випуск Drupal 7)


Відповідні посилання на вузли для мене прекрасно працюють, і коли CER буде стабільним, я перейду до цього.


4

Для Drupal 6 найкращим варіантом є, мабуть, модуль NodeReferrer . Для Drupal 7 зв'язок відповідає законопроекту, але він ще не готовий.


Я завжди використовую модуль NodeReferrer, для чого це варто
electblake

1
Модуль "Відносини" зараз готовий, з липня '12
тест.страусс

Так, відносини здаються досить потужним варіантом. В іншому випадку CER також є хорошим легким варіантом.
шивами

4

Якщо ви використовуєте Drupal 7 / Views, ви можете побудувати "зворотний" зв'язок, щоб отримати список вузлів, які посилаються на даний вузол (або, можливо, користувачів, які посилаються на даний вузол). Перевірте виправлення в цьому випуску: http://drupal.org/node/1043260

На мою думку, якщо вам не потрібні явні, попередньо побудовані зворотні відносини, що зберігаються в базі даних (це може бути часом корисно з міркувань продуктивності), використання одного з інших рішень є надмірним. Ви завжди можете знайти відносини у власному SQL-запиті, якщо вам потрібно ...

[Редагувати: з моменту написання цього повідомлення, виправлення у вищезазначеному випуску було зроблено для References for D7, і він повинен бути кращим способом зворотного посилання (відмінно працює, коли просто потрібні списки вузлів або користувачів, що посилаються на певний інший вузол або користувача) .]

[Редагувати 2: Якщо ви використовуєте довідку суб'єкта, схоже, що кращим рішенням є використання відповідних посилань суб'єктів , а також є менш широко використовувана синхронізація посилань на сутність .]


Схоже, що Посилання зникнуть на користь Entity Reference. Не впевнений, де це залишає цю відповідь.
Джей

1
Посилання залишатимуться навколо, поки D7 не буде віддаленою пам'яттю ... але якщо ви використовуєте ER, ви можете використовувати відповідні посилання суб’єктів, щоб зробити те саме, що надає Посилання з поля.
geerlingguy

3

У Drupal 7 (який ви вказали) здається, що рішення полягає у використанні модуля посилання на сутність у поєднанні з модулем синхронізації референтного поля (Entity), який додає необхідну функціональність, щоб зберегти відносини синхронізованими.

Те саме можна досягти і з Модулем посилання з модулем cnr - це рішення працює (я зараз його використовую на одному сайті Drupal 7), але застаріло / застаріло на користь першого рішення, яке я дав.

Всі інші рішення, згадані у вищезазначених відповідях, стосуються лише Drupal 6 (за винятком Relation, яка має потенціал стати чудовим модулем, але зараз насправді не дуже багато і має багато питань).


Голосування за цю відповідь, оскільки це нещодавно, а Моше є старшим членом спільноти Друпал. У прийнятій відповіді єдиний стабільний модуль D7 - це CNR, і це знецінюється на користь CER (який ще не має стабільного випуску).
aendrew

1
У відносинах не було багато питань навіть у березні. І Моше Ешель drupal.org/user/168876 ! = Moshe Weitzman drupal.org/user/23 (дивись, що це уід ...) btw.

@chx Я здивувався, побачивши мене як старшого члена ... Я намагаюся бути кращим учасником, але я не думаю, що коли-небудь піднімусь до рівня оригінального Моше. Щодо модуля "Відносини", я базував це на відгуках когось, хто знає (я не буду називати імена) - я не мав можливості реально перевірити його на той час, і покладався на цю думку. Зараз я працюю над проектом D7 - я думаю, що в мені є потреба, тому я дам тут свою оновлену думку, коли закінчу.
Моше Ешель

2

Крім того, якщо ви працюєте над власною реалізацією та хочете прямолінійний спосіб посилання назад, ви можете підключитися nodeapi, прослухати saveоперацію та програматично оновити посилається вузол.




0

Ви можете використовувати модуль залежності вмісту .

Він надає вам зворотні посилання через вкладку та підтримує наступні модулі: посилання на вузол / посилання на сутність .


1
Не дуже впевнений, як це можна використовувати для створення взаємних довідок?
mpdonadio
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.