Exercice : créer un bloc qui liste les articles du même auteur

La documentation Drupal 6 n'est plus maintenue et en cours de dépublication.


Consultez le guide utilisateur Drupal en français directement sur drupal.org.

Dans cet exemple, vous allez créer un bloc contextuel permettant lors de l'affichage d'un article de blog de lister les titres des billets les plus récents rédigés par le même auteur. Nous allons utiliser les arguments du module Views pour filtrer dynamiquement les billets de blog.

Pour faire cet exercice, activez le module Blog et créez quelques billets de blog avec des utilisateurs différents.

Créer la vue

Tout d'abord, nous allons créer une vue de type node car ce bloc affichera les titres des billets de blog (un billet de blog est un node). Dans l'interface de Views, cliquez sur Ajouter, puis entrez les propriétés suivantes et cliquez sur Suivant :

Nom de la vue
dernieres_entrees_de_blog
Description de la vue
Liste des derniers billets de blog pour un auteur donné.
Etiquette de la vue
blog
Type de la vue
Node

Générer la liste des billets de blog

Pour une meilleure compréhension, nous allons créer la vue progressivement, et ainsi vérifier le rendu au fur et à mesure. Dans cette section, nous créerons une simple vue pour afficher les titres des billets de blog.

  1. Dans la 3ème colonne, recherchez la section Champs. D'une manière générale, les champs sont les éléments d'information que nous désirons afficher dans une vue (dans notre cas, le titre du noeud). Cliquez sur l'icône + pour ajouter un champ.
  2. Dans la section Paramètres par défaut: Ajouter champs, Sélectionnez le groupe Node pour découvrir les champs d'un node que vous pouvez afficher.
  3. Sélectionnez Node: Titre, puis cliquez sur Ajouter.
  4. Les paramètres du champ Node: Titre s'affichent. Supprimez le texte dans le champ Etiquette, pour ne pas avoir le texte "titre" devant chaque titre de noeud. Cochez également Lier ce champ à son nœud . Cela permettra à vos visiteurs de cliquer sur les titres qui les intéressent et de pouvoir ensuite lire les billets de blog correspondants.
  5. Cliquez ensuite sur Mise à jour. Si vous descendez maintenant jusqu'à la section Prévisualisation en direct, vous verrez qu'effectivement des titres s'affichent. Cependant, il n'y a pas seulement les billets de blog. Des titres appartenant à d'autres types de contenu s'affichent également. Nous allons y remédier.
  6. Dans la colonne de droite, recherchez la section Filtres. Les filtres servent à limiter les résultats de la vue. Dans notre cas, ils nous serviront à limiter l'affichage aux seuls billets de blog. Cliquez sur l'icône + pour ajouter un filtre.
  7. Comme précédemment, dans la section Paramètres par défaut: Ajouter filtres, sélectionnez Node dans la liste Groupes pour limiter les options possibles à celles qui se rapportent au Node.
  8. Descendez et sélectionnez Node: Type, puis cliquez sur Ajouter. Parmi les paramètres qui s'affichent, laissez la valeur de l'opérateur à Fait partie de et choisissez Billet de blog comme Type de noeud. Cliquez ensuite sur Mise à jour.
  9. Vérifiez grâce à la Prévisualisation en direct, un peu plus bas, que votre liste n'affiche plus que les billets de blog.

Ajouter un contexte avec les arguments

Les filtres sont très utiles pour limiter les résultats d'une vue quand la condition d'affichage est connue à l'avance (par exemple, si notre but est d'afficher les billets de blog, il faut toujours filtrer par type "entrée de blog"). Mais les filtres ne savent pas prendre de décision basée sur le contexte. Dans notre cas, nous ne voulons pas que l'affichage soit le même si notre utilisateur est un "administrateur" ou un simple "membre". Dans ce cas les filtres ne peuvent pas nous aider.

