RelatedContent: fullduplex

Главные вкладки

Аватар пользователя Cellard Cellard 24 февраля 2008 в 16:07

Итак, RelatedContent.

Позволяет установить для объекта связанные объекты. Но при этом сами объекты не знают о том, что их привязали.
Вот например есть событие. К этому событию привязаны люди, которые имеют отношение к событию. Просматривая событие, я могу быстро перейти к человеку, который принимает участие в событии. Вопрос: а как просматривая человека увидеть список событий, в которых он принимал участие?

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

Комментарии

Аватар пользователя marazmus marazmus 24 февраля 2008 в 19:36

Хукнуть просмотр профиля, вытащив в хуке запросом с join события, привязанные к этому человеку? Но это уже php+mysql, а как это сделать "по-зеленому", хз...

Аватар пользователя Cellard Cellard 10 марта 2008 в 14:29

Ой, пока ставил эксперименты с CCK - Node Referrer - пропустил совет посмотреть CCK - Node Referrer Wink

Node Referrer удобен и более дружелюбен в использовании для пользователя, но и он не решает проблему создания симметричных отношений.

Единственное, что приходит в голову - это, да marazmus, хак.
Для каждого из требующих связи объектов создаём Node Referrer и при обновлении объекта обновляем информацию в ссылающихся объектах.

С PHP дружу, с Drupal не очень - подскажите, где должен располагаться код хака?
Хакать надо node module, да?

Аватар пользователя marazmus marazmus 10 марта 2008 в 16:54

Пожалуйста, не путайте термины Smile

Хак - это вмешательство в код ядра, в частности в код node.module. Крайне не приветствуется, так как вылезет боком при обновлениях, как и в любой системе, где хачится ядро.

Хук (англ. hook) - это основной способ вмешательства в работу Друпала практически на любом этапе работы скрипта. Вкратце - Друпал просматривает код модулей на предмет наличия конструкции, к примеру, my_module_user, где my_module - имя вашего модуля, а _user - это хук Друпала. Найдя функцию с таким именем, Друпал "передает управление" при просмотре профиля юзера не своему модулю ядра, а вашему модулю (функции модуля) my_module_user. И там уже делайте что хотите, можете вообще не выводить ничего, можете набить туда 2 мегабайта пхп-кода - это уже ваше дело. Самое главное - нет изменений ядра, но вы можете вмешаться в работу Друпала в любом месте, используя систему хуков.

По хукам вообще - http://api.drupal.org/api/group/hooks/5
По профилям пользователей - http://api.drupal.org/api/function/hook_user/5

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

Аватар пользователя Cellard Cellard 10 марта 2008 в 17:51

Все сложнее, чем я думал Sad
Очень не хочу писать свои модули...

P.S. В моем случае пользователь - это обычный нод.