Ok, c'est une solution légèrement longue mais je pense élégante. J'espère que ça ne vous effraie pas - Ce n'est vraiment pas complexe mais contrairement au code c'est difficile à expliquer dans le texte. C'était amusant de comprendre cela. Cette réponse fonctionne dans Views version 2 ou supérieure.Essentiellement, la solution combine deux modules
- Vues attach (http://drupal.org/project/views_attach)
- nodequeue (plus spécifiquement la taxonomie des files d'attente)
S'il vous plaît lire sur les vues attacher avant d'aller plus loin. Les vues join sont mieux expliquées par cette vidéo.
Une file d'attente de taxinomie n'est rien d'autre qu'une Nodequeue créée automatiquement pour chaque terme de taxonomie dans un vocabulaire. Disons que nous avons une nodequeue de taxonomie appelée My Lists
. Disons que vous avez un Vocabulaire appelé Series
et il a 3 termes: Apache Solr Tutorial Series
, CSS Tips and Techniques Series
, Drupal Views Tips Series
. Et si My Lists
utilise la Series
comme source de taxonomie, 3 sous-files d'attente seront créées - une pour chaque terme.
Sur votre blog, vous aurez plusieurs séries d'articles (vous appelez cela des articles avec un "sujet commun"). Chaque série sera indépendante d'une autre série. Chaque série contiendra des listes de 2 blogs ou plus. Il est important de noter que dans ma proposition de solution, un blog ne pourra faire partie que d'une série - j'espère que c'est correct. Nous utilisons une solution basée sur Nodequeue en raison de votre exigence que l'ordre de la liste des blogs de la série est important et doit être préservé.
D'abord vous devrez créer un vocabulaire (disons que nous l'appelons Series
). Chaque fois que vous créez une nouvelle série de blogs, vous créez un nouveau terme de taxonomie, par exemple. Apache Solr Tutorials Series
, CSS Tips and Techniques Series
etc. Assurez-vous que le vocabulaire Series
s'applique à votre type de contenu blog
.
Vous devez maintenant créer une file d'attente de taxonomie. Activez simplement dans la liste des modules. Il est livré avec un module Nodequeue standard. Cliquez sur Gestion de contenu> Nodequeue> file d'attente de taxonomie. Nommez la file d'attente My Lists
. Assurez-vous de sélectionner Series
comme Vocabulaire. Vous pouvez laisser la longueur de la file d'attente à 0
(illimité) car chaque série de blogs peut contenir un nombre quelconque de blogs. Maintenant:
Link "add to queue" text:
mis Add to %subqueue
Link "remove from" queue text:
mis Remove from %subqueue
C'est un peu une chose pratique. Il vous donnera des liens au bas de chaque nœud blog
pour ajouter ou supprimer de la file d'attente de taxonomie appropriée. Ainsi, si un article de blog a obtenu le terme taxonomie CSS Tips and Techniques
, il recevra un lien en bas de la page de nœud complet (ou même une vue teaser) afin qu'il puisse être ajouté à la sous-file CSS Tips and Techniques
dans la file d'attente My Lists
.
Ceci termine la configuration pour les files d'attente de taxonomie.
Maintenant, nous arrivons à Views attach. Veuillez activer le module d'affichage des vues avant de continuer. Essentiellement Views attach
attache une vue à la fin du nœud. Dans notre cas, notre vue sera une liste d'autres articles de la série (seulement si le blog fait partie d'une série).
Nous aurons essentiellement besoin de "passer" le terme de taxonomie du noeud à la vue. Ce terme de taxonomie sélectionne la sous-file appropriée dans la file d'attente My Lists
.Tous les éléments de cette sous-file seront affichés dans l'ordre exact que vous avez spécifié (via l'interface Nodequeue standard).
Étapes pour créer la vue.
- Appelons la vue
display_other_blogs_in_series
.
- Ajoutez un affichage de type
Node Content
(disponible après l'activation des vues jointes). C'est un affichage juste comme le bloc et la page affiche mais avec la capacité spéciale de s'attacher au noeud.
Effectuez les réglages suivants dans le Node Content Display
Node content settings
Node types: blog
Build modes: Teaser, Full node
Arguments: token
Show title: No
Vous devez sélectionner Use tokens from the node the view is attached to
sous Arguments. Laissez le jeton être [term-id]
Ceci est le "ID du terme de top taxonomie". C'est très important!! Essentiellement, vous allez passer le terme de taxonomie du nœud de blog à partir du vocabulaire Series
(par exemple, CSS Tips and Techniques) comme argument de la vue. Pour que cela se produise, le vocabulaire Series
doit avoir le poids le plus faible. (Voir http://groups.drupal.org/node/11788#comment-38332). S'il a le poids le plus faible, le vocabulaire de taxonomie sera le premier vocabulaire de la section taxonomie de votre formulaire d'édition de nœud.
Maintenant, nous devons indiquer à notre vue de prendre seulement des éléments de la file d'attente My Lists
. Ajouter une relation Nodequeue: Queue
. Assurez-vous que [x] Require this relationship
est sélectionné. Assurez-vous que [x] Limit to one or more queues
est sélectionné avec My list
comme file d'attente. Ajouter un argument Nodequeue: Subqueue Reference
. Assurez-vous que la relation est queue
, c'est-à-dire la relation que nous avons définie ci-dessus. Cet argument va être le terme de taxonomie du vocabulaire Series
. Cet argument entraînera la sélection de la sous-file correcte.
Ajoutez les champs qui vous intéressent par ex. Node: Title
. Assurez-vous que le Node: Title
est transformé en un lien hypertexte en cochant Link this field to its Node
Ajoutez Nodequeue: Position
comme critère de tri. Assurez-vous que l'ordre de tri est ascendant et assurez-vous que la relation queue
est utilisée.
Dans les filtres, assurez-vous d'ajouter Node: Type = blog
en tant que votre filtre.
Alors, que ce point de vue va faire est:
- Prenez le terme de taxonomie du vocabulaire
Series
dans le nœud qui est actuellement en cours de visualisation
- passe que comme argument à la vue
display_other_blogs_in_series
- La vue utilisera cet argument pour sélectionner la sous-file appropriée dans la file d'attente
My Lists
- Les éléments de la sous-file seront listés un par un exactement dans l'ordre que vous avez spécifié
- Cela apparaîtra correctement dans chaque blog qui fait partie d'une série particulière
Thats it!
Postscript: Si vous utilisez Vues 3 (actuellement à alpha3 au moment de l'écriture) et vous voulez un bloc (en ce moment les articles connexes viennent à la fin du corps de noeud) que vous pouvez faire il de la façon suivante:
- Oublier vue attacher ... ce ne est pas nécessaire
- Ajouter un bloc. Il doit contenir les mêmes arguments, relations, champs et filtres que les instructions ci-dessus pour l'affichage
Node Content
.
- Vous devez modifier légèrement les paramètres de l'argument
Nodequeue: Subqueue Reference
: Sous Action to take if argument is not present:
, choisissez [x] Provide Default Argument
. Choisissez [x] Taxonomy Term ID from URL
. Maintenant, assurez-vous que [] Load default argument from term page
n'est pas sélectionné et [x] Load default argument from node page, thats good for related taxonomy blocks.
Aussi [x]Limit terms by vocabulary
et choisissez le vocabulaire Series
.
- Assurez-vous de nommer le bloc et de le placer dans la région appropriée.
Je pense avoir une réponse qui pourrait vous satisfaire. Mais avant cela, est-ce important si a. le bloc d'histoires associées est _not_ dans votre barre latérale, mais à la fin de l'entrée de blog b. L'ordre des articles affichés est-il important? c. Est-ce correct/pas ok si l'histoire que vous regardez actuellement est répétée comme un lien dans la liste des histoires connexes? Ou devrait-il être omis de la liste des histoires partie de la série –
@NoParrots - intéressant. Pour répondre à vos questions: À la fin de mon blog serait Ok, mais pas idéal; L'ordre des postes est important - certains sont une série technique où chacun se fonde sur ce qui s'est passé auparavant; Le message que vous consultez actuellement doit être affiché, en tant que contexte pour l'endroit où vous vous trouvez dans la séquence. – Bevan