Nous avons heureusement un autre outil à notre disposition : les arguments. Par le biais des arguments, nous pouvons ajouter un contexte à notre vue (le cas typique est d'ajouter des identifiants dynamiques à l'URL). Au moment de l'affichage, le module Views prend ce contexte en considération.

Ajoutons un argument à notre vue et configurons le de telle sorte que l'affichage change en fonction de l'auteur de la publication.

  1. Dans la 3ème colonne, recherchez la section Arguments. Cliquez sur l'icône + pour ajouter un argument.
  2. Puisque nous nous intéressons à l'auteur, nous allons sélectionner dans la liste déroulante Groupes : Utilisateur. Choisissez Utilisateur : Uid puis cliquez sur Ajouter.
  3. La section Paramètres par défaut : Configurer Argument Utilisateur : Uid affiche beaucoup d'options, mais nous n'allons nous intéresser qu'à peu de chose.
  4. Le champ Titre, dans cette section, pourra être déterminé par le contexte d'affichage de la vue (contrairement au champ Titre de la section "Champs"). Dans le champ Titre, indiquez "Entrées récentes par %1". Plus tard, à l'affichage de la vue, %1 sera remplacé par le nom d'utilisateur de l'auteur de l'entrée de blog (grâce à l'argument Utilisateur : Uid).
  5. Sous Action à mener si l'argument est absent , il y a plusieurs possibilités (affichage d'une page 403 ou 404, ou simplement affichage de toutes les valeurs. Dans notre cas, si l'argument n'est pas spécifié, nous voulons donner un argument par défaut. En fait ce cas n'arrivera jamais puisqu'au final, nous afficherons une vue 'bloc' dans une région et non une vue 'page' avec son URL. Sélectionnez Fournir l'argument par défaut.
  6. Sélectionnez Identifiant utilisateur dans l'URL, ce qui fera apparaitre l'option Rechercher aussi un nœud et utiliser l'auteur du nœud. Sélectionnez cette option. En premier lieu, le module Views recherchera s'il peut obtenir de l'URL un identifiant utilisateur (par exemple user/1). Si ce n'est pas le cas, le module Views recherchera si la page en cours est un noeud (par exemple node/42) et, si c'est effectivement un noeud, il prendra à la place l'identifiant utilisateur correspondant à l'auteur du noeud.
  7. Avec les options Validateur, vous pouvez contrôler le type d'argument accepté par votre vue. Sélectionnez le validateur Utilisateur. Ainsi, le module Views s'assure que l'argument passé est bien un authentique identifiant utilisateur. Si ce n'est pas le cas, la vue ne s'affiche pas.
  8. Après avoir changé le titre de l'argument, l'argument par défaut et les options du validateur, cliquez sur Mise à jour pour sauvegarder vos changements.
  9. Vous remarquerez qu'à présent la prévisualisation n'affiche plus rien. Avons-nous tout cassé ? Non, c'est seulement que nous avons demandé à notre vue de ne rien afficher si elle ne trouve pas d'identifiant utilisateur. Entrez l'argument "1" dans le champ Arguments de la prévisualisation et cliquez sur Aperçu. Vous verrez alors s'afficher la liste des billets de blog de l'utilisateur 1.

Créer le bloc

