web-dev-qa-db-fra.com

Drupal 7 Recherche à facettes: toujours afficher les facettes

J'ai un travail de recherche à facettes qui utilise searchapi, facetapi et entityapi. Ce n'est pas moi qui l'ai développé, mais j'ai une certaine expérience avec Drupal. À partir de maintenant, la navigation utilise des liens pour la sélection et ressemble à ci-dessous (le premier niveau des puces ne sont pas des liens). Lorsque le mixage est sélectionné, la conception sonore et la composition disparaissent comme prévu.

Ce que le client veut, c'est que tous les éléments restent visibles et sélectionnables au fur et à mesure que l'utilisateur explore (même s'il ne renvoie rien). Un seul élément par catégorie sera sélectionnable à la fois, mais l'utilisateur devrait pouvoir faites-le sans avoir à "revenir en arrière".
Tout conseil est grandement appréciée.

  • Ce que nous faisons _
    • Mélange (18)
    • Conception sonore (11)
    • Composition (6)
  • Qui nous sommes_
    • Joe Schmoe (17 ans)
    • Jeff Bleck (14 ans)
    • David Berry (4)
  • Compositeurs affiliés _
    • Jim Carey (3)
    • Tony Maroni (2)
7
Kevin

En dessous de admin/config/search/search_api cliquez sur "modifier" dans votre index de recherche et sélectionnez "Facettes". Ensuite, pour toutes les facettes qui ont besoin du comportement décrit pour leurs éléments, procédez comme suit:

  1. Cliquez sur "configurer l'affichage".
  2. Dans la section "Paramètres globaux", remplacez le "Nombre minimal de facettes" par 0 (zéro). On peut dire que ce champ de saisie devrait plutôt être appelé "Nombre minimal d'éléments de facette"…
  3. "Enregistrer la configuration".

Désormais, tous les éléments de facette non correspondants doivent rester dans votre liste de facettes (avec un nombre nul). Comme vous l'avez déjà mentionné, cliquer sur un tel élément de facette ne renverra plus de résultats de recherche.

8
Chriki

Je pense que la solution dans ce commentaire est la solution à votre problème. Dans votre template.php, remplacez le theme_facetapi_link_inactive-une fonction:

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

Pour vous assurer que tous les éléments restent visibles et sélectionnables, assurez-vous que la recherche des paramètres globaux est définie sur "OU". Dans le menu admin, accédez à Configuration> API de recherche> [nom de l'index] lien "modifier"> Facettes (onglet)> [nom de la facette] lien "configurer l'affichage"> Sous "Paramètres globaux", sélectionnez Opérateur "OU". (Gardez le "Nombre minimum de facettes" à 1)

Pour vous assurer que tous les blocs de facettes restent visibles, assurez-vous que sur la page de configuration de chaque bloc de facettes, les facettes sont affichées sur les pages spécifiées. Allez dans Structure> Blocs> [nom du bloc de facettes] lien "configurer". Par exemple:

prestations de service
prestations de service/*

Les utilisateurs peuvent explorer en profondeur. Sans revenir en arrière, les utilisateurs n'auraient qu'à désélectionner un élément de facette. L'option "Limiter à un élément actif" ne fonctionne actuellement pas bien lorsqu'elle est configurée, en fonction de mes expériences.

0
liblogarian

Voici mon travail autour de ce problème, aucun codage requis!

  • créer une vue basée sur votre index de recherche
  • ajoutez un bloc de facettes à la vue et configurez-le pour utiliser le champ de facette souhaité, si vous avez une arborescence de taxonomie, vous pouvez utiliser le champ de terme tous les parents pour n'afficher que le niveau supérieur.
  • configurer le bloc pour qu'il s'affiche sur votre site

maintenant, vous avez également les autres blocs de facettes partout car la recherche est activée, si vous le souhaitez, vous pouvez masquer le bloc créé avec css.

grts

frederic wbase

0
user26257