Impostare nel filtro esposto un campo calcolato (Views + CCK)

18 contenuti / 0 new
Ultimo contenuto
Impostare nel filtro esposto un campo calcolato (Views + CCK)

Stavo giocando con le Views, e non riesco a trovare un esempio per creare dei filtri che non mappino direttamente un campo/dato salvato. Mi spiego meglio, avrei la necessità di aggiungere questi tipo di filtri:

1- possibilità di definire un range (due campi, il classico Da / A) che mappa direttamente un campo CCK.
Esempio: intervallo di prezzo

2- possibilità di definire un range (due campi, il classico Da / A) che mappa indirettamente un campo CCK tramite una formula
Esempio: intervallo di età (calcolato dalla data di nascita)

3- possibilità di definire un valore limite (va bene il menu a tendina) che mappa indirettamente un campo CCK tramite una formula
Esempio: distanza massima (calcolata da una formula PHP)

Potete aiutarmi?

per il punto 1 in effetti mi basta impostare la proprietà between (anche se io *vorrei* usare un componente jquery slider con la possibilità di spostare due cursori).

per gli altri due punti brancolo nel buio per quanto riguarda la formula, forse con rules? o mi conviene direttamente via PHP ?

Nessuno ha mai fatto niente di simile?

up?

up!

Soluzione non bellissima, ma che ho usato, è stata di usare il between e manipolare lato JS sul client la loro visualizzazione. Non è immediata ma funziona.

Ciao
Marco
--
My blog
Working at @agavee

Grazie Mavimo per la risposta, pensavo a qualcosa del genere anche io anche se a questo punto l'ho spostato alla fine come priorità.

Per gli altri due punti l'unica soluzione che ho trovato è agire sul hook_views_query_alter() ... non vedo altre strade :( :(

forse non ho capito cosa tenti di fare, ma esporre due filtri uno "less than" e uno "more than" non funziona nei tuoi primi due casi?

io ho usato questo sistema con delle date e funziona

per la formula penso che dipenda dalla complessità di cui hai bisogno, tenendo nascosto il filtro e impostando il valore di default puoi fare qualcosa, certo non sono equazioni differenziali...

Ciao, non riesco a far funzionare la lista a menù (classiche combobox) con greather e less, sbaglio io qualcosa?

detto così non è che si capisce cosa stai facendo

hai ragione...

i moduli coinvolti sono: CCK + Views + Better Exposed Filters

tramite gestione contenuti ho aggiunto diversi campi anagrafici sul profilo utente (admin/content/node-type/profile) per esempio, i classici:

1 - Data di nascita (Datetime, classici elenchi di selezione a tendina per giorno mese e anno).
3 - Altezza (Integer, con elenco di selezione a tendina dell'altezza).

Poi ce ne sono altri ma per ora mi accontento di gestire questi.
Tutti i campi nel profilo vengono salvati e gestiti correttamente.

Il problema nasce quando cerco di fare la pagina di ricerca sui profili per alcuni criteri come:

- range di altezza (mi mette due textfield come campi da / a mentre io vorrei i due elenchi di selezione).

- ricerca per età (in aggiunta a quanto detto per il range di altezza, vorrei poter convertire l'età minima e massima da ricercare in campi data per farli così diventare criteri della select.. quindi dovrei intercettare la chiamata alla select e trasformare l'età in data prima di far continuare la ricerca).

Spero di essermi spiegato meglio :|

Premetto che "better exposed filters" non l'ho mai usato e la mia conoscenza di "view" è ancora basata su Drupal 6.

per esporre un filtro a tendina: di fianco all'impostazione del filtro compare un "ingranaggio" se clicchi lì puoi impostare le opzioni e selezionare la lista invece che il testo

per la ricerca per età: ottenere un campo calcolato in un filtro non so proprio come si faccia, ma forse puoi aggirare l'ostacolo in questo modo. Esiste un modulo "computed field", aggiungi al tuo content type un campo età che calcola il dato in base al contenuto del campo data, a quel punto in views filtri su quello. unico appunto è che non so se il campo calcolato si aggiorna durante la vita del nodo o viene calcolato solo al salvataggio dello stesso, per quello devi fare qualche prova

hrs, hai beccato anche la versione di drupal che sto usando :D

Provo le modifiche che mi hai consigliato. Ottimo il consiglio del computed, provo anche quello i ncascata. Grazie!

non riesco... o meglio riesco a esporre il campo a menù a tendina, ma non riesco a esporre il menù a tendina per il "compreso fra".

Il "compreso fra" riesco ad aggiungerlo solo se accetto di usare due textfield liberi per il valore minimo e massimo.

Dove sbaglio?

il compreso non l'ho mai usato, ho sempre usato doppio filtro, uno max e uno minimo, anche perché con una tendina sola come fai a dare i due valori di compreso?

avevo provato a mettere un massimo e un minimo ma mi sa che allora sto sbagliando perché non riuscivo, dopo provo! grazie della pazienza

nel caso volessi creare un range di prezzo? come si può fare?
ad esempio: voglio creare un view per cercare prodotti per fascia di prezzo (da 0 a 1000, da 1001 a 2000, da 2000 a 5000, ecc...) uso il cck field number o money per impostare il prezzo ma poi questi valori per il range di prezzo come li programmo nella view?

Antonio Ficai

crei una vista dove trai "fields" hai anche il prezzo, non è necessario che sia visibile, ma lo devi avere tra i campi
poi crei due filtri sul campo prezzo, uno impostato come "minore di" e uno "maggiore di"
esponi entrambi i filtri e hai fatto