
Ostatnio chciałem stworzyć mały katalog firm, usług i ogłoszeń dla swojego miasteczka. Co prawda wykonałem go już w stu procentach, ale brakuje mi odwagi na jego publikację. Chciałem, aby serwis wyglądał jak typowa wyszukiwarka, na której nic poza nią i wynikami wyszukiwania nie będzie. Postanowiłem więc poszukać dobrej wtyczki, która da możliwość wyszukiwania wyników po tytułach, treści czy tagach. Chciałem również, aby użytkownik miał możliwość wybrania w jakiej kategorii chce przeszukiwać informacje.
Znalazłem kilkanaście wtyczek, które dawały nadzieję na rozwiązanie problemu. Często jednak wybieranie kategorii polegało na rozwinięciu listy, co wydawało mi się rozwiązaniem mało estetycznym i nie dawało możliwości wyboru wyszukiwania np. w dwóch czy trzech kategoriach. To właśnie wtedy wpadłem na stronę „thepiratebay.org”, na której znajduje się wyszukiwarka idealna na moje potrzeby. Choć to nieładnie z mojej strony, pogrzebałem w kodzie serwisu i znalazłem rozwiązanie, które przeniosłem do realiów WordPressa.
Dzięki tym rozwiązaniom wybieranie kategorii działa na zasadzie zaznaczenia okienka checkbox. Wybór znajduje się tuż pod polem wyszukiwania, więc nie dość, że wygląda to ładnie, to jeszcze działa wyśmienicie. Wyszukiwanie z automatu ustawione jest na wszystkie kategorie, ale możemy wybrać jedną, dwie itd.
Poniżej możecie zobaczyć zrzut ekranu wyszukiwarki z mojego katalogu

Wszystko musimy jednak ustawić ręcznie, ale nie jest to wielce ciężki proces. Między head w pliku header.php musimy wstawić następujący kod:
<script type="text/javascript">
function setAll()
{
document.forms['q'].elements['1'].checked = false;
document.forms['q'].elements['2'].checked = false;
document.forms['q'].elements['3'].checked = false;
document.forms['q'].elements['4'].checked = false;
}
function rmAll() { document.forms['q'].elements['all'].checked = false; }
</script>
Na wyżej wymienionym przykładzie widać 4 możliwości wyszukiwania. Możesz dodać kolejną dodając linijkę:
document.forms['q'].elements['4'].checked = false;
Zmień zaznaczony na czerwono numer tak, aby nie powtarzał się. Oczywiście nie muszą to być liczby, możesz wstawić odpowiednie słowo itd.
<form name="q" method="get" id="searchform" action="<?php bloginfo('url'); ?>/"><input type="text" size=61 value="<?php the_search_query(); ?>" name="s" id="s" /><br><br>
<label for="all" title="Wszystkie"><input id=all type="checkbox" id="all" onclick="javascript:setAll();" checked="checked" />Wszystkie</label>
<label for="1" title="blog"><input name="cat" value="28" id="1" onclick="javascript:rmAll();" type="checkbox" />Blog</label>
<label for="2" title="media"><input name="cat" value="31" id="2" onclick="javascript:rmAll();" type="checkbox"/>Media</label>
<label for="3" title="sport"><input name="cat" value="29" id="3" onclick="javascript:rmAll();" type="checkbox"/>Sport</label>
<label for="4" title="komputery"><input name="cat" value="30" id="4" onclick="javascript:rmAll();" type="checkbox"/>Komputery</label>
<input type="submit" id="searchsubmit" value="<?php _e('Przeszukaj Katalog'); ?>" />
<script type="text/javascript">document.q.q.focus();</script>
</form>
Na poniższym przykładzie zwróćcie uwagę na pewne zależności między kodem w searchform.php, a kodem javascript w header.php
<label for="1" title="blog"><input name="cat" value="28" id="1" onclick="javascript:rmAll();" type="checkbox" />Blog</label>for=”1″ oraz id=”1″ muszą pokrywać się z numerem w kodzie javascript
Zwróć również uwagę na pole value=”numer”, w którym znajduje się numer odpowiadający numerowi id kategorii. Podanie tego numeru jest warunkiem wyszukiwania w danej kategorii.
Na koniec tylko dodam, że mając już taką wyszukiwarkę warto pobrać jeszcze wtyczkę, która da możliwość wyszukiwania również po tagach, komentarzach itd. Wystarczy ją pobrać, wgrać do folderu z wtyczkami i uruchomić. Search Everything
I to by było na tyle. W razie jakichkolwiek pytań piszcie w komentarzach.

















