Come combinare il filtro delle viste esposte con la ricerca?


18

Il mio cliente mi ha chiesto un singolo campo, che avrebbe funzionato in 2 modi:

  • Filtro di completamento automatico basato sulla tassonomia.
  • Se il visitatore del sito inserisce qualcosa che non rientra nella tassonomia, la ricerca full-text deve essere eseguita sul corpo del contenuto e deve essere visualizzato il messaggio informativo appropriato.

In questo modo se l'utente inserisce il nome della categoria, verrà elencato i nodi scelti manualmente e, se non altro, otterrà almeno un po 'di contenuto.

Separatamente, è facile. Ma come combinare questi comportamenti in un campo?


1
Separatamente è facile, con quale modulo lavori per avere il completamento automatico basato sulla tassonomia? Per me il trucco sarà un piccolo codice javascript che controllerà se non ci sono risultati cambia l'azione del pulsante di invio in modo da reindirizzare a / search / yourkeywordsearch
sel_space

Risposte:


17

Il modulo Finder soddisferà esattamente le tue esigenze. Puoi selezionare il termine tassonomia, nonché il titolo, il corpo, i campi, ecc. Del nodo per eseguire la ricerca.

Esistono molti modi per mettere insieme le funzionalità del cercatore per ottenere il tipo di modulo di ricerca di cui hai bisogno. Ci sono anche molti hook e funzioni tematiche che consentono la completa personalizzazione dell'output del Finder.

È usato per questi scopi:

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.

Vedi la schermata seguente, Nel campo del Finder puoi scegliere i termini della tassonomia e il corpo del nodo per eseguire la ricerca nel campo esposto di completamento automatico, anche se puoi eseguire la ricerca di più parole chiave separate da virgola. Leggi la documentazione del Finder per ulteriori informazioni.

inserisci qui la descrizione dell'immagine

Dopo aver aggiunto l'elemento, puoi selezionare i campi del Finder dall'elenco, tenere premuto

Tasto Ctrl per selezionare il termine di tassonomia e Nodo: Corpo


È un po 'vecchio e ha bisogno di co-manutentori, ma sembra che soddisfi tutte le mie esigenze. Dovrà testarlo, ma finora sembra essere la risposta perfetta per il mio caso d'uso.
Mołot,

Sembra che funzioni Dovrò sintonizzarlo un po ', ma può fare il lavoro.
Mołot,

3

Sto scrivendo senza test ma ho la sensazione che puoi usarlo almeno come punto di partenza.

Utilizzando il modulo Vista campo Vista , è possibile incorporare una vista in un'altra vista e consente anche di passare un filtro contestuale alla vista incorporata.

Nel tuo caso, creerei solo un'altra vista che ha un filtro contestuale che cerca il filtro dato. Non sono sicuro su questo punto, se puoi fare una ricerca attraverso i filtri contestuali, ma ho visto alcune opzioni come "Cerca: Termine" ecc.

Detto questo, se riesci comunque a realizzare questo primo passo, il resto è relativamente semplice.

Nella vista originale, aggiungi un "Nessun risultato" nella sezione delle opzioni avanzate e aggiungi un "Globale: vista (vista del campo Viste)" e seleziona la vista precedentemente creata e passa il token per il filtro esposto come filtro contestuale alla vista incorporata (è possibile trovare i token nell'elenco per i motivi di sostituzione).


1
Idea interessante ma non sono riuscita a farlo funzionare. Molta configurazione e poi Bala ha pubblicato un modulo pronto e ho perso il mio cuore.
Mołot,

Sì, non sapevo del modulo Finder . Penso che lo userò anche nei miei progetti. Sarei felice se ci facessi sapere con un commento, se Finder fa quello che ti aspetti.
Елин Й.

3

Ho esaminato le discussioni di cui sopra e forse lo scenario di seguito può indirizzare il post "Come combinare le visualizzazioni del filtro esposto con la ricerca?". L'implementazione richiederà una codifica personalizzata.

  1. Considera l'URL http://www.seedandspark.com/studio .
  2. Qui, sul lato sinistro, hai un modulo di ricerca. Questo è un modulo personalizzato ( form_id = 'sns_studio_form_filter').
  3. Nell'area dei contenuti abbiamo circa 7-8 blocchi di visualizzazione e tutti generano informazioni dinamiche (solo per utenti anonimi 3 blocchi)
  4. Ora, abbiamo filtri esposti abilitati con ogni blocco di vista.
  5. Abbiamo tenuto nascosti alla vista quei filtri esposti
  6. Abbiamo tenuto conto delle strutture dell'URL quando utilizziamo i filtri esposti vista
  7. Nel nostro gestore di invio di moduli personalizzati, prendiamo informazioni dai campi del modulo personalizzato e generiamo l'URL simile come abbiamo notato nel passaggio 6. E, infine, reindirizziamo a quell'URL. Sarà così nel gestore di invio ::

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

Quindi, una volta eseguito il passaggio 7, tutti i blocchi di vista verranno filtrati in base ai criteri di filtro impostati.

Spero che sia d'aiuto.


3

C'è anche un altro modo di farlo: potresti provare il modulo Concat Field . Fondamentalmente aggiungi il campo ai tipi di contenuto, quindi puoi usare il filtro per questo campo come ricerca.

È abbastanza simile a Finder, sono d'accordo, ma penso che valga la pena menzionarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.