[Résolu] Filtre View dynamique?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je cherche à rendre les filtres de ma vue dynamique.
Je m'explique, J'ai crée des termes correspondant chacun à un utilisateur authentifier, leur $uid précisément.
Je voudrais utiliser l'uid de l'utilisateur connecté en tant que terme pour la vue et n'afficher donc que le contenu lié à l'utilisateur par ce terme.

J'ai essayer de modifier le views-view.tpl.php correspondant, mais apparemment, le template ne fait que traiter les requêtes de la view déjà effectué.

Es ce qu'il y à un moyen de rajouter un simple filtre dynamique du type:

<?php
 

 
global $user;
 
$mon_terme_filtre = $user->uid;

 
?>

Avez vous une idée de comment je pourrais faire ?

Je vous remercie

Forum : 
Version de Drupal : 

Merci pour la réponse,

Cependant, j'ai beau avoir écumer la moitié des forums sur les Contextual filters, je ne saisi toujours pas ou le filtre trouve ses valeurs.

je créé mon filtre "Contenu: Has taxonomy term ID" associer au vocabulaire correspondant.
De la il me propose si c'est un noeud When the filter 'value is NOT in the URL' ou l'inverse et si c'est un block, When the filter value is NOT available ou l'inverse.

Si j'ai bien compris, le filtre réagis selon la valeur de VALUE qui peut se trouver dans l'url ou bien je ne sais pas où, pour le cas des block. D'où il tire cette VALUE? J'ai lu sur certain post que l'on ne pouvais utiliser les filtres contextuels sur l'affichage de type bloc (que je voudrais utiliser :( ). M"enfin si quelqu'un à un tuto sur l'utilisation de ces filtres, je ne suis pas contre.

merci.

Imaginons que vous voulez afficher une liste d'articles publiés par l'utilisateur d'identifiant "uid5". Vous créez une vue de tous les articles publies sur le site.

Vous devez ajouter un filtre contextuel "author uid". Cad qu'a chaque affichage de votre vue, Views va regarder cet "argument" pour chaque article de la vue et décider si l'article est a exclure ou non en fonction de la logique et configuration du filtre. Donc votre cas, si l'article a été publie par l'auteur d'identifiant "uid5", il le garde, sinon il le jette.

En général, mais en fonction des cas, Views ne peut pas trouver de lui même la valeur de l'argument et ne peut donc pas filtrer vos articles. Vous devez lui donner la logique pour construire ce filtre et en determiner la valeur. Il faut alors utiliser l'option "Provide default value" dans les options du filtre.

Dans votre cas, vous avez par exemple "User ID from logged in user": votre vue récupérera tous les articles pour l'utilisateur connecte. Views vous donne cet option par defaut, mais vous pouvez donner a Views des valeurs de filtres contextuels plus compliquées en utilisant du code PHP.

Voila, en espérant que ça vous aide a comprendre et vous mette sur la voie. Les filtres contextuels dans Views ne sont pas vraiment intuitifs a mon sens, beaucoup de gens se pose les mêmes questions au début.

Un grand merci pour cette réponse,

Ca met fin à une journée entière de recherche infructueuse (plus 2 aspirines :p ) sur le sujet. Bon, certains dirons que je ne suis pas doué en "googlerie", surtout en anglais, mais ces simples ligne devrait servir de tutoriel :).

Pour ceux qui tomberais sur le sujet (ou ceux que ça intéresse), voici mon utilisation du filtre:

je précise avant tout que ce projet me sert accessoirement de découverte plus en profondeur de drupal, donc il est possible que la méthode utiliser soit peu dans l'esprit du cms, cependant c'est celle qui m'est apparue la plus simple à réaliser sur le moment.
Pour mon projet je devais pouvoir faire en sorte que les utilisateurs authentifiés puisse sélectionner dans une liste, des items qui serons réunis dans une liste personnelle, donc dont l'affichage est lié à l'utilisateur connecté.

Pour cela j'utilise deux script via module:
-un 1er qui va, à la création d'un utilisateur, insérer dans la base de donné un nouveau terme name=uid dans le vocabulaire user créé pour cet effet.
-un 2éme qui va permettre aux utilisateur connecté d'ajouter l'item à leur liste, via un lien qui se contenteras d'ajouter dans la base de donnée, une liaison entre le nid de l'item et le uid(converti en tid) de l'utilisateur.

Et nous arrivons au filtre.
Donc je crée une vue contenant les items voulus. En filtre j'utilise comme le conseil Hles:

filtres contextuels : Contenu: Has taxonomy term ID

When the filter value is NOT available : Provide default value : User ID from logged in user (ici, comme aucune valeur n'est trouvé, il va retourner le uid de l'utilisateur co. comme argument)

When the filter value IS available or a default is provided : Specify validation criteria : mon_vocabulaire_user : Filter value type : term name converted to terme id. (ici se trouve le filtre si oui ou non le noeud sera afficher. On lui demande de regarder dans le vocabulaire "user" si l'argument passé (l'uid) s'y trouve)

Voili, encore merci pour m'avoir aidé à comprendre les filtres :)

Bonjour,
J'ai beaucoup appris des messages ci-dessus, je voudrais en profiter pour vous exposer l'obstacle sur lequel je bute :

Je souhaite établir une liste d'enseignants qui disposent chacun de leur page de présentation (coordonnées, travaux, biographie, etc.).

Avec Views, je crée une page qui présente la liste de tous les enseignants avec leur photo et un lien sur leur nom qui pointe vers leur profil à l'aide d'un field de type [profil:URL].

Mais je voudrais en fait faire la chose suivante:
- créer une view différente pour chaque page profil qui récupère directement les infos des fields de la page profil
- afficher un lien distinct pour chaque view ainsi créée.

Il me semble que Contextual Filters devrait permettre de faire cela mais impossible d'y voir clair...
Pourriez-vous m'aider ?
Merci d'avance pour le coup de main!