2008-10-27 5 views
11

I moduli Profile, CCK e Views2 sono installati su un sito Drupal 6. Ho aggiunto un campo stringa al profilo utente. Posso filtrare facilmente su valori preimpostati, tramite il generatore di GUI di Views, molto bene. Tuttavia, mi piacerebbe che i criteri di filtro fossero impostati dinamicamente in base ad altre variabili di ambiente (ovvero lo $_SERVER['SERVER_NAME']).Come creare un filtro personalizzato per il modulo di Drupal View?

Esiste un "filtro di visualizzazione delle drupal personalizzate" come scrivere? Ho cercato attraverso la documentazione, ma non è ovvio per la mia mente semplice su come farlo.

risposta

0

C'è la possibilità, dopo aver esaminato il tipo di filtri installati per il mio sito, che i filtri devono essere basati su alcuni campi del database, nel qual caso ciò che si sta cercando di ottenere non è possibile. Sembra che i filtri forniscano la clausola WHERE alla query SQL generata.

Detto questo, se si desidera proseguire ulteriormente, la soluzione migliore è iniziare con un modulo che fornisce già filtri per Views. Ci sono filtri forniti con Views per il modulo Node; in alternativa, è possibile guardare allo audio module che fornisce anche alcuni filtri. Inoltre, la pubblicazione nei forum di Drupal o nell'elenco di supporto può generare un altro modulo che ti consentirà di ottenere ciò che stai tentando.

0

sì, puoi farlo. Prova a utilizzare il modulo "visualizza blocco filtro". Una volta attivato il blocco, estrai l'html del blocco da "visualizza sorgente" quando visualizzi la pagina. Ora disabilita il "blocco del filtro delle viste" ... crea il tuo blocco personalizzato .. aggiungi il codice ad esso con qualunque css ti piaccia per farlo sembrare carino. All'interno di questo codice utilizzare php per specificare in modo dinamico ciò che si desidera per la selezione iniziale del filtro. Assicurati di scegliere effettivamente il campo su cui si basa il filtro .. quindi all'interno del blocco php personalizzato usa il codice php per scrivere la condizione IF per verificare il valore nome_server e di conseguenza assegnare alla variabile filtro il valore corretto. "

altri (forse anche i migliori) modi per farlo scrivere un modulo per usare il filtro, quindi questo è solo un suggerimento.Provare anche "Views PHP Filter". Non l'ho ancora usato, ma sembra che valga la pena provare .

  • dall'utente Drupal (nome utente Drupal: drupdrips)
3

È possibile creare yo la propria funzione come seguire per aggiungere i propri filtri.

<?php custom_views_embed_view($view_name, $display_id) { 
$view = views_get_view($view_name); 
$view->set_display($display_id); 
$id = $view->add_item($display_id, 'filter', 'node', 'created', 
         array('value' => array('type' => 'date', 'value' => date('c')), 'operator' => '<=')); 
return $view->execute_display($display_id); 
} 
?> 
+0

@AbhiG Avete mai provato questo metodo? questo sembra essere un pezzo di codice interessante. dovrei inserire il mio codice in operatore, sostituendo '<=' giusto? –

0

È possibile utilizzare viewsphpfilter modulo che permette visualizzazioni filtrate da node id. tuttavia c'è un patch se è necessario estendere questo per user views