Posted by cato on April 8, 2010 at 9:06am
På sajten jag jobbar på nu så ska det finnas en sökfunktion inbyggd i headern. Det finns ett form-fält klart men det är inte kopplat till något. Nu undrar jag hur jag går tillväga för att sätta ihop allt så att det fungerar såhär:
1) Användaren matar in valfritt ord i fältet
2) Användaren trycker "sök" eller trycker på enter
3) Formuläret postas till en view (/search/node)
4) Views letar efter ordet i flera fält (brödtext,ingress,rubrik,bildmetadata etc)
5) Views visar en lista med fields (sökresultatet)
Fanns tydligen i drupal5 som views fast search men nu finns inte modulen för drupal 6 så vad göra?

Comments
Du skulle kunna lägga till
Du skulle kunna lägga till ett CCK-fält till din content-type som är ett http://drupal.org/project/computed_field som innehåller alla fält från noden som ska vara sökbart. Skapa sedan en vy med exponerat filter för ditt computed field du skapat.
//Pontus Nilsson, Digitalist
Varför inte använda Drupals
Varför inte använda Drupals inbyggda söksystem? Då får du indexering via cron (=snabbare sökningar), det går lätt att bygga ut med Solr, Sphinx eller liknande och du slipper extra, onödig data i databasen. Du kan även använda trevliga funktioner, som hook_update_index(), för att styra indexeringen.
Jag skulle börja så här:
Skapa ny vy av typen 'node'.
Lägg till filter för 'Search: Search terms' och välj att exponera det.
Lägg till de fält som du vill visa.
Bonus: Lägg till sortering för 'Search: Score', i fallande ordning.
Välj 'Exposed form in block: Yes'.
Lägg till en page-display och välj URL för den (/search, t.ex.).
Nu har du en sida för sökresultat, på valfri URL, och ett block som kommunicerar med det. Med hjälp av modulen Context kan du t.ex. välja att visa blocket i headern på alla sidor utom din vy, där du visar den i regionen 'content top', eller liknande. Det blir en riktigt trevlig effekt! Om du vill vara nostalgisk kan du så klart även placera blocket som vanligt, med blockhanteringen.
Tobias Sjösten
Ja jag kom fram till att ett
Ja jag kom fram till att ett CCK-fält av typen Computed skulle ställa till med en jävla oreda och framförallt så får det effekten att mysql lägger datat enbart på disk iom att [link]longtext/blob-fält aldrig lagras i minnet. För att inte tala om att jag då skulle behöva uppdatera samtliga noder (finns redan massa content inlagt)
Så jag har följt ditt tips Tobias men det känns som att det saknas något där för att automagiskt få page-displayen att visa sökresultatet. Sökfältet som finns i sajten ligger ju inbäddad i ett block (som är hårdkodat pga massa css-tricks.
Så min målsättning med hela övningen är alltså att få mitt hårdkodade formfält att kopplas till den view jag just gjort (/search) och på något vis plocka upp resultaten och visa de fält jag vill visa från sökresultatet (cck-fält) istället för de förbenade $snippet osv som finns i standardsearchen.
Fast nu verkar det ju funka.
Fast nu verkar det ju funka. Kan det vara så jävla enkelt att jag sätter form action="/drupal/search" accept-charset="UTF-8" method="get" på mitt hårdkodade formulärfält i headern och så kommer det lira? Jag verkar få ut de CCK-fält jag vill ha iallafall vilket är ett stort steg framåt.
Trodde jag skulle få sitta och hacka templates i evigheter här, plötsligt känns livet enklare :)
Du behöver (bör) inte
Du behöver (bör) inte hårdkoda ett eget formulär. Jag satte ihop en screencast för att visa hur jag tänker: http://vimeo.com/10801739
EDIT: Nu är videon inte längre private.
Tobias Sjösten
jag håller med dig tobbe men
jag håller med dig tobbe men det är ju en designer som har varit där och pillat också så formulärfältet ligger naturligtvis inbäddat i en hyfsat snurrig div-historia och har runda kanter, blinkande text och kulörta lyktor. Typ. Du förstår nog vad jag menar. Dock så är jag allmänt nöjd med att det fungerar som det ska och att jag med din hjälp lyckats få views att fungera som display för sökresultaten.
Tack för hjälpen man, vi får ta och ses nån dag när jag hälsar på Torbjörn Frisö :)
//Chris
Kul att det fungerar! Om du
Kul att det fungerar! Om du vill vara riktigt ambitiös kan du ju alltid skapa en variant av block.tpl.php i ditt tema och slänga på alla runda kanter, blinkande text och lyktor i det.
Så det är dig han har snackat om alltså? Liten värld. :) Kollegorna har precis lämnat Kolonien men du får ta med Torbjörn på nästa Drupal-möte!
Tobias Sjösten
Denna tråd har hjälpt mig med
Denna tråd har hjälpt mig med precis det jag vill men jag har ett problem, jag använder Drupal 7 och vad jag läst så går fungerar inte views-search i 7an..
Vet ni hur jag skulle kunna lösa detta på något annat sätt, verkar som jag inte kan använda views men det kanske finns något annat alternativ?
Jag vill alltså bara lista upp alla sökresultat på ett snyggt sätt men är relativt ny med drupal så har ej gjort detta innan.
Dev-versionen
Views-sökning går fint även i sjuan. Du måste dock köra med den senaste dev-versionen för att få med fixen som gör att integrationen med search.module fungerar som tänkt.
Edit: Det blev fixat den 8:e februari.
Tobias Sjösten
Taxonomier
Går det att utöka denna lösning med att inkludera filtrering via taxonomitermer? Eller på något sätt koppla Custom Search-modulen till Views?