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?


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


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).


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.


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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.