Como filtrar apenas os termos raiz de um vocabulário em uma exibição?

15

Eu tenho um vocabulário estruturado da seguinte forma:

  • Root Alpha
    • Termo Alfa 1
    • Termo Alfa 2
      • Alpha Subterm 1
  • Root Beta
  • Root Gamma
    • Termo Gamma 1
    • Termo Gamma 2

Como filtrar a exibição para mostrar apenas os termos raiz do vocabulário? Atualmente, minha visão está exibindo os termos raiz e os filhos (Termo * *)

No futuro, eu gostaria de passar o argumento 'Root Alpha' (ou sua maré, ou o que for de um contexto) e depois filtrá-lo apenas para os filhos diretos do 'Root Alpha'. (Termo Alfa *). Filtrar a uma profundidade além disso seria um bônus.

Posso fazê-lo funcionar se eu colocar todos os meus termos em um termo raiz para que o vocabulário se torne:

  • Raiz verdadeira
    • Root Alpha
      • Termo Alfa 1
      • Termo Alfa 2
        • Alpha Subterm 1
    • Root Beta
    • Root Gamma
      • Termo Gamma 1
      • Termo Gamma 2

Não tenho certeza de qual estrutura de vocabulário é mais correta, escrever isso me fez perceber que tenho algumas leituras a fazer além de descobrir isso com visualizações.

Phizes
fonte

Respostas:

13

Por exibir apenas os termos raiz, eu tenho uma solução que certamente fará alguém ficar chateado (pelo menos eu fiz isso):

  1. Adicione um filtro contextual à sua visualização de taxonomia
  2. Selecione Termo de taxonomia: termo pai .

    Configure da seguinte maneira: Quando um valor de filtro não estiver disponível : Forneça o valor padrão - Valor fixo . Defina o valor como 0 .

Sim, é tudo. Termos sem pai têm 0 aqui. Consulte a descrição do campo pai da tabela taxonomy_term_hierarchy:

Chave primária: o {taxonomy_term_data} .tid do pai do termo. 0 indica nenhum pai.

Scorchio
fonte
Muito obrigado, definitivamente me facepalmed por este. Apenas como uma observação, se alguém se prender a isso, você não pode especificar 'Termo de taxonomia' como validador ao fazer isso, pois não há termo com o valor 0. #
Phizes
2

se você tiver uma estrutura de taxonomia estática, poderá filtrar usando; filter criterion: Content: Has taxonomy terms (with depth)nesse local, poderá selecionar apenas os termos raiz para filtrar:

critério de filtro: Conteúdo: Possui termos de taxonomia (com profundidade)

Espero que a informação seja útil.

cigotete
fonte
A estrutura da taxonomia não será estática e isso não me permitirá passar um argumento e depois filtrar para os filhos de um termo raiz.
Phizes
@ moon.watcher: Como posso usar o termo taxonomia (com profundidade)? Estou selecionando apenas os pais, mas os filhos também aparecem.
Sokratis
1

Você também pode fazer isso com um filtro simples e uma estrutura de taxonomia não estática:

  1. Adicione um critério de filtro: Termo de taxonomia: ID do pai
  2. Selecione o operador "É igual a" e preencha o valor com "NULL"

insira a descrição da imagem aqui

Ele exibirá apenas os termos raiz da sua taxonomia e continuará funcionando se você alterar a estrutura da taxonomia posteriormente ...

escândalo
fonte
Sim, o @scandel lidaria com uma estrutura de taxonomia não estática, mas não trataria de ir mais longe na árvore, conforme descrito na pergunta, a resposta aceita.
Phizes
0

Você pode selecioná-lo WHERE parent = 0usando db_query()na sua página.

Ahmed
fonte
Não sei o que você quer dizer com "na sua página", por favor, explique? Também não estou executando a consulta, visualizações é, então não precisaria alterar a consulta?
Phizes