Drupal 7 Facettierte Suche: Immer Facetten anzeigen

7

Ich habe eine facettierte Suche, die Searchapi, Facetapi und Entityapi verwendet. Ich war nicht derjenige, der dies entwickelt hat, aber ich habe einige Erfahrungen mit Drupal. Ab sofort verwendet die Navigation Links zur Auswahl und sieht wie folgt aus (die erste Ebene der Aufzählungspunkte sind keine Links). Wenn das Mischen ausgewählt ist, verschwinden Sounddesign und Komposition wie erwartet.

Der Client möchte, dass alle Elemente beim Drilldown des Benutzers weiterhin sichtbar und auswählbar bleiben (auch wenn nichts zurückgegeben wird). Es kann immer nur ein Element pro Kategorie ausgewählt werden, aber der Benutzer sollte dies tun können, ohne zurückgehen zu müssen.
Jeder Rat wird sehr geschätzt.

  • Was wir tun_
    • Mischen (18)
    • Sound Design (11)
    • Zusammensetzung (6)
  • Wer wir sind_
    • Joe Schmoe (17)
    • Jeff Bleck (14)
    • David Berry (4)
  • Verbundene Komponisten_
    • Jim Carey (3)
    • Tony Maroni (2)
Kevin
quelle

Antworten:

8

Unter admin/config/search/search_apiKlick „Bearbeiten“ auf dem Suchindex und wählen Sie „Facets“. Führen Sie dann für alle Facetten, die das beschriebene Verhalten für ihre Elemente benötigen, die folgenden Schritte aus:

  1. Klicken Sie auf "Anzeige konfigurieren".
  2. Ändern Sie im Abschnitt "Globale Einstellungen" die "Minimale Facettenanzahl" auf 0(Null). Dieses Eingabefeld sollte wohl eher als "Minimale Anzahl von Facettenelementen" bezeichnet werden.
  3. "Konfiguration speichern".

Jetzt sollten alle nicht übereinstimmenden Facettenelemente in Ihrer Facettenliste verbleiben (mit einer Anzahl von Null). Wie Sie bereits erwähnt haben, werden durch Klicken auf ein solches Facettenelement keine Suchergebnisse mehr zurückgegeben.

