Как реализовать двухсторонние ссылки на узлы?

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

Например, в системе отслеживания билета с двумя билетами (узлами) A & B, вы можете создать ссылку на узел из билета A -> B и отметить B как ребенка. При просмотре билета A было бы тривиально отображать эту информацию. Тем не менее, я также хотел бы показать эти отношения при просмотре билета B и показать билет A в качестве его родителя.

Это же требование применяется также в неиерархических ситуациях (билеты C & D) со ссылкой от C -> D, связь должна быть выставлена ​​на билете D, а также на C.

20 голосов | спросил markdorison 7 MarpmMon, 07 Mar 2011 23:19:11 +03002011-03-07T23:19:11+03:0011 2011, 23:19:11

9 ответов


25

Доступно много модулей, ваше перемещение может варьироваться:

BackReference (только для Drupal 6)

NodeReferrer (бета-версия Drupal 7)

Связывание узлов (только Drupal 6)

Соответствующие ссылки на узлы (окончательный выпуск Drupal 7)

Соответствующие ссылки на сущности (выпуск Drupal 7 dev)

Контентная зависимость (окончательный выпуск Drupal 7)

ответил tim.plunkett 7 MarpmMon, 07 Mar 2011 23:22:21 +03002011-03-07T23:22:21+03:0011 2011, 23:22:21
7

Справочный модуль Entity теперь работает с Соответствующим Ссылки на организации . Это идеально подходит для всех узлов и не-узлов.

ответил tmsimont 19 12012vEurope/Moscow11bEurope/MoscowMon, 19 Nov 2012 19:31:11 +0400 2012, 19:31:11
4

Для Drupal 6 лучшим вариантом является, возможно, модуль NodeReferrer . Для Drupal 7 Связь соответствует законопроекту, но еще не готова.

ответил Pierre Buyle 7 MarpmMon, 07 Mar 2011 23:22:26 +03002011-03-07T23:22:26+03:0011 2011, 23:22:26
4

Если вы используете Drupal 7 /Views, вы можете создать обратную связь, чтобы получить список узлов, которые относятся к данному узлу (или, возможно, к пользователям, которые относятся к данному узлу). Ознакомьтесь с исправлением в этой проблеме: http://drupal.org/node/1043260

По-моему, если вам не нужна явная, предварительно построенная обратная связь, хранящаяся в базе данных (иногда это может быть полезно по соображениям производительности), использование одного из других решений - избыток. Вы всегда можете найти отношения в своем собственном запросе SQL, если вам нужно ...

[Изменить: с момента написания этого сообщения исправление в выпуске выше было посвящено ссылкам для D7 и должно быть предпочтительным способом обратного вызова (отлично работает, когда просто требуется список узлов или пользователей, ссылающихся на некоторый другой узел или пользователя).]

[Редактировать 2: если вы используете ссылку Entity Reference, похоже, предпочтительным решением является использование Ссылки на соответствующие сущности , а также используется менее широко используемая Синхронизация ссылочной ссылки на Entity .]

ответил geerlingguy 3 J0000006Europe/Moscow 2011, 07:05:29
3

В Drupal 7 (который вы указали) кажется, что решение заключается в использовании Entity Справочный модуль в сочетании с (Entity) эталонным модулем синхронизации полей , который добавляет необходимые функции для синхронизировать отношения.

То же самое можно сделать с помощью Справочного модуля с cnr module - это решение работает (я использую его на одном сайте Drupal 7 в настоящее время), но устаревает /устаревает в пользу первого решения, которое я дал ,

Все другие решения, упомянутые в приведенных выше ответах, актуальны только для Drupal 6 (кроме Связь , которая может стать отличным модулем, но прямо сейчас мало что делает и имеет много проблем).

ответил Moshe Eshel 13 Mayam12 2012, 07:05:26
2

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

ответил enikola 18 MaramFri, 18 Mar 2011 02:46:46 +03002011-03-18T02:46:46+03:0002 2011, 02:46:46
1

Вы также можете попробовать Справочник обратного узла .

ответил 18 MaramFri, 18 Mar 2011 00:02:46 +03002011-03-18T00:02:46+03:0012 2011, 00:02:46
0

Просто используйте Правила и это правило http://drupal.org/node/1836240

ответил giorgio79 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 18:22:24 +0400000000pmSat, 23 Feb 2013 18:22:24 +040013 2013, 18:22:24
0

Вы можете использовать модуль Content Dependency .

Он предоставляет вам обратные ссылки через вкладку и поддерживает следующие модули: ссылка на ссылку на объект /сущность .

ответил drupal 14 Mayam13 2013, 03:32:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132