web-dev-qa-db-fra.com

Filtre contextuel avec un terme de taxonomie qui n'est pas dans l'url

J'espère que quelqu'un pourrait m'aider à apprivoiser la bête connue sous le nom de filtres contextuels. :) J'ai une série de nœuds qui ont tous un terme de taxonomie spécifique qui leur est attribué (tous du même vocabulaire), mais pour mon chemin d'URL, je ne les inclue pas:

Par exemple:

Nom du vocabulaire = vidéos

Un nœud a des termes:

-food
--vegetable
---carrot 

qui lui est assigné, mais la seule URL que je veux est:

site.com/videos/title-of-node

Et puis tous les autres nœuds qui ont des termes sur eux seront tous sous le répertoire "vidéos":

site.com/videos/title-of-another-node
site.com/videos/title-of-yet-another-node

J'ai créé une vue qui a un filtre contextuel où je veux afficher uniquement les nœuds qui ont le terme carotte. Et cela fonctionne parfaitement lors de la prévisualisation sur la page des vues, mais lors du chargement de la page réelle, j'obtiens une liste de TOUS les nœuds sous le terme "food" car j'ai "WHEN THE FILTER VALUE IS = PAS DANS L'URL -> Afficher tous les résultats pour le champ spécifié "

Je pense que mon principal problème est que "les valeurs de filtre contextuel sont fournies par l'URL". Et mes conditions ne sont pas dans l'url. Donc, d'une manière ou d'une autre, je dois extraire les termes associés à chaque nœud.

Toute aide serait très appréciée!

7
Dan

Au lieu de créer une vue de nœud, créez une vue de taxonomie.

En cela fournissent deux relations:

  1. Terme de taxonomie: Contenu avec terme;
  2. Terme de taxonomie: Contenu utilisant {Nom du champ de taxonomie dans le type de contenu} *;
  3. Ajoutez un filtre contextuel du type Contenu: Titre; Utilisez la première relation pour le filtre contextuel, apportez les modifications nécessaires dans l'option plus, comme changer en minuscules, transformer l'espace en tirets, etc.
  4. Ajoutez les champs obligatoires du contenu avec la relation définie sur 2);

Tu es prêt.

EDIT: Conformément à la discussion, il était également nécessaire d'afficher les nœuds sous un terme et ses sous-termes.

  1. Créez une vue du type de contenu;

  2. Ajoutez les champs obligatoires;

  3. Ajoutez un filtre contextuel du type Contenu: A un ID de terme de taxonomie (avec profondeur) et sélectionnez la profondeur une valeur aussi profonde que la hiérarchie que vous avez dans la taxonomie.

Maintenant, lorsque vous passez le terme id comme entrée, il affichera tous les nœuds sous ce terme de taxonomie, y compris les nœuds enfants.

Si vous souhaitez modifier l'URL pour avoir le nom du terme au lieu de l'ID du terme, procédez comme suit.

  1. En vue, donnez le chemin comme taxonomie/terme /%, cela remplacera le chemin de taxonomie par défaut;

  2. Installer le module Pathauto cela dépend du module Tokens alors installez-le également;

  3. Dans Configuration -> alias d'URL, vous avez un onglet appelé Patters;

  4. Réglez le modèle des "CHEMINS DE TERMES TAXONOMIQUES" sur ce que vous souhaitez qu'il soit. Assurez-vous que la dernière valeur est [term: name] donc si vous voulez que le chemin soit catégorie/carotte vous devez le donner comme catégorie/[term: nom];

  5. Si vous avez déjà ajouté les termes de taxonomie, vous devrez effectuer la "MISE À JOUR EN VRAC", qui est à nouveau un onglet sur la page Alias ​​d'URL.

Maintenant, lorsque vous visitez la page catégorie/termname, vous verrez tous les nœuds sous le terme, y compris les termes enfants.

8
Mohammed Shameem