Chriki
quelle
Hmm, bei meiner Installation schrumpft die Liste immer weiter (um nicht zu sagen, dass nur noch 1 Artikel übrig ist), wenn ich auf einen Artikel klicke ...
Michiel
@ Michael Hmm, das ist seltsam. Ich habe das gerade noch einmal auf meiner Seite versucht und es funktioniert ohne Probleme. Selbst wenn ich die „Mindestfacettenanzahl“ von zwei verschiedenen Facetten dahingehend ändere, 0funktioniert dies: Wenn Sie ein Element der ersten Facette auswählen, werden die Elemente der zweiten Facette aktualisiert, verschwinden jedoch nie. Vielmehr haben alle Facettenelemente, die zuvor verschwunden wären, jetzt am Ende eine Markierung „(0)“.
Chriki
Danke für deine Antwort! Bei meiner Installation bleibt nur 1 Element übrig, wenn ich auf dieses Element klicke ... Irgendeine Idee, was die Ursache für dieses seltsame Verhalten sein könnte?
Michiel
@ Michael Ich fürchte, ich habe keine Ahnung :-(
Chriki
1
Ja, tut mir leid, dass ich in meinem ersten Kommentar verwirrt war. Eigentlich arbeitet das Verhalten, das Sie suchen, für mich (dh, alle Facettenelemente sind jederzeit sichtbar). Ich wollte nur darauf hinweisen, dass das gewünschte Verhalten auch für mich über mehrere Facetten hinweg funktioniert.
Chriki
1

Ich denke, die Lösung in diesem Kommentar ist die Lösung für Ihr Problem. Überschreiben Sie in Ihrer template.php die Funktion theme_facetapi_link_inactive:

function theme_facetapi_link_inactive($variables) {
  // Builds accessible markup.
  $accessible_vars = array(
    'text' => $variables['text'],
    'active' => FALSE,
  );
  $accessible_markup = theme('facetapi_accessible_markup', $accessible_vars);

  // Sanitizes the link text if necessary.
  $sanitize = empty($variables['options']['html']);
  $variables['text'] = ($sanitize) ? check_plain($variables['text']) : $variables['text'];

  // Adds count to link if one was passed.
  if (isset($variables['count'])) {
    $variables['text'] .= ' ' . theme('facetapi_count', $variables);
  }

  // Add functionality requested in #1669600.
  if (!$variables['count'] && isset($variables['options']['query']['f'])) {
    // We should be getting this from the url processor plugin, however we are
    // making an assumption since this is in our custom theme.
    $params = &$variables['options']['query']['f'];

    // Capture the filter associated with this link and find the field alias.
    $filter = end($params);
    $field_alias = substr($filter, 0, strpos($filter, ':')) . ':';

    // Iterate over params and strip out items that are using the same field
    // alias as this filter. Do not strip out this filter.
    foreach ($params as $key => $param) {
      if (0 === strpos($param, $field_alias) && $param != $filter) {
        unset($params[$key]);
      }
    }
  }

  // Resets link text, sets to options to HTML since we already sanitized the
  // link text and are providing additional markup for accessibility.
  $variables['text'] .= $accessible_markup;
  $variables['options']['html'] = TRUE;
  return theme_link($variables);
}
Michiel
quelle
0

Hier ist meine Arbeit rund um dieses Problem, keine Codierung erforderlich!

  • Erstellen Sie eine Ansicht basierend auf Ihrem Suchindex
  • Fügen Sie der Ansicht einen Facettenblock hinzu und konfigurieren Sie ihn für die Verwendung des gewünschten Facettenfelds. Wenn Sie einen Taxonomiebaum haben, können Sie das Feld für alle übergeordneten Begriffe verwenden, um nur die oberste Ebene anzuzeigen.
  • Konfigurieren Sie den Block so, dass er auf Ihrer Site angezeigt wird

Jetzt haben Sie auch die anderen Facettenblöcke überall, da die Suche aktiviert ist. Wenn Sie möchten, können Sie den erstellten Block mit CSS ausblenden.

grts

frederic wbase

user26257
quelle
Ich weiß nicht warum, aber in meinem Fall werden bei der Auswahl eines Felds für den Facettenblock nur wenige Facetten angezeigt. Ich habe die Ansicht so eingestellt, dass alle Elemente angezeigt werden, und es gibt keine Begrenzung auch in der Facettenkonfiguration
Math666
0

Stellen Sie sicher, dass die Suche nach globalen Einstellungen auf "ODER" eingestellt ist, um sicherzustellen, dass alle Elemente sichtbar und auswählbar bleiben. Gehen Sie im Admin-Menü zu Konfiguration> Such-API> [Name des Index] Link "Bearbeiten"> Facetten (Registerkarte)> [Name der Facette] Link "Anzeige konfigurieren"> Wählen Sie unter "Globale Einstellungen" Operator "ODER". (Halten Sie "Minimum Facet Count" bei 1)

Um sicherzustellen, dass alle Facettenblöcke sichtbar bleiben, stellen Sie sicher, dass auf der Konfigurationsseite jedes Facettenblocks die Facetten auf den angegebenen Seiten angezeigt werden. Gehen Sie zu Struktur> Blöcke> [Name des Facettenblocks] "Konfigurieren". Zum Beispiel:

Dienstleistungen
Dienstleistungen / *

Benutzer können einen Drilldown durchführen. Ohne zurück zu gehen, müssten Benutzer nur ein Facettenelement abwählen. Die Option "Auf ein aktives Element beschränken" funktioniert derzeit aufgrund meiner Erfahrungen nicht gut, wenn sie konfiguriert ist.

Bibliothekar
quelle