Come reindirizzare una query di filtro esposta a una pagina dei risultati delle viste che risiede in un'altra pagina del pannello?


8

La mia configurazione: Drupal 7.2, Pannelli 7.x-3.0-alpha3, Visualizzazioni 7.x-3.0-beta3, Chaos tool suite 7.x-1.0-beta1

Supponiamo di voler creare un sito Web di directory di frutti. Nelle viste ho un riquadro di contenuto "frutti" con filtri esposti basati su tassonomie di "colore". Il sito Web dovrebbe avere due pagine del pannello. La prima pagina del pannello mostra solo il riquadro del filtro esposto "cerca un frutto" con un menu a discesa per "colore" e un pulsante di ricerca. Scegliendo dal menu a discesa e facendo clic sul pulsante di ricerca, l'utente dovrebbe essere reindirizzato alla seconda pagina del pannello che include il riquadro del contenuto della vista che visualizza un elenco di frutti che corrispondono al filtro (colore).

Il problema è: la casella del filtro esposta nella prima pagina non reindirizzerà alla pagina dei risultati dopo aver fatto clic sul pulsante Applica. Come posso impostare viste e pannelli per raggiungere questo obiettivo?

Risposte:


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'; 
  }
}

Funziona bene, ma invece di usare $ base_url, penso che probabilmente dovresti usarlo url('path_that_you_want').
John Fiala,

1
L'ho provato senza successo. In realtà il mio attributo "action" indica un'altra destinazione. Come posso risolvere questo problema?
sokratis,

Ehi, dove aggiungo questo codice, per favore fatemi sapere Grazie
React Developer il

0

Non sono sicuro che esista un modo "giusto", ma l'ho fatto scrivendo un hook_form_alter per il modulo filtro esposto per cambiare la destinazione.

Non è l'ideale, ma ho ottenuto i risultati di cui avevo bisogno.


Come lo hai fatto? Potresti per favore pubblicare il tuo codice?
Michiel,

0

La soluzione più semplice è

  • Crea una pagina di visualizzazioni
  • Crea una vista esposta
  • In Avanzato> modulo esposto. Impostare "modulo esposto nel blocco: Sì"
  • Aggiungi il blocco "Modulo esposto: ..." alla prima pagina richiesta.

0

La soluzione più semplice è quella di creare una pagina di viste Creare una vista esposta In Avanzate> modulo esposto. Impostare "Modulo esposto nel blocco: Sì" Aggiungi il blocco "Modulo esposto: ..." alla prima pagina richiesta.

Il formale sopra di Interlated mi ha portato a metà strada con il blocco filtro esposto che lavora per aprire e visualizzare i risultati in una nuova pagina.

Tuttavia, avevo anche bisogno che il blocco filtro si trovasse nella pagina dei risultati. Quindi ho attaccato il modulo (blocco filtro esposto) tramite l'area di visualizzazione nell'intestazione. Poi ho riscontrato un comportamento ricorsivo quando entrambi sono visualizzati nella stessa vista.

Per risolvere, ho separato i due display (pagina e blocco) nelle rispettive rispettive viste - ho creato un blocco come filtro esposto che includeva i campi per i risultati, quindi una vista completamente nuova per la pagina per raggiungere un URL. La visualizzazione della pagina ha un campo (titolo) che viene sovrascritto come spazio bianco (principalmente perché i risultati sarebbero ridondanti ma anche inaccurati - ho scoperto che i risultati venivano visualizzati accuratamente dai campi nel blocco filtro esposto). Ho mantenuto le stesse impostazioni filtrate tra entrambi i display e ho usato filtri meglio esposti usando ajax su entrambi i display.

L'ho fatto in D8 ma probabilmente sarebbe stato lo stesso in 7.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.