Drupal sam w sobie dostarcza podstawowe mechanizmy wyszukiwania treści. Przy każdym wywołaniu cron'a (lub pseudo-crona, odpalanego przy odwiedzinach użytkowników, jeśli Wasz hosting nie ma dostępu do cron taba) Drupal indeksuje dodane treści. Następnie po użyciu wyszukiwarki sprawdzane są dodane treści pod kątem występowania wpisanych fraz. Cały mechanizm nie jest zbyt skomplikowany - przykład działania podstawowego wyszukiwania.

Bywa jednak, że podstawowe mechanizmy wyszukiwania nie odpowiadają konkretnym zapotrzebowaniom. Może się to dziać z kilku powodów, podstawowymi są wydajność lub brak możliwości filtrowania. Chciałabym zaprezentować zatem rozszerzenie mechanizmu filtrowania wpisów. Za pomocą nieśmiertelnego modułu Views.

Oczywiście ze względów wydajnościowych sam moduł Views nie poradzi sobie na dużych witrynach. Z tego też względu wymyślono inne mechanizmy poprawiające nieco możliwości drupalowych systemów.

Definiowanie podstawowego widoku

Odnosząc się do mojego poprzedniego wpisu przedstawiającego podstawy Viewsów należy stworzyć widok typu "Zawartość" z wybranych "Typów zawartości" oraz dodać typ wyświetlania "Strona" w postaci "Listy niesformatowanej" stworzonej z "Zajawek".
Następnie należy zapisać widok korzystając z opcji "Kontynuuj edycję" ("Save and edit").

Dodatkowa konfiguracja - pierwszy filtr

Aby stworzyć viewsową wyszukiwarkę należy skorzystać z Filtrów.

Najogólniej każdy filtr ma za zadanie zawężać wyniki prezentowane przez widok do konkretnych dopasowań. Przyjmując, że Viewsy są sposobem zapytań do drupalowej bazy danych ("niewielkie" uproszczenie), to filtry obrazują warunki WHERE. To co ważne, to fakt, że pomiędzy warunkami mamy operator AND - zostaną wyświetlone tylko te treści, które spełniają wszystkie warunki.

Aby edytować istniejący już filtr należy kliknąć na jego nazwę.


Podstawowy widok edycji Viewsów.

Widok edycji filtra.

Jak widać filtry nie tylko pozwalają ograniczyć zestaw wyników do wartości z góry zadeklarowanych, dają również opcję udostępniania filtra użytkownikom, pozwalając im własnoręcznie zmieniać filtrowanie zawężając wyniki wyszukiwania prezentowane przez widok.


Widok edycji filtra.

W przypadku filtra dotyczącego rodzajów zawartości warto omówić trzy opcje.

Element 2. na obrazku prezentuje trzy checkboksy:

  1. Dozwolone wybieranie wielu opcji
  2. Pamiętanie ostatniego wyboru - przetrzymywanie w sesji ostatniego wyboru użytkownika; bez tego oczywiście wszystkie filtry po ponownym wejściu na stronę wyszukiwarki zostaną zresetowane
  3. Ograniczenie listy do wybranych elementów - domyślnie użytkownicy mogą wybierać z całej puli dostępnych typów zawartości; w momencie, gdy wybierzemy opcję ograniczenia należy pamiętać, aby w okienku 1. zaznaczyć typy, które użytkownicy mogą wybierac

Filtrowanie po tytule

Z tego względu, że jeden filtr nie wygląda zachęcająco dodajmy drugi, który wprowadza więcej opcji znanych z wyszukiwarek.
Tym elementem będzie możliwość zawężania wyników wyszukiwania ze względu na słowa występujące w tytule wpisów.


Aby dodać nowy filtr wystarczy skorzystać ze sporo mówiącego przycisku "Dodaj".

Ze wszystkich dostępnych filtrów wybieram "Zawartość: Tytuł".

Następnie wystarczy udostępnić użytkownikom możliwość zmiany filtra, dokładnie jak poprzednio.

Filtr dotyczący elementów niepredefiniowanych (tych, które nie mają skończonej, wcześniej zdefiniowanej liczby elementów i nie można ich wyświetlić za pomocą np. selecta) ma nieco więcej opcji dotyczących operatorów.

O ile na zrzucie poniżej wybrany jest operator zawiera (co oczywiście wyświetli każdą treść mającą w tytule wpisaną przez nas frazę), o tyle bogactwo jest o wiele większe. Wartość wpisana przez nas w drugim oknie ustawi się jako domyślny tekst, po którym filtrowany będzie Views.
Gwoli ścisłości - filtry "zawieralności" są oczywiście o wiele mniej wydajne niż ścisłych dopasowań.

Ze względu na możliwość przetestowania innych operatorów udostępniłam takową opcję. Zachęcam do przeklikania i sprawdzenia, jak zachowuje się dany operator.

Przykład wyszukiwarki

Podsumowanie

W ten sposób za pomocą kilku kliknięć została stworzona strona prezentująca dostępną w serwisie treść, pozwalającą jednocześnie na filtrowanie jej przez użytkowników. Filtrów tych można tworzyć oczywiście o wiele więcej, tak, aby dostosować funkcjonalność do własnych zapotrzebowań.

Natomiast szybkość wykonania takiej dodatkowej wyszukiwarki jest niewątpliwie jej największym plusem. Dzięki temu możemy prezentować najróżniejszą treść zgromadzoną w serwisie praktycznie bez doświadczenia programistycznego.

Dla bardziej dociekliwych - mechanizmy autopodpowiadania również istnieją. Jak i parę innych ciekawych cegiełek, które można dołożyć, aby jeszcze bardziej uatrakcyjnić takie widoki.

Dodaj komentarz