web-dev-qa-db-fra.com

Comment utiliser le paramètre de requête URL sur un filtre exposé de vue?

Nous avons une vue qui a les paramètres suivants. Comment configurer la vue pour utiliser un paramètre de requête de l'URL pour filtrer les résultats?

Type de contenu de l'article (champs):

  1. Titre
  2. Corps
  3. Catégorie (field_category) -> taxonomie
  4. Type (field_type) -> taxonomie

Afficher les filtres exposés (valeurs)

  1. Catégorie (Tout, Sécurité, IoT, Wifi, Réseau)
  2. Type (Tout, Blog, Communiqué de presse, Dernières nouvelles)

Sortie désirée:

  • Lorsque l'URL est www.mysite.com/news?type=Blog, puis définissez les filtres Type = Blog et Category = All pour renvoyer les résultats de toutes les pages d'article où type = Blog et Category peuvent être quelconques (non nuls)
  • Lorsque l'URL est www.mysite.com/news?type=Blog&Category=Security puis filtrez les résultats pour renvoyer toutes les pages d'article où type = Blog et Category = Sécurité

Nous avons essayé d'ajouter un filtre contextuel avec les paramètres suivants uniquement, mais cela n'a pas fonctionné. context fitlers

1
usernameabc

Vues Les filtres exposés fonctionnent déjà de cette façon, pas besoin de filtres contextuels.

Dans les paramètres de chaque filtre exposé, il existe une option pour taper Filter identifier. C'est le texte qui sera utilisé pour ce champ dans la requête.

Dans votre cas, définissez le Filter identifier De la catégorie sur Category et celui du champ Type sur type.

exposed_Category

Si vous configurez les paramètres du filtre exposé Selection type Pour ces deux filtres sur Dropdown, vous devrez utiliser des ID de terme dans le lien pour faire fonctionner le filtre (je suppose que votre terme de sécurité a ID 6):

www.mysite.com/news?Category=6

Utilisez Autocomplete pour obtenir les noms des termes dans la requête

Mais si vous définissez les paramètres du filtre exposé Selection type Sur Autocomplete, vous pourrez utiliser des noms de terme, ce que vous voulez.

www.mysite.com/news?Category=Security

ou

www.mysite.com/news?Category=Security+(6)

Drupal 8 ajoute l'ID du terme à côté du nom du terme lors du choix dans la liste de suggestions de saisie semi-automatique, mais cette partie n'est pas nécessaire. Vous pouvez créer le lien avec le nom de la catégorie uniquement et cela fonctionnera. Si le nom de la catégorie contient des espaces, remplacez-les par + Dans la requête.

Si vous avez plusieurs filtres exposés, ils sont combinés, pour tous les types:

www.mysite.com/news?Category=Chemistry

ou

www.mysite.com/news?Category=Chemistry&type=

et pour certains types spécifiques en plus de la catégorie:

www.mysite.com/news?Category=Chemistry&type=Blog

ou changer l'ordre:

www.mysite.com/news?type=Blog&Category=Chemistry

2
prkos

Lors de l'utilisation des étiquettes d'entités dans les filtres, au lieu de l'ID, je dois "Spécifier les critères de validation" et sélectionner l'option appropriée. Dans ce cas, je validerais le "nom du terme de taxonomie". Ces options apparaissent dans le groupe "QUAND LA VALEUR DU FILTRE IS DANS L'URL OR UNE PAR DÉFAUT IS FOURNI").

Mise à jour: Je ne savais pas que vous utilisiez les filtres Exposé et Contextuel lorsque j'ai posté à l'origine - je pensais que vous utilisiez simplement Contextual. De plus, je pense que ce n'est pas une "meilleure pratique" d'utiliser des filtres contextuels et exposés pour le même filtrage, mais je pense que c'est bien (si vous voyez le comportement que vous voulez) parce que je ne connais pas de façon d'utiliser juste des filtres exposés et obtenez l'étiquette dans l'URL comme vous le souhaitez. Je parie qu'il y a un moyen d'utiliser du code personnalisé, mais je ne le sais pas.

0
sonfd