Comment rediriger une requête de filtre exposée vers une page de résultats de vues qui réside dans une autre page de panneau?


8

Ma configuration: Drupal 7.2, panneaux 7.x-3.0-alpha3, vues 7.x-3.0-beta3, suite d'outils Chaos 7.x-1.0-beta1

Disons que je veux créer un site Web d'annuaire de fruits. Dans les vues, j'ai un volet de contenu "fruits" avec des filtres exposés basés sur les taxonomies "couleur". Le site Web est censé avoir deux pages de panneau. La première page du panneau affiche uniquement la zone de filtre exposée "rechercher un fruit" avec une liste déroulante pour "couleur" et un bouton de recherche. En choisissant dans la liste déroulante et en cliquant sur le bouton de recherche, l'utilisateur est censé être redirigé vers la deuxième page du panneau qui comprend le volet de contenu de la vue affichant une liste de fruits correspondant au filtre (couleur).

Le problème est: la zone de filtre exposée sur la première page ne sera pas redirigée vers la page de résultat après avoir cliqué sur le bouton Appliquer. Comment configurer des vues et des panneaux pour y parvenir?

Réponses:


7
function hook_form_alter(&$form, &$form_state, $form_id) {  
  if ($form_id=='views_exposed_form') {
    global $base_url;
    $form['#action'] = $base_url.'/path_that_you_want'; 
  }
}

Cela fonctionne bien, mais au lieu d'utiliser $ base_url, je pense que vous devriez probablement utiliser url('path_that_you_want').
John Fiala

1
J'ai essayé sans succès. En fait, mon attribut "action" indique une autre destination. Comment puis-je résoudre ce problème?
sokratis

Hé, où dois-je ajouter ce code, faites-le moi savoir Merci
React Developer

0

Je ne suis pas sûr qu'il y ait une "bonne" façon mais j'ai rendu cela possible en écrivant un hook_form_alter pour le formulaire de filtre exposé pour changer la destination.

Pas idéal, mais j'ai obtenu les résultats dont j'avais besoin.


Comment avez-vous fait cela? Pourriez-vous s'il vous plaît poster votre code?
Michiel

0

La solution la plus simple consiste à

  • Créer une page de vues
  • Créer une vue exposée
  • Sous Avancé> formulaire exposé. Définissez "formulaire exposé dans le bloc: Oui"
  • Ajoutez le bloc "Formulaire exposé: ..." à la première page requise.

0

La solution la plus simple consiste à créer une page de vues Créer une vue exposée Sous Avancé> formulaire exposé. Définissez "formulaire exposé dans le bloc: Oui" Ajoutez le bloc "Formulaire exposé: ..." à la page d'accueil requise.

Le formel ci-dessus d'Interlated m'a mis à mi-chemin avec le bloc de filtre exposé travaillant pour ouvrir et afficher les résultats sur une nouvelle page.

Cependant, j'avais également besoin que le bloc de filtrage soit sur cette page de résultats. J'ai donc attaché le formulaire (bloc de filtre exposé) via la zone d'affichage dans l'en-tête. Ensuite, j'ai rencontré un comportement récursif lorsque les deux affichages dans la même vue.

Pour résoudre, j'ai séparé les deux affichages (page et bloc) en leurs propres vues respectives - créé un bloc comme filtre exposé qui comprenait des champs pour les résultats, puis une toute nouvelle vue pour que la page ait une URL à atteindre. L'affichage de la page a un champ (titre) qui est remplacé par un espace blanc (principalement parce que les résultats seraient redondants mais également inexacts - j'ai trouvé que les résultats étaient affichés avec précision à partir des champs du bloc de filtre exposé). J'ai conservé les mêmes paramètres filtrés entre les deux écrans et utilisé des filtres mieux exposés en utilisant ajax sur les deux écrans.

Je l'ai fait en D8 mais serait probablement le même le 7.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.