Ainsi, la prévisualisation nous montre bien ce que nous souhaitons obtenir. Il reste cependant un problème : nous ne pouvons pas afficher notre vue dans un bloc ! Corrigeons cela en créant un nouvel affichage.

  1. Dans la première colonne, sous Paramètres par défaut, il y a une liste déroulante qui contient des valeurs telles que Page, Flux, et... Bloc ! Sélectionnez Bloc et cliquez sur Nouvel affichage.
  2. Il n'y a pas grand chose d'autre à faire dans la vue. Sous Paramètres de base, cliquez sur le lien Aucun à droite de Titre et indiquez 'Derniers billets de blog de %1' puis cliquez sur Mise à jour. Sous Paramètres des blocs, cliquez sur le lien Aucun à droite de Admin et ajoutez une description de notre bloc (qui apparaîtra dans l'interface d'administration des blocs), par exemple : 'Derniers billets de blog par auteur', puis cliquez sur Mise à jour.
  3. Enregistrez votre travail en cliquant sur le bouton Enregistrer, en bas de l'interface de Views. Un message confirme que la vue a bien été enregistrée.
  4. Ensuite, allez dans l'interface de gestion des blocs et déplacez le bloc intitulé "Derniers billets de blog par auteur" dans la colonne de droite (ou toute autre région similaire). Cliquez sur Enregistrer les blocs un fois que votr bloc est à la bonne place.
  5. Vous ne voyez aucun changement. Le nouveau bloc n'apparaît pas dans la colonne de droite. Rappelez-vous, nous sommes sur une page d'administration, nous ne sommes pas sur une page qui nous fournit un identifiant utilisateur contextuel. Allez sur la page d'affichage des blogs puis cliquez sur l'une des entrées. Le bloc devrait apparaitre dans la colonne de droite, intitulé par exemple "Derniers billets de blog de admin" avec la liste des billets de blog associés au-dessous.

Les finitions

Il reste encore quelques petites choses à faire pour que notre vue soit parfaite. Par exemple, nous avions dit que notre bloc devait montrer les derniers billets de blog ; mais elles apparaissent ici dans leur ordre de création, les plus anciennes en haut de liste. De plus, les entrées non publiées sont également affichées.

  1. Retournez dans l'édition de la vue.
  2. Ajoutez un filtre en cliquant sur l'icône + dans la section Filtres.
  3. Choisissez Node dans la liste déroulante Groupes puis sélectionnez Node : Publié. Cliquez sur Ajouter.
  4. Dans la section Publié, choisissez Oui et cliquez sur Mise à jour.
  5. Pour paramétrer le tri, recherchez la section Critères de tri, juste au-dessus des filtres et cliquez sur l'icône +
  6. Dans la liste déroulante Groupes, sélectionnez à nouveau Node. puis sélectionnez Node : Date de publication et cliquez sur Ajouter.
  7. Dans les paramètres, choisissez l'ordre de tri Descendant. Les billets de blog seront présentés des plus récents (haut de liste) aux plus anciens. Cliquez sur Mise à jour.
  8. Enfin, enregistrez de nouveau la vue en cliquant sur le bouton Enregistrer pour que vos nouveaux critères soient pris en compte.
Version de Drupal : 

Commentaires

Salut,
Et comment fait-on pour lier cette vue à une page-liste regroupant l'ensemble des résultats pour : 'les articles de cet auteur' ? Car si nous ajoutons un lien plus vers une nouvelle page, tous ce que nous pourrons faire, c'est définir une URL statique... enfin, avec les options fournies par View. Ma question est : comment faisons nous pour lier cette vue bloc à une vue "page" qui conservera l'argument utilisateur dans son URL ??
J'ai posé plusieurs fois la question, mais je n'ai pas de réponses... Alors, s'il y a un magicien parmi nous, alors qu'il se fasse connaître ;)

Bonjour merci de ce tuto qui m'a beacoup servi et dont je suis bientôt en voie de réussir, tout fonctionne. Néanmoins je rencontre un problème.

En effet ce qui se passe en ce moent, c'est que la liste des articles s’affichent sur la page d’administration de prévisualisation seulement si j’insère dans le champs Arguments la valeur de la thématique pour avoir la liste des articles de la thématique que j’ai choisi. Alors que ce que je désire c’est qu’il me l’affiche automatiquement non pas sur la page d'administration mais bien sur monsite, par exemple quand je suis sur mon site et que je clique sur la page de l’article de thématique x, je désire qu’il récupère la thématique de l’article dont j’ai cliqué et qu’il me fait donc un filtre des articles de la thématique x et qui s’affichent sur la page.