2010-02-17 5 views
0

Après seulement quelques semaines de travail avec Drupal, j'ai trouvé un problème récurrent, auquel je n'ai pas vraiment trouvé de solution optimale, alors j'espère que quelqu'un ici pourra donner des conseils sur les meilleures pratiques .Drupal: Contenu dans des blocs provenant de champs de référence de noeud?

Ce que j'ai est un region à l'intérieur de mon node.tpl.php, qui est rempli avec des blocs qui affichent le contenu de deux champs CCK différents du type node_reference. Cela fonctionne correctement lors de l'affichage d'un seul noeud. Le problème apparaît lorsque j'ai besoin d'utiliser un view. Par exemple, disons que j'ai une liste de nouvelles, et une seule vue d'article de nouvelles. Lorsque j'affiche le seul élément de nouvelles, je peux utiliser le champ node_reference du nœud de nouvelles pour faire référence à tout ce que je souhaiterais avoir dans ma barre latérale, mais lorsque je consulte la liste des nouvelles, je voudrais faire référence aux nœuds séparément. Quelle serait la meilleure pratique pour résoudre cela?

J'ai quelques idées, mais aucune ne semble être le choix logique, comment voulez-vous faire?

Répondre

1

Après avoir lu ma question je me rends compte que ça a été très mal expliqué, donc je vais réessayer , et aussi dire comment je l'ai résolu.

Le problème
sur « pages » normales (lors de l'affichage d'un seul nœud), j'ai une barre latérale qui montre quelque chose de similaire aux bannières, qui sont soit au hasard, ou je peux sélectionner un ou plusieurs qui devraient toujours être affiché sur la barre latérale. Ceci est résolu facilement lors de l'affichage d'un seul nœud, en utilisant un champ CCK node_reference. Le problème est lorsque vous utilisez une vue qui affiche plusieurs noeuds, par exemple une nouvelles listing-

La solution
Dans mon cas, je pouvais résoudre ce problème en créant des champs supplémentaires sur mon type de contenu de la page par défaut. Ces champs ont été appelés view, display et arguments. Dans mon tpl.php j'ai alors incorporé la vue de liste de nouvelles à l'intérieur d'une page, appelons cela Nouvelles. De cette façon, j'ai acquis une grande flexibilité, et aide également la page Nouvelles à savoir où il se trouve dans la structure du menu.

Observations finales
Je n'ai pas encore à découvrir s'il y a des inconvénients ou des dangers de cette façon de faire, mais s'il y a, ne hésitez pas à les partager avec moi :)

1

Ma compréhension de votre problème est que vous ne voulez pas que les blocs s'affichent sur la page d'affichage et que vous souhaitiez que les informations de bloc s'affichent en ligne avec le noeud.

La première partie est facile, vous pouvez modifier les paramètres de visibilité de bloc pour ne pas apparaître sur le chemin où vous avez la vue.

La deuxième partie dépend de la façon dont vous configurez votre vue. Si vous utilisez des champs, vous pouvez simplement ajouter des champs pour la référence de noeud et ils devraient s'afficher. Si vous utilisez une vue de nœud, vous devrez remplacer le modèle et créer un modèle qui affiche le champ de référence de nœud.

Si vous souhaitez de plus amples explications s'il vous plaît commentaire et je peux clarifier

0

J'ai tendance à vouloir créer mes propres modules, qui créent des blocs et font référence à la base de données directement. Ensuite, j'ai mis les blocs à l'intérieur des panneaux, cela semble être plus flexible pour moi que d'utiliser des vues et des champs cck etc ...

Questions connexes