CCK в форме ввода, но не в структуре узла - PullRequest
2 голосов
/ 05 августа 2010

У меня есть тип контента (Witl), который создает пользователь.В форме создания пользователь выбирает опцию из списка узлов, сгенерированных из представления (VOut).Прямо сейчас я храню эту опцию как ссылку на узел в Witl.

Мне нужно перестроить вещи так, чтобы эта ссылка на узел не сохранялась на самом Witl, а вместо этого в конечном итоге сохранялась как ссылка на другой узел.Однако пользователь может создавать только типы контента Witl.Это означает, что мне нужно найти способ представить это представление (список выбора) пользователю на Witl, но не сохранять его на Withl.Это можно сделать?Есть ли способ использовать одну форму создания типа контента только для представления представления, но не хранить данные этого типа контента?

Ответы [ 3 ]

3 голосов
/ 06 августа 2010

Действительно ли важно, чтобы ссылка не сохранялась в узле Witl? Есть несколько модулей, которые пытаются решить проблему создания и отображения двунаправленных связей между узлами, но, насколько мне известно, ни один из них не сохраняет ссылку only в указанном узле.

Предположим, у вас есть два узла, узел A (тип: Witl) и узел B (тип: другой), и вам нужно что-то сделать со ссылкой от B до A. Это ваша ситуация, верно?

Модуль Ссылки на соответствующие узлы использует «простой» подход и возьмет ссылку от A до B и продублирует ее как ссылку от B до A.

Другие модули, такие как Отношения узлов и Обратные ссылки на узлы утверждают, что базы данных не должны содержать дублирующихся данных, и пытаются разрешить взаимосвязь от A до B при просмотре узла B.

Если действительно необходимо, чтобы ссылка, при добавлении в A, была только , хранящейся в B, то лично я бы взяла код из соответствующих ссылок на узлы в качестве основы для пользовательского модуля.

3 голосов
/ 06 августа 2010

Да, это можно сделать.

Вместо создания поля в типе контента Witl, реализуйте hook_form_alter(), чтобы динамически добавить поле в форму создания контента. Затем реализуйте hook_nodeapi(), чтобы сохранить это значение где-нибудь после отправки формы.

Я не уверен, что это лучший способ.

2 голосов
/ 06 августа 2010

Я считаю, что это можно сделать с помощью следующего модуля

http://drupal.org/project/nodereference_url

Вот учебное пособие по модулю:

http://mustardseedmedia.com/podcast/episode37

Этот урок может вас немного смущать, поэтому я бы рекомендовал вам сначала прочитать документацию по модулю.

По сути, этот модуль позволит вам связать VOut с Witl. Прямо сейчас, как вы объяснили, Witl ссылается на VOut. Но после использования модуля URL ссылки на узел вы сможете иметь поле ссылки на узел в VOut, которое ссылается на Witl.

...