Inserire un modulo solo in alcune pagine con Joomla!.

Joomla è un CMS abbastanza rigido nei comportamenti: ad esempio consente solo la definizione di due livelli di classificazione Sezioni - Categorie.

Un ulteriore caso di rigidità risiede nel fatto che un modulo può essere assegnato soltanto ad una voce di menu. Non è possibile assegnare un modulo ad un contenuto che non sia accessibile da menu.
La cosa non desta particolari problemi nella maggior parte del caso, dato che il contenuto che noi creiamo vogliamo che sia accessibile agli utenti e quindi facilmente raggiungibile, per cui creiamo dei menu di accesso alle informazioni.
E’ possibile raggirare questo problema creando dei menu nascosti.

Durante il lavoro di tesi mi sono trovato di fronte un problema: ho creato dei moduli e li ho assegnati a delle sezioni di sito. Un esempio è un modulo “Sport coinvolti” che compare quando apro la sezione “Eventi”. Questo modulo elenca gli sport che sono coinvolti in un evento, sempre che ne esistano. Purtroppo il modulo compare non solo quando seleziono un evento, ma anche quando devo ancora scegliere la categoria di evento e quindi ho un listing di tutti gli eventi che ho catalogato all’interno del sistema.

Come non va bene

Questo non va bene, voglio che un modulo del genere compaia solo se ho selezionato un evento dalla lista, e ne sto visualizzando i contenuti.

Come posso fare?

L’idea mi è venuta analizzando i sorgenti delle pagine con i contenuti e quelli delle pagine che li organizzano. Utilizzando FileMerge ho notato che le pagine con il contenuto presentavano nell’intestazione una serie di stili applicati da un mambot che avevo installato per gestire le gallerie di immagini. Questo mambot, MultiThumb, permette di inserire - nel suo backend - una serie di stili CSS per modificare l’aspetto della gallerie immagini. Questi stili vengono applicati a tutte e sole le pagine che sono di contenuto, contengano immagini o no.

Da qui l’intuizione: ho modificato il Module Class Suffix di ogni modulo di cui volevo modificare la visualizzazione - inserendo “fla” nella casella (facendo diventare i moduli di classe “modulefla”), quindi ho aggiunto uno stile CSS nel file del template

.modulefla {
visibility: hidden;
}

Nel backend del componente ho inserito lo stile


/* visualizza i miei moduli */
.modulefla {
visibility: visible;
}

Ho modificato il template per importare i files CSS prima di applicare gli stili dei componenti.
In questo modo il sistema funziona correttamente, come dimostrano le immagini seguenti.

Così va bene

Sotto si può vedere la visualizzazione di un articolo di contenuto.

Contenuto

Tags: , ,
Articoli correlati:

Lascia un commento

Nome (obbligatorio)

Mail (non sarà pubblicata) (obbligatoria)

Sito web

-->