Nome do termo de taxonomia como filtro contextual para visualização

18

No D7, consegui filtrar uma visualização de acordo com um nome de termo de taxonomia retirado da URL. Um exemplo seria este URL

http://www.gbyte.co/tags/drupal-planet/rss.xml

"drupal-planet" seria convertido no termo de taxonomia ID, que filtraria os resultados da exibição de acordo.

Agora eu configurei uma visualização D8 correspondente com um filtro contextual "Conteúdo: Tags (tags_campo)", sendo as tags_campo o campo da taxonomia. No entanto, a visualização D8 só mostrará resultados quando eu passar o ID do termo real para o URL desta forma:

http://www.gbyte.co/tags/9/rss.xml

Eu gostaria que ele também trabalhasse com o termo name como D7. A funcionalidade está faltando ou preciso configurar a exibição de maneira diferente?

gbyte.co
fonte
Alguma novidade sobre isso? Estou com o mesmo problema
jeroen

Respostas:

20

O nome do termo convertido em filtro de ID do termo parece estar ausente nas visualizações D8.

Uma solução alternativa para o construtor de sites é adicionar um relacionamento , termos de taxonomia no nó e, em seguida, adicionar um filtro de termo de taxonomia: nome aos filtros contextuais usando o relacionamento mencionado acima. Marque a caixa de seleção Especificar critérios de validação , defina seu Validador como nome do termo de taxonomia e marque a taxonomia apropriada para filtrar.

Shawn Conn
fonte
12
A armadilha do construtor de sites no D8 inclui a interface do usuário do filtro contextual: o título do filtro contextual é 'Nome' e a categoria é 'Termo de taxonomia'. A pesquisa de 'taxonomia' falhará ao listar esse filtro, pois somente o título e a descrição são pesquisados, não a categoria.
KeithM
1
Além disso, você pode substituir o título com {{ arguments.name }}nas configurações do filtro contextual.
cptstarling
3

Apenas para fins de conclusão, no momento em que escrevi a pergunta que consegui solucionar esse problema, converti o nome do termo de taxonomia do URL para um ID do termo em views_hook_pre_view () e usei-o como entrada para o filtro contextual que aceita códigos de taxonomia.

Aqui está o código para o gancho de visualizações:

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}
gbyte.co
fonte
2

Para expandir a resposta de Shawn Conn:

  • Na configuração da visualização, em Avançado -> Relacionamentos, clique em 'Adicionar'
  • Agora selecione 'Termos de taxonomia no nó'
  • Na próxima tela, escolha o vocabulário 'tags' e exija o relacionamento.
  • Agora, em Avançado -> Filtros contextuais, clique em 'Adicionar'
  • Em "Quando o filtro NÃO estiver disponível", escolha "Fornecer valor padrão", "Valor bruto do URL". Selecione quaisquer outras opções adequadas às suas necessidades.
  • Em 'Quando o filtro estiver disponível ou for fornecido um valor padrão', escolha 'Especificar critérios de validação' e selecione 'Nome do termo de taxonomia' para o validador. Escolha o vocabulário 'tags' e clique em aplicar.

Espero que ajude!

axlroach
fonte
1

Não sei se você ainda tem esse problema, mas consegui criar um relacionamento para "Termos de taxonomia no nó" usando o vocabulário de taxonomia desejado e, em seguida, criar um filtro contextual usando esse relacionamento para "Termo de taxonomia: Nome", que permite que você validar com base no nome e não no TID.

Todd Bloom
fonte
2
Eu tenho o mesmo problema descrito nesta pergunta, você pode ser mais claro. Eu já defini um relacionamento, mas o filtro contextual só funciona com tid em vez do nome do termo. Claro que estamos falando de D8. Desde já, obrigado.
Vagner
1

@kiethm forneceu a maneira correta de abordar isso. Nos Filtros Contextuais, você precisa selecionar 'Nome' e não 'ID do Termo de Taxonomia' e defina seus critérios de validação para usar 'Nome do Termo de Taxonomia' .

esquilo-chamas
fonte
1

Ei, eu tenho procurado por esta resposta por um tempo. Para qualquer pessoa como eu procurando como fazê-lo funcionar, eu entrei no meu sucesso, em parte a partir daqui e nos resultados do drupal.org e depois também no seguinte: http://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Estou usando o Drupal 8 e o zircão. Sou novo em folha e posso usar os termos errados. Eu queria criar links de imagem contextual no "Painel primeira col 1", com base na categoria da página em que alguém está. O que fiz foi ir para Estrutura> Visualizações> Carrossel (a exibição que contém as imagens nessa região de bloco)> Avançado> Adicionar por filtros contextuais> Possui ID do termo de taxonomia> selecione em Fornecer valor padrão: ID do termo de taxonomia da URL (que fez não faz sentido para mim, mas seja o que for)> marquei as três caixas: Carregar filtro padrão da página de termos, Carregar filtro padrão da página de nós, isso é bom para blocos de taxonomia relacionados, Limitar termos por vocabulário. Em seguida, em Vocabulários, verifiquei Categorias.

PHEW! Finalmente! Obrigado a todos aqui por me apontarem na direção certa! Eu não conseguia explicar por que funciona totalmente, mas seja o que for, funciona e continuarei sendo empregado.

seizethecarp
fonte
1

Eu escrevi um pequeno módulo para restaurar a funcionalidade ausente e fazer com que isso funcione corretamente novamente:

https://www.drupal.org/project/views_taxonomy_term_name_into_id

Ele adiciona novamente o validador de argumento 'Converter nome do termo em ID' para termos de taxonomia usados ​​em 'filtros contextuais' no Views. Veja a página do projeto para mais informações e instruções.

Aproveite, -Derek (dww)

Derek
fonte
0

Você pode fazer isso adicionando conteúdo: possui ID do termo de taxonomia no filtro contextual e, em seguida, pode usar a taxonomia no contexto, ajustando os critérios do filtro

insira a descrição da imagem aqui

Adi
fonte
Você capturou uma captura de tela de uma instalação do D7. No D8, não há validador "Termo de taxonomia". Em vez disso, existe "ID do termo de taxonomia" ou "Nome do termo de taxonomia", ambos os quais não aceitam o nome da taxonomia do URL. Eles aceitam apenas o ID.
gbyte.co
0

Consegui isso no Drupal-8 usando filtro contextual: de "termo da taxonomia: nome"

Em seguida, forneça o valor padrão Tipo ID do termo de taxonomia do URL

Em seguida, especificando os seguintes critérios de validação:

insira a descrição da imagem aqui

Rimi B
fonte