web-dev-qa-db-fra.com

Comment fonctionnent les filtres contextuels de Views?

J'essaie à nouveau de faire le tour des filtres contextuels! Je l'ai utilisé il y a quelque temps, mais je suis à nouveau totalement perplexe. Voici ce que j'essaie de faire:

  1. Générez une page de nœud de contenu cloné avec des termes de taxonomie insérés dans cette page clonée.

ex.: EXAMPLE.com/white-shoes/blue

Lorsqu'un utilisateur atteint la page/white-shoes, il affichera la page du nœud d'origine orientée vers la couleur blanche. Maintenant, si l'utilisateur atterrit sur/white-shoes/blue, il affichera la même page de nœud, mais cette fois tout le contenu du corps sera réécrit en remplaçant la couleur blanche par la couleur bleue.

Dans Vues je devrais créer un affichage de page avec le chemin de:% /%

Maintenant, je créerais un filtre contextuel pour récupérer le nid. J'ajoute Content: nid comme filtre contextuel. Je choisis FOURNIR UNE VALEUR PAR DÉFAUT et je mets ce PHP:

$ x = drupal_lookup_path ('source', arg (0));

$ y = exploser ('/', $ x);

return $ y 1 ;

Ce code PHP convertit essentiellement la partie/white-shoes de l'URL en NID. Mais cela ne fonctionne pas. J'ai testé le code via drush ev via le terminal et j'obtiens en effet un résultat retourné, donc je sais que cela fonctionne.

Je fais de même pour le nom du terme de taxonomie et j'ajoute un filtre contextuel pour cela également. Cette fois, je choisis FOURNIR UNE VALEUR PAR DÉFAUT et sélectionne VALEUR BRUTE DE L'URL et sélectionnez le 2e argument.

enter image description here

Comme vous pouvez le voir lorsque j'entre une VALEUR D'APERÇU pour le filtre contextuel: AAA/BBB/CCC. Ma valeur par défaut est ignorée. Il est censé saisir le 2e argument, mais il n'obtient que le 1er. Regardez l'instruction SQL OERE et vous verrez qu'elle obtient AAA alors qu'elle devrait être BBB.

enter image description here

La question est donc de savoir ce que je fais mal ou existe-t-il une meilleure solution à ce que je veux accomplir?

9
Patoshi パトシ

Voici une vidéo et son article connexe qui vous expliqueront comment les utiliser, l'exemple utilise des animaux domestiques (chiens, chats) qui peut être un exemple assez simple pour aider à comprendre comment utiliser les filtres contextuels de vues.

VIDÉO: https://www.youtube.com/watch?v=lJFMTDuaxy8 (URL courte de la vidéo YouTube: lJFMTDuaxy8 )

ARTICLE: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views

2
Chris Charlton

Le filtre contextuel est utilisé pour filtrer la sortie de la vue par des arguments URL, vous pouvez également passer les arguments manuellement dans ce format:

<?php print views_embed_view($name,$display_id,$arg1,$arg2,$arg3); ?>

où "$ name" est le nom de votre vue (ex. 'example_view') et '$ display_id' est le type d'affichage de votre vue (ex. 'default') et "$ arg1, $ arg2, $ arg3" sont des arguments comme dans l'URL.

Les arguments URL ont la structure suivante:

http://example.com/arg_1/arg_2/arg_ (arg_2 a le composant de chemin d'accès 2 (dans la page de configuration de la vue)).

Lorsque la valeur du filtre n'est pas disponible:

cela signifie drupal ne trouve aucun filtre.

Fournissez la valeur par défaut:

lorsque la valeur du filtre n'est pas disponible, vous pouvez utiliser cette option pour créer un filtre pour la sortie des vues, ce filtre peut être PHP code (if PHP module de filtre) activé) ou il peut obtenir sa valeur à partir des arguments URL -> (valeur brute de l'URL). La zone de texte Exception vous permet de tricher la valeur et d'afficher tous les résultats.

Lorsque la valeur du filtre est disponible

dans ce cas, vous effectuez une validation selon vos besoins et quelques autres options, lorsque drupal peut trouver la valeur du filtre.

5
Reza Shadman