Jak połączyć filtr odsłonięty z wyszukiwaniem?

18

Mój klient poprosił mnie o jedno pole, które działałoby na 2 sposoby:

  • Filtr autouzupełniania oparty na taksonomii.
  • Jeśli odwiedzający witrynę wprowadzi coś, czego nie ma w taksonomii, należy przeszukać pełny tekst na treści i wyświetlić odpowiedni komunikat informacyjny.

W ten sposób, jeśli użytkownik wpisze nazwę kategorii, otrzyma ręcznie wybrane węzły na liście, a jeśli cokolwiek innego, dostanie przynajmniej trochę treści.

Osobno jest to łatwe. Ale jak połączyć te zachowania w jednym polu?

Mołot
źródło
1
Osobno jest to łatwe, z którym modułem współpracujesz, aby mieć autouzupełnianie oparte na taksonomii? Dla mnie sztuczką będzie mały kod javascript, który sprawdzi, czy nie ma wyniku, zmień akcję przycisku Prześlij, aby przekierować do / search / yourkeywordsearch
sel_space

Odpowiedzi:

17

Moduł Findera dokładnie spełni twoje wymagania. Możesz wybrać termin taksonomii, a także tytuł węzła, treść, pola itp., Aby przeprowadzić wyszukiwanie.

Istnieje wiele sposobów na połączenie funkcjonalności wyszukiwarki w celu uzyskania potrzebnego formularza wyszukiwania. Istnieje również wiele zaczepów i funkcji motywu, pozwalających na pełną personalizację wyników wyszukiwania.

Służy do tych celów:

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.

Zobacz poniższy zrzut ekranu. W polu wyszukiwarki możesz wybrać warunki taksonomii, a także treść węzła, aby przeprowadzić wyszukiwanie w polu autouzupełniania, nawet jeśli możesz przeprowadzić wyszukiwanie wielu słów kluczowych oddzielonych przecinkiem. Więcej informacji znajdziesz w dokumentacji Findera .

wprowadź opis zdjęcia tutaj

Po dodaniu elementu możesz wybrać pola wyszukiwarki z listy, przytrzymaj

Klawisz Ctrl, aby wybrać termin taksonomii, a także Node: Body

Bala
źródło
Jest trochę stary i potrzebuje współ-opiekunów, ale wygląda na to, że spełnia wszystkie moje potrzeby. Będę musiał to przetestować, ale jak dotąd wydaje się to idealną odpowiedzią na mój przypadek użycia.
Mołot
Wydaje się, że to działa. Będę musiał go trochę dostroić, ale da radę.
Mołot
3

Piszę bez testowania, ale mam wrażenie, że możesz użyć go przynajmniej jako punktu wyjścia.

Za pomocą modułu Widoki Widok pola można osadzić widok w innym widoku, a także pozwala przekazać filtr kontekstowy do widoku osadzonego.

W twoim przypadku stworzyłbym tylko inny widok z filtrem kontekstowym, który przeszukuje dany filtr. Nie jestem pewien co do tego, czy możesz przeprowadzić wyszukiwanie za pomocą filtrów kontekstowych, ale widziałem kilka opcji, takich jak „Szukaj: Termin” itp.

To powiedziawszy, jeśli mimo wszystko uda ci się osiągnąć ten pierwszy krok, reszta jest stosunkowo prosta.

W oryginalnym widoku dodajesz „Brak zachowania wyników” w sekcji opcji zaawansowanych i dodajesz „Globalny: widok (widok pola Widoki)” i wybierasz wcześniej utworzony widok, i przekazujesz token odsłoniętego filtra jako filtr kontekstowy do osadzonego widoku (tokeny można znaleźć na liście wzorów zastępczych).

Елин Й.
źródło
1
Ciekawy pomysł, ale nie mogłem go uruchomić. Wiele konfiguracji, a potem Bala opublikował gotowy moduł i straciłem serce.
Mołot
Tak, nie wiedziałem o module Findera . Myślę, że wykorzystam go również w moich projektach. Byłbym zadowolony, jeśli poinformujesz nas o tym komentarzem, jeśli Finder zrobi to, czego oczekujesz.
Елин Й.
3

Przeszedłem powyższe dyskusje i być może w poniższym scenariuszu można znaleźć odpowiedź na post „Jak połączyć filtr odsłonięty z wyszukiwaniem?”. Implementacja będzie wymagać niestandardowego kodowania.

  1. Rozważ adres URL http://www.seedandspark.com/studio .
  2. Tutaj, po lewej stronie, masz formularz wyszukiwania. To jest formularz niestandardowy ( form_id = 'sns_studio_form_filter').
  3. W obszarze treści mamy około 7-8 bloków wyświetlania i wszystkie generują dynamiczne informacje (dla anonimowych użytkowników tylko 3 bloki)
  4. Teraz udostępniliśmy filtry włączone dla każdego bloku widoku.
  5. Ukryliśmy te odsłonięte filtry
  6. Zanotowaliśmy struktury adresów URL, gdy korzystamy z filtrów narażonych na widok
  7. W naszym module obsługi przesyłania formularzy niestandardowych pobieramy informacje z pól formularza niestandardowego i generujemy podobny adres URL, jak odnotowaliśmy w kroku 6. I wreszcie przekierowujemy do tego adresu URL. Będzie tak w module obsługi przesyłania:

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

Tak więc teraz, po wykonaniu kroku 7, wszystkie bloki widoku zostaną przefiltrowane na podstawie ustawionych kryteriów filtrowania.

Mam nadzieję, że to pomoże.

dhrubaj
źródło
3

Jest też inny sposób: możesz wypróbować moduł Concat Field . Zasadniczo dodajesz pole do typów treści, a następnie możesz użyć filtru według tego pola jako wyszukiwania.

Zgadzam się, że jest dość podobny do Findera, ale myślę, że nadal warto o tym wspomnieć.

32i
źródło