Como combinar visualizações de filtro exposto com pesquisa?

18

Meu cliente me pediu um único campo, que funcionaria de duas maneiras:

  • Filtro de preenchimento automático com base na taxonomia.
  • Se o visitante do site digitar algo que não esteja na taxonomia, a pesquisa de texto completo deve ser realizada no corpo do conteúdo e a mensagem informativa apropriada exibida.

Dessa forma, se o usuário digitar o nome da categoria, ele receberá os nós escolhidos a dedo e, se houver qualquer outra coisa, ele obterá pelo menos algum conteúdo.

Separadamente, é fácil. Mas como combinar esses comportamentos em um campo?

Mołot
fonte
11
Separadamente, é fácil, com qual módulo você trabalha para ter o preenchimento automático com base na taxonomia? Para mim, o truque será um pequeno código javascript que irá verificar se não há nenhuma mudança resultado da ação botão enviar por isso vai redirecionar para / search / yourkeywordsearch
sel_space

Respostas:

17

O módulo Finder fará exatamente o seu requisito. Você pode selecionar o termo da taxonomia, bem como o título do nó, corpo, campos, etc. etc para realizar a pesquisa.

Existem várias maneiras de reunir a funcionalidade do localizador para obter o tipo de formulário de pesquisa necessário. Existem também muitos ganchos e funções de tema, permitindo a personalização completa da saída do localizador.

É utilizado para estes fins:

As a search tool to find a group of nodes or users.
As a way to navigate to a specific node or user page that matches criteria.
As an alternative to exposed filters for a Views module display.

Veja a captura de tela abaixo: No campo localizador, você pode escolher termos de taxonomia e corpo do nó para realizar a pesquisa no campo exposto de preenchimento automático, até mesmo a pesquisa de várias palavras-chave, separada por vírgula. Leia a documentação do Finder para obter mais informações.

insira a descrição da imagem aqui

Depois de adicionar o elemento, você pode selecionar os campos do localizador na lista, mantenha pressionado o botão

Tecla Ctrl para selecionar o termo de taxonomia , bem como Nó: Corpo

Bala
fonte
É um pouco antigo e precisa de co-mantenedores, mas parece que preenche todas as minhas necessidades. Será necessário testá-lo, mas até agora parece ser a resposta perfeita para o meu caso de uso.
Mołot 11/06
Parece que funciona. Vou precisar ajustá-lo um pouco, mas ele pode fazer o trabalho.
Mołot
3

Estou escrevendo sem testar, mas tenho a sensação de que você pode usá-lo pelo menos como ponto de partida.

Usando o módulo Views Field View , você pode incorporar uma view em outra view, e também permite passar um filtro contextual para a view incorporada.

No seu caso, eu criaria apenas outra exibição que possui um filtro contextual que pesquisa o filtro fornecido. Não tenho certeza sobre esse ponto, se você pode fazer uma pesquisa por filtros contextuais, mas vi algumas opções como 'Pesquisa: Termo' etc.

Dito isto, se você puder realizar esse primeiro passo de qualquer maneira, o resto é relativamente simples.

Na sua visualização original, você adiciona um 'Comportamento sem resultados' na seção de opções avançadas, adiciona uma 'Global: View (visualização do campo Views)', seleciona a visualização criada anteriormente e passa o token para o filtro exposto como filtro contextual para a visualização incorporada (você pode encontrar os tokens na lista para os padrões de substituição).

Елин Й.
fonte
11
Idéia interessante, mas não consegui fazê-la funcionar. Muita configuração e, em seguida, Bala postou o módulo pronto e eu perdi meu coração.
Mołot
Sim, eu não conhecia o módulo Finder . Eu acho que vou usá-lo em meus projetos também. Ficaria feliz se você nos informar com um comentário, se o Finder fizer o que você espera.
Елин Й.
3

Passei pelas discussões acima e, possivelmente, o cenário abaixo pode abordar a postagem 'Como combinar visualizações de filtro exposto com pesquisa?'. A implementação exigirá alguma codificação personalizada.

  1. Considere o URL http://www.seedandspark.com/studio .
  2. Aqui, no lado esquerdo, você tem um formulário de pesquisa. Este é um formulário personalizado ( form_id = 'sns_studio_form_filter').
  3. Na região de conteúdo, temos de 7 a 8 blocos de visualização e todos geram informações dinâmicas (apenas para usuários anônimos, 3 blocos)
  4. Agora, temos filtros expostos ativados em cada bloco de exibição.
  5. Mantivemos os filtros expostos ocultos
  6. Mantemos uma nota das estruturas de URL quando usamos os filtros de exibição exposta
  7. Em nosso manipulador de envio de formulário personalizado, coletamos informações dos campos do formulário personalizado e geramos o URL semelhante ao observado na etapa 6. E, finalmente, redirecionamos para esse URL. Será assim no manipulador de envio:

    $form_state ['redirect'] = array(
      $path, 
      array(
        'query' => $params // $params is the url
      )
    );
    drupal_redirect_form( $form_state );

Portanto, agora que a etapa 7 é executada, todos os blocos de visualização serão filtrados com base nos critérios de filtro que você definiu.

Espero que ajude.

dhrubaj
fonte
3

Há também outra maneira de fazer isso: você pode experimentar o módulo Concat Field . Basicamente, você adiciona o campo aos tipos de conteúdo e pode usar o filtro por esse campo como pesquisa.

É bem parecido com o Finder, concordo, mas acho que ainda vale a pena mencionar.

32i
fonte