Autore Topic: Linked select  (Letto 3133 volte)

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Linked select
« il: 22 Dic 2010, 21:57:43 »
finalmente ho completato il componente (con il modulo allegato) per creare select list dipendenti.
con il componente vengono inseriti anche dei dati di esempio.

appena finisco di fare l'upload scrivo un paio di informazioni in più.

Link per il download: http://www.joomla.it/download-della-community/item/170-linked-select.html

Allora, iniziamo con ordine.
Innanzi tutto devono essere create delle regole, che dicono come devono essere presentati i dati.
Qua le opzioni sono due:
  • opzione per "smanettoni": salvate le select necessarie per avere la lista dei "padri", dei "figli" e del risultato
  • opzione più semplice: inserite (o caricate) i dati direttamente tramite il componente

Opzione per smanettoni
Dovete creare 3 select:
  • una per la select principale
  • una per la select dipendente
  • una per mostrare i risultati

Partendo dai dati di esempio, vedremo di creare delle select list per mostrare gli articoli appartenenti ad una determinata sezione.
Innanzi tutto va creata la select che va a prendere tutte le sezioni:
Codice: [Seleziona]
SELECT id as value, title as text FROM #__sections WHERE published = 1 ORDER BY ordering
come vedete devono essere selezionati 2 campi: il primo andrà a comporre il valore della select list, il secondo la descrizione. Dal momento che verrà impiegata la funzione JHTML::_('select.genericlist'), i campi si devono chiamare rispettivamente 'value' e 'text'

ora andiamo a prendere le categorie relative alla sezione scelta
Codice: [Seleziona]
SELECT id as value, title as text FROM #__categories WHERE section = #_PARAM_# ORDER BY ordering
vale il solito discorso fatto precedentemente, l'unica accortezza è l'utilizzo del token #_PARAM_#
questo verrà sostituito con il valore passato dalla select "padre"

per ultimo mostriamo i risultati:
Codice: [Seleziona]
SELECT html.title, html.created, user.name FROM #__content html, #__users user WHERE html.catid = #_PARAM_# AND html.created_by = user.id ORDER BY html.ordering
anche qua vale tutto quello detto predentemente, ma sono presenti delle opzioni in più per la corretta visualizzazione.
il risultato verrà mostrato in forma tabellare, dove i nomi delle colonne sono uguali al nome del campo.
per avere un risultato comprensibile, sono possibili due scelte:
  • l'header passa tramite la funzione JText, per cui è possibile aggiungere un file di lingua come per tutti gli altri componenti
  • potete assegnare dei nomi "sensibili" attraverso il comando SQL "as" es: title as Titolo
« Ultima modifica: 22 Dic 2010, 22:21:12 da tampe125 »
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline tampe125

  • Appassionato
  • ***
  • Post: 366
    • Mostra profilo
Re:Linked select
« Risposta #1 il: 22 Dic 2010, 22:22:01 »
Opzione più semplice

i dati possono essere caricati direttamente all'interno del database, in due modi
  • inserimento diretto
  • caricamento tramite csv

In ogni caso deve essere creata una regola e dobbiamo spuntare il campo Custom; in questo modo diciamo che la regola non si appoggia a tabelle già esistenti ma prende i dati che gli diamo noi

Partiamo dal primo.
E' possibile caricare i dati andando nel menù Manage Data e fare click su nuovo.
Scegliete la regola che vi interessa (vengono mostrate solo le regole che hanno il campo custom = 1),  il tipo (Padre, Figlio oppure Risultato) ed inserite i valori.
  • father link indica l'eventuale collegamento con un altro record (ad esempio la provincia a cui appartiene un comune: Viareggio avrà come link Lucca (LU))
  • value è il valore che effettivamente ha il record; continuando l'esempio dei comuni può essere il codice fiscale
  • descrizione è la descrizione visualizzata

per le righe di tipo "padre" il campo father link può essere omesso (non c'è niente sopra di loro)
per le righe di tipo "risultato" il campo value può essere omesso (non c'è niente sotto di loro)
per le righe di tipo "figlio" tutti i campi sono obbligatori

questo può essere fatto anche in maniera "massiva" utilizzando un CSV.
il primo campo indica il collegamento con il padre, il secondo il valore, l'ultimo la descrizione

prendiamo 3 file: padre.csv; figlio.csv; risultato,csv

padre.csv
Codice: [Seleziona]
"", "ANT", "Antartide"
"", "AFR", "Africa"
"", "EUR", "Europe"
"", "AMER", "America"
"", "ASIA", "Asia"

come abbiamo detto, il collegamento con il padre può essere omesso

figlio.csv
Codice: [Seleziona]
"AFR", "SUD", "South Africa"
"EUR", "IT", "Italy"
"EUR", "FRA", "France"
"AMER", "CND", "Canada"
"AMER", "USA", "United States of America"
"ASIA", "JAP", "Japan"
"ASIA", "CHI", "China"

risultati.csv
Codice: [Seleziona]
"JAP", "", "Tokyo"
"CHI", "", "Beijing"
"USA", "", "Washington DC"
"CND", "", "Ottawa"
"FRA", "", "Paris"
"IT", "", "Rome"
"SUD", "", "Pretoria"

una volta che avete inserito tutto quanto, oppure che avete scritto le vostre select sul database, scegliete la regola a cui è associato e pubblicate il modulo dove volete (meglio se dentro un articolo) e...
godetevi lo spettacolo :D

so che può sembrare complicato, ma ad usarlo è molto più semplice :D
« Ultima modifica: 22 Dic 2010, 22:41:19 da tampe125 »
www.fabbricabinaria.it
Soluzioni originali ad esigenze quotidiane

Offline mpigio

  • Appassionato
  • ***
  • Post: 235
  • Sesso: Maschio
    • Mostra profilo
Re:Linked select
« Risposta #2 il: 09 Mar 2011, 11:24:47 »
Ciao, ho provato ad installare il componente e il modulo ma sul modulo quando seleziono il padre (sezioni di joomla) la rotellina gira all'infinito senza caricare nulla.

Dove sbaglio?
Grazie!

 

Host

Torna su