Depois de navegar na net e no SE por um tempo, parece-me que não há uma boa solução para combinar 2 contextual filters
com OR (em vez do AND padrão).
Esta publicação menciona um hack do PHP e esta publicação possui alguns links para um problema informando uma alteração recente nas visualizações 7.x-3.1 . Também menciona o uso hook_views_query_alter(&$view, &$query)
para modificar a exibição.
Alguém tem um exemplo de trabalho ou uma solução melhor?
Respostas:
Experimente o patch nesta edição: Puxe o valor do filtro de um argumento
Permite passar o valor do filtro contextual para o "filtro normal". Lá você pode fazer suas condições avançadas.
fonte
O segmento de comentários iniciado aqui descreve uma solução alternativa eficaz. O MotoTribe estava vinculado ao mesmo segmento, mas no momento da sua pergunta, não havia exemplo de trabalho nessa página. Agora existe o seguinte:
No seu módulo, implemente
hook_views_api()
:Em seguida, adicione um novo arquivo ao seu módulo chamado MODULENAME.views.inc e implemente
hook_views_query_alter()
:Também esteja ciente desta advertência:
Aparentemente, o filtro "Conteúdo: publicado (Sim)" que acompanha todas as visualizações é considerado parte do mesmo grupo de filtros que os filtros contextuais (grupo 0). Portanto, para fazer minha exibição exibir apenas nós publicados que pertencem a qualquer um dos grupos especificados por filtros contextuais (publicado AND (arg1 OU arg2 OU ...)), tive que mover o "Conteúdo: Publicado (Sim)" para um novo grupo de filtros (usando a caixa de diálogo "E / ou reorganizar"). Observe que a interface do usuário não exibiu o filtro "Conteúdo: publicado (Sim)" de maneira diferente depois que eu o mudei para um novo grupo (não havia outros grupos), mas no objeto de consulta passado para
hook_views_query_alter()
ele foi movido do grupo 0 para o grupo 1, fazendo com que o código nas funções acima não o afete mais.fonte
Existe um módulo que altera os manipuladores de Views para tornar os filtros contextuais a serem usados com OR em vez de AND: Views Filters Contextual Filters OR
fonte
A situação com filtros contextuais e grupos de filtros é realmente sombria. Aqui está o tópico Do sobre este tópico, que tem a mesma solução conforme declarada por @CoreDumpError.
https://drupal.org/node/1451218
Além disso, aqui está um módulo que pode ajudar a resolver filtros contextuais e expostos em conflito ... Views Filter Harmonizer
fonte