Nei capitoli precedenti di questa guida abbiamo visto come poter implementare in Passweb una Griglia responsiva mediante un sistema di Componenti Contenitore annidati ai quali assegnare le classi richieste dal framework uikit.
Questo modo di operare non è però sufficiente per poterci consentire di realizzare, in Passweb, un sito Ecommerce perfettamente responsivo.
Tra i componenti Ecommerce di Passweb possiamo infatti trovarne alcuni che a livello strutturale si presterebbero molto bene per poter essere utilizzati come una Griglia responsiva.
Analizzando ad esempio il markup HTML del Componente “Catalogo Ecommerce” possiamo notare una struttura analoga a quella cui sappiamo di dover far riferimento per poter realizzare, secondo i dettami di uikit, una griglia responsiva
Le celle dei singoli articoli, in particolare, sono tutte racchiuse all’interno di un contenitore più esterno, nello specifico quello che, nello style editor di Passweb, è identificato come “Catalogo – Riquadro celle” (in figura la div con classe ecCatalogComp-cells).
Ogni cella all’interno di questo contenitore è poi identificata da una singola div (in figura quelle con classi ecCatalogComp-cell) all’interno della quale sono inseriti i componenti interni al Catalogo Ecommerce (Immagine Articolo, Prezzo, Descrizione ecc…) che ne definiscono i contenuti veri e propri.
Sulla base di questa semplice analisi viene quindi automatico pensare al “Riquadro Celle” come al Contenitore della Griglia e alle singole Celle come ai blocchi di contenuto, ossia alle colonne, interne alla griglia stessa.
In teoria sarebbe quindi sufficiente assegnare al Riquadro Celle, ad esempio, le classi .uk-grid, .uk-grid-width-large-1-4 e .uk-grid-width-medium-1-2 per far si che:
Il problema nel tentare di fare una cosa di questo tipo è rappresentato dal fatto che il markup del Componente “Catalogo Ecommerce” è generato in automatico dal programma e l’utente non ha la possibilità di definire delle classi aggiuntive per l’elemento “Riquadro Celle” ne tanto meno per le singole Celle.
Eventuali classi aggiuntive possono essere aggiunte, mediante la maschera di configurazione del componente solo all’elemento più esterno, ossia quello che racchiude, oltre al Riquadro celle anche tutti gli altri elementi del componente come la paginazione, i campi di ordinamento ecc…
In considerazione di ciò se vogliamo rendere responsivo il Catalogo Ecommerce di Passweb dobbiamo per forza di cose intervenire manualmente, integrando la libreria uikit.css e scrivendo le media query necessarie per assegnare a questo componente un comportamento responsivo.
Tutto questo può però essere fatto in maniera piuttosto semplice replicando esattamente la stessa logica di gestione adottata da uikit.
Di base si tratta infatti di andare a prendere le media query utilizzate da uikit per gestire una griglia responsiva con colonne tutte della stessa larghezza assegnando apposite classi al solo contenitore esterno della griglia, e riadattarle al nostro caso specifico.
Le media query in questione sono esattamente quelle presenti nella sotto-sezione “Even grid cell widths” della sezione “Component: Grid” presente all’interno del file uikit.css
In questo senso, ad esempio, la regola di uikit
.uk-grid-width-1-2 > * {
width: 50%;
}
riadatta alle nostre esigenze potrebbe diventare
.pw-grid-width-1-2 div[class*="cell_"]{
width: 50%;
}
dove il selettore il selettore di attributo [class*='cell_'] ci consente di applicare la regola a tutte le celle del Catalogo.
In definitiva per poter assegnare al Catalogo Ecommerce un Comportamento responsivo è necessario:
CLASSE | DESCRIZIONE |
.pw-grid-width-* | Le proprietà di questa classe verranno applicate per una qualsiasi larghezza del viewport. Le colonne della griglia avranno tutte la stessa larghezza e si posizioneranno una a fianco all’altra |
.pw-grid-width-small-* | Le proprietà di questa classe verranno applicate per larghezze del viewport maggiori o uguali a 480px Le colonne manterranno tutte la stessa larghezza e per viewport inferiori ai 480px si disporranno una sopra l’altra |
.pw-grid-width-medium-* | Le proprietà di questa classe verranno applicate per larghezze del viewport maggiori o uguali a 768px Le colonne manterranno tutte la stessa larghezza e per viewport inferiori ai 768px si disporranno una sopra l’altra |
.pw-grid-width-large-* | Le proprietà di questa classe verranno applicate per larghezze del viewport maggiori o uguali a 960px Le colonne manterranno tutte la stessa larghezza e per viewport inferiori ai 960px si disporranno una sopra l’altra |
.pw-grid-width-xlarge-* | Le proprietà di questa classe verranno applicate per larghezze del viewport maggiori o uguali a 1220px Le colonne manterranno tutte la stessa larghezza e per viewport inferiori ai 1220px si disporranno una sopra l’altra |
ATTENZIONE! il carattere * dovrà essere sostituito dal solito sistema di due numeri. In questo caso però il primo numero dovrà essere sempre 1 mentre il secondo variando tra 1, 2, 3, 4, 5, 6 e 10 indicherà esattamente il numero di celle per riga
Supponendo quindi di assegnare al Catalogo Ecommerce le classi aggiuntive pw-grid-width, pw-grid-width-xlarge-1-4, pw-grid-width-large-1-3, pw-grid-width-medium-1-2 (come avviene nel modello di riferimento)
otterremo un Catalogo in cui:
Per poter gestire al meglio un Catalogo Ecommerce responsivo è consigliabile inoltre:
Infine, un’ultima osservazione molto importante da fare, è quella secondo cui il markup di Componenti Ecommerce quali, Offerte / Novità, Popolarità Prodotto, Abbinati Ecommerce, Risultati Ricerca ecc… è del tutto analogo a quello utilizzato per il Catalogo Ecommerce
In conseguenza di ciò è possibile assegnare a questi componenti un comportamento responsivo operando esattamente allo stesso modo di quanto appena visto per il Catalogo Ecommerce.