2010-02-17 10 views
1

Dans mon arborescence de contenu, j'ai un arbre de contenu qui représente les villes. Pour chacun de ceux que je veux avoir des connexions logiques à un ensemble de ... disons ... Parcs nationaux qui sont à moins de 2 heures de route. Ainsi, une ville aura plusieurs parcs ... et chaque ensemble sera différent ... mais bien sûr, un parc sera également associé à plus d'une ville. Quel type d'article et de configuration de champ fonctionne bien pour ce genre de situation?Meilleure pratique de la relation plusieurs-à-plusieurs entre les éléments de l'arborescence de contenu?

Je vais créer un moteur de rendu personnalisé pour ces éléments, donc je suis surtout préoccupé par la façon dont cela devrait apparaître dans Sitecore pour maximiser la facilité d'utilisation et les performances. J'ai utilisé Sitecore 6.2.

(cross-posting de NRS, s'il vous plaît pardonnez-moi ... mais je veux encourager la communauté Sitecore ici sur StackOverflow)

+0

S'il s'agit de M: N, ce n'est pas un arbre. juste sayin ... ;-) –

+0

Je suppose que vous n'êtes pas familier avec Sitecore ... Tout fait partie de "l'arbre de contenu". – Bryan

Répondre

2

Pour ce genre de relation que vous aurez besoin de la structure suivante:

Accueil

Cities 

     NY 
     London 
     Paris 

    Parks 

     Park1 
     Park2 
     Park3 

Le modèle "City" devrait avoir le champ de type Multilist appelé "Parcs". L'âme de ce domaine devrait se tourner vers la racine de Parcs (Accueil> Parcs). De la même manière que le modèle "Park" a le champ Multilist appelé "Cities". La source de ce champ devrait se rapporter à la racine de Cities (Home> Cities).

De cette façon, vous pourrez facilement effectuer n'importe quel type de demande.

Espérons que cela aide.

+0

Le seul problème avec ce modèle est que vous devez maintenir des associations à deux endroits. Par exemple, si vous ajoutez Park1 à un champ multiliste (ou mieux encore un champ de liste) dans NY, vous devez également ajouter NY au champ multiliste dans Park1. Cependant, vous pouvez configurer un gestionnaire de sauvegarde et de suppression comme suggéré par Gabriel de rendre ce processus un peu plus "mains libres". –

+0

Merci Yan, c'est la meilleure réponse jusqu'à présent. – Bryan

0

Vous allez faire de recherche du parc à la ville? Par exemple, auriez-vous besoin de dire «trouvez toutes les villes associées à un parc donné»? Ou sera-ce simplement «trouver tous les parcs associés à une ville donnée»? Si vous avez besoin de faire les recherches dans les deux directions, les choses deviennent un peu plus compliquées et je recommanderais probablement d'utiliser un index de recherche. Cependant, si votre recherche est seulement dans une direction, vous pouvez simplement utiliser un champ de liste pour faire des associations d'un article à beaucoup d'autres.

De votre description, je ne suis pas entièrement sûr si vous avez vraiment besoin d'utiliser cette relation many-to-many, ou si un chemin un-à-plusieurs est tout ce dont vous avez besoin?

+0

S'il a besoin d'un parc pour se rendre en ville, il pourrait simplement rendre l'autre perspective? Il est peu probable qu'une autre structure soit appropriée pour une interface Web. –

+0

Oui, nous finirons par faire des recherches dans les deux sens. Je ne suis pas familier avec "index de recherche". Je suppose que vous pourriez regarder est aussi multiple un-à-plusieurs ... mais n'est-ce pas la même chose? – Bryan

2

Si la connexion doit être bidirectionnelle, vous pouvez la gérer en ajoutant du code à l'événement save. Supposons que nous ayons un modèle de ville avec un champ appelé «parcs connexes» et un modèle de parc avec un champ «villes connexes».

Supposons que nous sauvegardions un article City avec deux parcs dans le champ «Parcs connexes». Lors de l'événement de sauvegarde, nous avons pu récupérer les deux parcs et insérer la ville en cours d'enregistrement dans le champ "Villes liées" de ces parcs. Je ne dis pas nécessairement que c'est la meilleure façon d'y arriver, juste une autre option.

+0

Comment puis-je me connecter à l'événement save pour un seul type d'élément ou de modèle? Je n'arrivais pas à comprendre comment faire ça auparavant, donc ajouter un gestionnaire comme ça était problématique. – Bryan