web-dev-qa-db-fra.com

Comment filtrer uniquement les termes racine d'un vocabulaire dans une vue?

J'ai un vocabulaire structuré comme suit:

  • Racine Alpha
    • Terme Alpha 1
    • Terme Alpha 2
      • Subterm Alpha 1
  • Root Beta
  • Gamma racine
    • Terme Gamma 1
    • Term Gamma 2

Comment filtrer la vue pour n'afficher que les termes racine du vocabulaire? Actuellement, ma vue affiche les termes racine ainsi que les enfants (Terme * *)

À partir de là, je voudrais passer l'argument "Root Alpha" (ou son contenu, ou quoi que ce soit à partir d'un contexte), puis le filtrer uniquement sur les "enfants directs de Root Alpha". (Terme Alpha *). Un filtrage plus approfondi que cela serait un bonus.

Je peux le faire fonctionner si je mets tous mes termes en un seul terme racine pour que le vocabulaire devienne:

  • True Root
    • Racine Alpha
      • Terme Alpha 1
      • Terme Alpha 2
        • Subterm Alpha 1
    • Root Beta
    • Gamma racine
      • Terme Gamma 1
      • Term Gamma 2

Je ne sais pas quelle structure de vocabulaire est la plus correcte, l'écriture de cela m'a fait réaliser que j'avais une lecture à faire en plus de comprendre cela avec des vues.

15
Phizes

Pour afficher uniquement les termes racine, j'ai une solution qui fera sûrement quelqu'un facepalm (au moins je l'ai fait):

  1. Ajoutez un filtre contextuel à votre vue de taxonomie
  2. Sélectionnez Terme de taxonomie: terme parent .

    Configurez-le comme ceci: Lorsqu'une valeur de filtre n'est pas disponible : Fournissez la valeur par défaut - Valeur fixe . Définissez la valeur sur .

Ouais, c'est tout. Les termes sans parent ont 0 ici. Voir la description du champ parent de la table taxonomy_term_hierarchy:

Clé primaire: {taxonomy_term_data} .tid du parent du terme. 0 indique aucun parent.

13
Scorchio

si vous avez une structure de taxonomie statique, vous pouvez filtrer à l'aide de filter criterion: Content: Has taxonomy terms (with depth) à cet endroit, vous pouvez sélectionner uniquement les termes racine à filtrer:

filter criterion: Content: Has taxonomy terms (with depth)

J'espère que les informations seront utiles.

2
cigotete

Vous pouvez également le faire avec un simple filtre et une structure de taxonomie non statique:

  1. Ajouter un critère de filtre: Terme de taxonomie: id parent
  2. Sélectionnez l'opérateur "Est égal à" et remplissez la valeur avec "NULL"

enter image description here

Il n'affichera que les termes racine de votre taxonomie et fonctionnera toujours si vous modifiez la structure de la taxonomie ultérieurement ...

1
scandel

Vous pouvez le sélectionner avec WHERE parent = 0 En utilisant db_query() dans votre page.

0
Ahmed