it-swarm.com.de

Wie kombiniere ich Ansichten exponierten Filter mit Suche?

Mein Kunde hat mich nach einem einzigen Feld gefragt, das auf zwei Arten funktionieren würde:

  • Autocomplete-Filter basierend auf Taxonomie.
  • Wenn der Website-Besucher etwas eingibt, das nicht in der Taxonomie enthalten ist, sollte eine Volltextsuche für den Inhalt durchgeführt und eine entsprechende Infomeldung angezeigt werden.

Auf diese Weise erhält der Benutzer, wenn er den Kategorienamen eingibt, handverlesene Knoten aufgelistet, und wenn überhaupt, erhält er zumindest einige Inhalte.

Separat ist es einfach. Aber wie kann man diese Verhaltensweisen in einem Bereich kombinieren?

18
Mołot

Finder Modul erfüllt Ihre Anforderungen genau. Sie können den Taxonomiebegriff sowie den Knotentitel, den Hauptteil, die Felder usw. auswählen, um die Suche durchzuführen.

Es gibt viele Möglichkeiten, die Funktionen von Finder zusammenzustellen, um die Art von Suchformular zu erhalten, die Sie benötigen. Es gibt auch viele Hooks und Theme-Funktionen, die eine vollständige Anpassung der Finder-Ausgabe ermöglichen.

Es wird für folgende Zwecke verwendet:

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.

Siehe folgenden Screenshot: Im Feld Finder können Sie Taxonomiebegriffe sowie den Knotenkörper auswählen, um die Suche auch im automatisch vervollständigten exponierten Feld durchzuführen Sie können mehrere durch Kommas getrennte Schlüsselwortsuchen durchführen. Lesen Sie die Finder-Dokumentation für weitere Informationen.

enter image description here

Nachdem Sie das Element hinzugefügt haben, können Sie die Finderfelder aus der Liste auswählen. Halten Sie die Taste gedrückt

Strg-Taste zur Auswahl des Taxonomiebegriffs sowie des Knotens : Body

17
Bala

Ich schreibe ohne zu testen, aber ich habe das Gefühl, dass Sie es zumindest als Ausgangspunkt verwenden können.

Mit dem Modul Ansichtsfeldansicht können Sie eine Ansicht in eine andere Ansicht einbetten und einen Kontextfilter an die eingebettete Ansicht übergeben.

In Ihrem Fall würde ich nur eine andere Ansicht erstellen, die einen Kontextfilter enthält, der den angegebenen Filter durchsucht. Ich bin mir in diesem Punkt nicht sicher, ob Sie eine Suche durch Kontextfilter durchführen können, aber ich habe einige Optionen wie "Suche: Begriff" usw. gesehen.

Wenn Sie diesen ersten Schritt jedoch trotzdem erreichen können, ist der Rest relativ einfach.

In Ihrer ursprünglichen Ansicht fügen Sie im Abschnitt "Erweiterte Optionen" das Verhalten "Keine Ergebnisse" hinzu, fügen eine "Global: Ansicht (Feldansicht" Ansichten ") hinzu, wählen die zuvor erstellte Ansicht aus und übergeben das Token für den exponierten Filter als Kontextfilter zur eingebetteten Ansicht (Sie finden die Token in der Liste für die Ersetzungsmuster).

3
Елин Й.

Ich habe die obigen Diskussionen durchlaufen und möglicherweise kann das folgende Szenario den Beitrag "Wie kombiniere ich Ansichten mit Filter mit Suche kombinieren?" Behandeln. Die Implementierung erfordert eine benutzerdefinierte Codierung.

  1. Betrachten Sie die URL http://www.seedandspark.com/studio .
  2. Hier auf der linken Seite haben Sie ein Suchformular. Dies ist ein benutzerdefiniertes Formular (form_id = 'sns_studio_form_filter').
  3. Im Inhaltsbereich haben wir ungefähr 7-8 Ansichtsblöcke und alle generieren dynamische Informationen (für anonyme Benutzer nur 3 Blöcke)
  4. Jetzt haben wir Filter verfügbar gemacht, die für jeden Ansichtsblock aktiviert sind.
  5. Wir haben diese exponierten Filter nicht sichtbar gemacht
  6. Wir haben die URL-Strukturen notiert, wenn wir sichtbare Filter verwenden
  7. In unserem Handler zum Senden von benutzerdefinierten Formularen nehmen wir Informationen aus den Feldern des benutzerdefinierten Formulars und generieren die ähnliche URL, wie in Schritt 6 angegeben. Schließlich leiten wir zu dieser URL weiter. Im Submit-Handler wird es so sein:

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

Sobald Schritt 7 ausgeführt wird, werden alle Ansichtsblöcke basierend auf den von Ihnen festgelegten Filterkriterien gefiltert.

Ich hoffe es hilft.

3
dhrubaj

Es gibt auch eine andere Möglichkeit: Sie können das Modul Concat Field ausprobieren. Sie fügen das Feld grundsätzlich zu Inhaltstypen hinzu und können dann den Filter nach diesem Feld als Suche verwenden.

Es ist Finder ziemlich ähnlich, ich stimme zu, aber ich denke, es ist immer noch erwähnenswert.

3
32i