¿Cómo filtro solo los términos raíz en un vocabulario en una vista?

15

Tengo un vocabulario estructurado así:

  • Root Alpha
    • Término Alfa 1
    • Término Alfa 2
      • Subterm Alpha 1
  • Root Beta
  • Raíz Gamma
    • Término Gamma 1
    • Término Gamma 2

¿Cómo filtro la vista para mostrar solo los términos raíz del vocabulario? Actualmente mi vista muestra los términos raíz, así como los hijos (Término * *)

En adelante, me gustaría pasar el argumento 'Root Alpha' (o su tid, o lo que sea de un contexto) y luego hacer que se filtre solo a los hijos directos de 'Root Alpha. (Término alfa *). Filtrar a una profundidad más allá de eso sería una ventaja.

Puedo hacer que funcione si pongo todos mis términos en un término raíz para que el vocabulario se convierta en:

  • Raíz verdadera
    • Root Alpha
      • Término Alfa 1
      • Término Alfa 2
        • Subterm Alpha 1
    • Root Beta
    • Raíz Gamma
      • Término Gamma 1
      • Término Gamma 2

No estoy seguro de qué estructura de vocabulario es más correcta, escribir esto me hizo darme cuenta de que tengo algo de lectura aparte de resolver esto con puntos de vista.

Phizes
fuente

Respuestas:

13

Para mostrar solo los términos raíz, tengo una solución que seguramente hará que alguien se enfade (al menos lo hice):

  1. Agregue un filtro contextual a su vista de taxonomía
  2. Seleccione el término Taxonomía: término padre .

    Configúrelo así: cuando un valor de filtro no está disponible : Proporcione el valor predeterminado - Valor fijo . Establezca el valor en 0 .

Si, eso es todo. Los términos sin padre tienen 0 aquí. Consulte la descripción del campo padre de la tabla taxonomy_term_hierarchy:

Clave primaria: el {taxonomy_term_data} .tid del término padre. 0 indica que no hay padre.

Escorchio
fuente
Muchas gracias, definitivamente me palmeé por este. Solo como una nota si alguien se quedara atascado con esto, no puede especificar 'Término de taxonomía' como el validador al hacer esto, ya que no hay término con tid 0.
Premios
2

Si tiene una estructura de taxonomía estática, puede filtrar usando y filter criterion: Content: Has taxonomy terms (with depth)luego en este lugar puede seleccionar solo los términos raíz para filtrar:

Criterio de filtro: Contenido: Tiene términos de taxonomía (con profundidad)

Espero que la información sea útil.

cigotete
fuente
La estructura de la taxonomía no será estática, y esto no me permitiría pasar un argumento y luego filtrar a los hijos de un término raíz.
Premios
@ moon.watcher: ¿Cómo puedo usar el término de taxonomía (con profundidad)? Estoy seleccionando solo los padres pero también aparecen los hijos.
sokratis
1

También puede hacerlo con un filtro simple y una estructura de taxonomía no estática:

  1. Agregue un criterio de filtro: Término de taxonomía: ID principal
  2. Seleccione el operador "Es igual a" y complete el valor con "NULL"

ingrese la descripción de la imagen aquí

Solo mostrará los términos raíz de su taxonomía, y seguirá funcionando si cambia la estructura de la taxonomía más adelante ...

Scandel
fuente
Sí, @scandel manejaría una estructura de taxonomía no estática, pero no manejaría ir más abajo en el árbol como se establece en la pregunta, la respuesta aceptada sí.
Phises
0

Puede seleccionarlo WHERE parent = 0usando db_query()en su página.

Ahmed
fuente
No estoy seguro de lo que quiere decir con "en su página", ¿por favor explique? Además, no estoy ejecutando la consulta yo mismo, las vistas sí, así que ¿no tendría que alterar la consulta?
Phizes