2010-08-05 10 views
2

J'ai un type de contenu (Witl) que l'utilisateur crée. Sur le formulaire de création, l'utilisateur sélectionne une option parmi une liste de noeuds générés à partir d'une vue (VOut). En ce moment je stocke cette option comme une référence de noeud sur Witl.CCK sous forme d'entrée, mais pas dans la structure de noeud

J'ai besoin de restructurer les choses, afin que cette référence de nœud ne soit pas stockée sur Witl elle-même, au lieu de la stocker comme une référence de nœud sur un autre nœud. Cependant, l'utilisateur peut uniquement créer des types de contenu Witl. Cela signifie que je dois trouver un moyen de présenter cette vue (la liste de sélection) à l'utilisateur sur Witl, sans pour autant l'enregistrer sur Withl. Peut-il être fait? Est-il possible d'utiliser un formulaire de création de type de contenu uniquement pour présenter la vue sans stocker les données sur ce type de contenu?

Répondre

3

Oui, cela peut être fait.

Au lieu de créer le champ sur le type de contenu Witl, implémentez hook_form_alter() pour ajouter dynamiquement le champ au formulaire de création de contenu. Ensuite, implémentez hook_nodeapi() pour enregistrer cette valeur quelque part, après l'envoi du formulaire.

Je ne suis pas sûr si c'est la meilleure façon, cependant.

3

Est-il vraiment important que la référence ne soit pas stockée dans le nœud Witl? Il existe plusieurs modules qui tentent de résoudre le problème de création et d'affichage de relations bidirectionnelles entre les nœuds, mais pour autant que je sache, aucun d'entre eux n'enregistre la référence seulement dans le nœud référencé. Supposons que vous ayez deux nœuds, le nœud A (type: Witl) et le nœud B (type: autre), et que vous deviez faire quelque chose avec la référence de B à A. C'est votre situation, n'est-ce pas?

Le module Corresponding Node References prend l'approche « facile » et prendra la référence en A à B et en double comme une référence en B à A.

D'autres modules, comme Node Relationships et Reverse Node Reference soutiennent que les bases de données ne doivent pas contenir dupliquer les données et essayer de résoudre la relation dans A à B en regardant le nœud B.

S'il est en effet un must que la référence, lorsqu'il est ajouté dans A, est seulement stocké dans B, alors personnellement, je voudrais prenez le code des références de nœud correspondantes comme base pour un module personnalisé.

2

Je crois que son possible de le faire en utilisant le module suivant

http://drupal.org/project/nodereference_url

Voici un tutoriel du module:

http://mustardseedmedia.com/podcast/episode37

Ce tutoriel peut vous embrouiller un peu si je Je vous recommande de lire la documentation pour le module en premier. Fondamentalement, ce que ce module fera est de vous permettre de lier un VOut à un Witl. En ce moment, comme vous l'avez expliqué, un lien Witl à un VOut. Mais après avoir utilisé le module d'URL nodereference, vous pourrez avoir un champ de référence de nœud dans VOut qui renvoie vers un Witl.