2010-10-05 4 views
1

В Drupal У меня есть 3 типа контента (A, B, C), см. link. A и C содержат ссылку на узел B.Drupal Views relationship

Теперь у меня есть представление, которое запрашивает поля из A из аргумента. Я хочу также показать поля из C корыта relationschip с B, так:

  • А имеет nodereference удостоверения личности: 1
  • B имеет идентификатор узла: 1

    Я хочу, чтобы показать поля от C, где nodereference ID также 1. Как это возможно? Я не могу определить карту.

Может кто-нибудь помочь мне, пожалуйста?

ответ

2

В настоящее время вы можете легко перейти от A к B через ссылку на Node, но так как ссылка с C на B вы не может получить ссылку на C - это текущая проблема.

Одним словом, вы можете решить эту проблему, используя модуль Node Referrer (см. http://drupal.org/node/431308 за то, что он делает). По существу он создает поле только для чтения, в котором указаны все узлы, указывающие от C до B (т. Е. Для ссылки на каждый узел создается некоторая ссылка обратного узла).

Так позволяет сказать, что мы имеем следующий Node Reference поле

  1. В типа А содержимых мы имеем ссылку на поле узла называется a_to_b_link
  2. В контенте типа C мы имеем опорный узел поле называется c_to_b_link
  3. В типе содержимого B у нас есть поле Node Referrer, которое отслеживает все ссылки в описании узла. c_to_b_link

Создание соответствующего представления немного более активно.

  1. Сначала добавьте фильтр для Node: Type = A
  2. Добавить отношения a_to_b_link. Удостоверяются, что вы отметили галочкой Require this relationship
  3. Добавить еще одно отношение из группы узлов: Node: Referrers. Также убедитесь, что в настройках для отношений вы должны выбрать a_to_b_link в поле Relationship. Другими словами, вы создаете отношения, которые используют ранее существовавшие отношения (аналогичные по концепции с указателем на указатель на C++). Установите флажок Require this relationship. Это отношение по умолчанию называется Referencing Nodes от Drupal.
  4. Теперь добавьте все поля, которые вы хотите, из типа контента A, как и в случае с .
  5. Если вы хотите добавить поля из содержимого типа C убедитесь, что вы выбрали отношения Referencing Nodes
+0

@Nealv: Вместо узла Referrer (который я использовал), вы также можете посмотреть по адресу: // друпал .org/project/reverse_node_reference (для этого требуется MySQL 5.1). См. Http://drupal.org/node/798786 о различиях с Node Referrer. По сути, основное преимущество заключается в том, что вам не нужно создавать новое поле в типе контента B. Вы просто получите ссылку обратного узла в отношениях взглядов. В этом отношении он может быть немного «элегантным». Но оба метода будут работать. –