it-swarm.com.de

Drupal 7 Facettierte Suche: Immer Facetten anzeigen

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 (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 jeweils nur ein Element pro Kategorie ausgewählt werden, der Benutzer sollte dies jedoch können Mach es, 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)
7
Kevin

Unter admin/config/search/search_api Klicken Sie in Ihrem Suchindex auf "Bearbeiten" und wählen Sie "Facetten". 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" in 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.

8
Chriki

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

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);
}
1
Michiel

Um sicherzustellen, dass alle Elemente sichtbar und auswählbar bleibt, stellen Sie sicher, dass die Suche nach globalen Einstellungen auf "ODER" eingestellt ist. 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.

0
liblogarian

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 so, dass er das gewünschte Facettenfeld verwendet. 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

0
user26257