Wie kombiniere ich sichtbare Filter mit der Suche?

18

Mein Kunde bat mich um ein einzelnes Feld, das auf zwei Arten funktionieren würde:

  • Autovervollständigungsfilter basierend auf Taxonomie.
  • Wenn der Site-Besucher etwas eingibt, das nicht der Taxonomie entspricht, sollte die Volltextsuche für den Inhalt durchgeführt und die 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?

Mołot
quelle
1
Unabhängig davon ist es einfach, mit welchem ​​Modul Sie arbeiten, um die automatische Vervollständigung basierend auf der Taxonomie zu erreichen? Für mich ist der Trick ein kleiner Javascript-Code, der überprüft, ob kein Ergebnis vorliegt. Ändern Sie die Aktion der Schaltfläche "Senden", damit sie um
Uhr

Antworten:

17

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

Es gibt viele Möglichkeiten, die Funktionen des Finders 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 Abbildung unten. Im Finder-Feld können Sie Taxonomiebegriffe sowie den Knotentext auswählen, um die Suche im automatisch vervollständigten Feld durchzuführen. Sie können auch mehrere durch Komma getrennte Schlüsselwörter suchen. Weitere Informationen finden Sie in der Finder-Dokumentation .

Bildbeschreibung hier eingeben

Nachdem Sie das Element hinzugefügt haben, können Sie die Finder-Felder aus der Liste auswählen. Halten Sie die

Strg-Taste zum Auswählen des Taxonomiebegriffs sowie des Knotens: Text

Bala
quelle
Es ist ein bisschen alt und braucht Mitbetreuer, aber es sieht so aus, als würde es alle meine Bedürfnisse erfüllen. Müssen es testen, aber bisher scheint es die perfekte Antwort für meinen Anwendungsfall zu sein.
Mołot
Scheint so. Ich muss es ein bisschen optimieren, aber es kann den Job erledigen.
Mołot
3

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

Mit den Ansichten Field View - Modul können Sie einen Blick in eine andere Ansicht einbetten, und es ermöglicht Ihnen auch ein Kontextfilter auf die eingebettete Ansicht zu übergeben.

In Ihrem Fall würde ich nur eine andere Ansicht mit einem Kontextfilter erstellen, 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 dennoch schaffen, ist der Rest relativ einfach.

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

Елин Й.
quelle
1
Interessante Idee, aber ich konnte es nicht zum Laufen bringen. Viel konfigurieren und dann hat Bala ein fertiges Modul gepostet und ich habe mein Herz verloren.
Mołot
Ja, ich wusste nichts über das Finder- Modul. Ich denke, ich werde es auch in meinen Projekten verwenden. Ich würde mich freuen, wenn Sie uns mit einem Kommentar mitteilen, ob Finder das tut, was Sie erwarten.
Елин Й.
3

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

  1. Betrachten Sie die URL http://www.seedandspark.com/studio .
  2. Hier links haben Sie ein Suchformular. Dies ist ein benutzerdefiniertes Formular ( form_id = 'sns_studio_form_filter').
  3. Im Inhaltsbereich gibt es ca. 7-8 Ansichtsblöcke und alle generieren dynamische Informationen (nur für anonyme Benutzer 3 Blöcke).
  4. Jetzt haben wir Filter für jeden Ansichtsblock aktiviert.
  5. Wir haben diese freiliegenden Filter nicht sichtbar gemacht
  6. Wir haben die URL-Strukturen notiert, wenn wir sichtbare Filter verwenden
  7. In unserem Submit-Handler für benutzerdefinierte Formulare entnehmen wir Informationen aus den Feldern des benutzerdefinierten Formulars und generieren eine ähnliche URL, wie wir sie in Schritt 6 notiert haben. Schließlich leiten wir zu dieser URL weiter. So wird es im Submit-Handler sein:

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

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

Ich hoffe es hilft.

dhrubaj
quelle
3

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

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

32i
quelle