Ciao a tutti,
sto sviluppando un sito in drupal 7 ed ho bisogno di utilizzare dei filtri esposti in una vista. Per questo nessun problema, però vorrei rendere la selezione del filtro dinamica e a più livelli in cui i termini 'annidati' (o ad 'albero') sono caricati in maniera 'asincrona' a seconda della selezione del livello più alto.
La spiegazione è un po faragginosa, ma è una cosa banalissima e molto comune che tutti almeno una volta nella vita abbiamo già visto. Vi faccio un esempio di questo tipo:
Ipotizziamo che abbia un tipo di contenuto CITTADINO che devo categorizzare per regione, provincia e città. Creo 3 tipi di vocabolari di tassonomia, appunto 'Regioni', 'provincie' e 'città', e nella definizione dei campi del contenuto CITTADINO inserisco 3 campi riferimento termine ai tre già citati appunto.
Ora passo alla vista, dove è molto semplice creare i 3 filtri esposti per 'Regione','Provincia' e 'Città'. Tuttavia se ad esempio seleziono la regione 'Veneto', nel filtro 'Provincia' continuerò a vedere tutte le provincie d'Italia, e non soltanto quelle del Veneto. Stessa cosa avviene per le città.
Ciò oltre ad essere 'bruttino' perchè nei livelli più 'in fondo' potrebbe presentare un alto numero di voci difficili da distinguere, rende il sistema estremamente sensibile agli errori dell'utente, che ad esempio potrebbe selezionare per errore 'Regione=Veneto->Provincia=Catania->Città=Gubbio' senza quindi ottenere risultati.
Sarebbe più corretto se al variare della regione, in automatico (presumo ci sarà bisogno di AJAX) nella lista provincie comparissero soltanto le provincie di quella regione, e ugualmente nel campo città, comparissero soltanto le città di quella provincia.
Qualcuno ha qualche soluzione? Vi ringrazio!!!
Ciao, ti serve un po' di jquery ed un tuo modulo custom che usi ajax/ahah per l'aggiornamento della select list. E' una cosa lunga da spiegare.
Puoi partire a leggere da qui: http://drupal.org/node/411074
E cercare "drupal update select list haha" oppure "drupal update select list ajax"
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
mmmmhhh... buono! E' un'ottima indicazione
Devo capire una cosa però... Io ho ipotizzato di creare 3 vocabolari diversi di tag. Drupal questi li riconosce come vocabolari distinti, perciò non può associare in automatico le provincie di Venezia e Padova al Veneto, quelle di Cagliari ed Olbia alla Sardegna, ecc...
Anche ipotizzando di riuscire a creare il modulo che aggiorni in automatico le selected list dei filtri esposti, non posso certamente gestire le associazioni 'Regione->Provincia' e 'Provincia->Città' a livello di programmazione.
Come posso fare a gestire la correlazione genealogica tra i vocabolari Regione-Provincia-Città? (In verità il mio lavoro non è su regioni-provincia-città, ma mi era molto più funzionale a spiegare il problema...)
Avevo ipotizzato di usare un unico vocabolario e dopo di suddividere i termini di tassonomia gerarchicamente. Per intenderci:
1
|-1a
|-1b
2
|-2a
3
|-3a
|-3b
Tuttavia quasto mi preclude l'importante possibilità di poter inserire in modo separato i campi di primo, secondo e terzo livello quando creo il contenuto.
Se ad esempio creo il contenuto persona, vedrò un unico campo 'territorio' (ad esempio) dove tutti i riferimenti termine regione provincia regione saranno da selezionare dalla stessa lista indistintamente, mentre con i 3 vocabolari avevo 3 riferimenti termine distinti.
Posso ovviare a ciò?
Grazie!!!
Sha-La-La-La-Lee!!!
Perché no ?
Comunque la cosa è semplice:
Crei un vocabolario per le Regioni ed inserisci le regioni
Crei un vocabolario per le provincie dove aggiungi un field "regione" (fallo di tipo select list tanto le regioni sono poche). A questo punto inserisci le provincie, e per non fare un blocco unico crea anche una provincia padre fittizia con il nome uguale a quello della regione, che userai come provincia/regione "padre". Ovviamente per ogni provincia inserita setta il field-regione corretto, tranne che per il padre (dopo capisci il perché).
Crei un vocabolario per le città seguendo le indicazioni che ti ho dato per le province, ma questa volta non usare una select list, ma un autocompletamento, pena il ritrovarti con la memoria esaurita.
A questo punto se ti serve l'elenco delle province della regione X ti basta andare a prendere (via SQL) tutte le provincie (tassonomie) che hanno il "tid" della regione X all'interno del campo field creato in precedenza.
Stessa cosa per le città.
Spero di non essere stato troppo criptico.
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
Se il caso fosse limitato a Regione->Provincia->Città si potrebbe anche gestirlo a livello di programmazione, tuttavia come avevo già scritto la mia era una semplificazione. In verità gli 'oggetti' relazionati tra loro saranno in continua evoluzione e inseriti di volta in volta da degli utenti. Per questo sto provando a limitare la parte "a manina" (anche se poi è sempre quella di cui non puoi fare a meno) ;)
Ci sono dei punti poco chiari, ma forse mettendomi al lavoro dopo si chiarisce tutto.
Appena posso provo.
Nel frattempo grazie mille! Estremamente gentile!
Sha-La-La-La-Lee!!!