Con il termine "course format" si intendono i plugin che sono responsabili di definire il formato in cui un corso apparirà sia agli utenti fruitori della piattaforma sia a chi la amministra. Moodle prevede già alcuni formati predefiniti che possono essere associati a ciascun corso, ma anche la possibilità di creare temi custom permettere di applicare il formato più adatto ad ogni specifico corso.
Fra i formati presenti di default in Moodle il più popolare è "topics" e lo troviamo al percorso /course/format/topics
.
Nella directory course/format
possiamo invece vedere gli altri formati esistenti nella nostra installazione. A livello di amministrazione possiamo decidere di abilitare, disabilitare oppure rimuovere alcuni formati di corsoè per farlo dobbiamo andare in Amministrazione > Amministrazione sito > Plugin > Formati del corso > Gestisci i formati del corso". Inoltre il formato per un corso particolare può essere associato da "Amministrazione > Amministrazione del corso > Modifica impostazioni."
Creazione di un nuovo formato
Se volessimo personalizzare il formato di un corso è buona norma non modificare un formato esistente ma procedere nella creazione di un nuovo formato, la strada più semplice è clonare un formato esistente, magari appunto "topics" e quindi lavorare sul clone, questo ci permetterà di non compromettere in nessun modo la struttura base.
Quindi se vogliamo creare un nuovo formato il primo passaggio sarà creare una nuova cartella in /course/format/
, nel nostro caso la chiameremo "nuovo
", e copiare all'interno di questa cartella tutti i file presenti nella directory topics
.
A questo punto abbiamo alcune personalizzazioni indispensabili da effettuare: la prima riguarda il file version.php
dove dovremo andare a inserire nel nome del plugin il nome che abbiamo scelto. Nel nostro caso sarà appunto "nuovo
".
La seconda personalizzazione prevede invece di rinominare correttamente (cioè come "format_ nome scelto" o nel nostro caso format_nuovo
) il file contenuto nella cartella lang/en
, e qui poi andremo a sostituire le occorrenze di topic con il nome del nostro plugin nelle stringhe.
Il prossimo passaggio è quello di aggiornare il nome della classe nel file lib.php
, attenzione perché testando il funzionamento del sito prima di aver completato le fasi di "renaming" questo restituirà errori. Stessa cosa andrà fatta con il file renderer.php
e quindi, per concludere, con format.php
, format.js
e con i file della cartella db
.
Personalizzazione del corso
Abbiamo il nostro nuovo formato che, al momento attuale, è una copia esatta del formato clonato, ma, in ogni caso è già perfettamente utilizzabile e assegnabile a ciascun corso.
La personalizzazione vera e propria avviene tramite il file lib.php
che estende la classe format_base
definita in lib.php
nella cartella /course/format/
.
Si tratta di un file ben documentato e quindi è relativamente semplice scoprire come opera ciascuna funzione e se occorre ridefinirla sovrascrivendola. Tra l'altro alcune classi sono definite come final
e quindi non sarà possibile eseguire l'override, mentre altre funzioni come get_course()
o get_renderer()
di solito non hanno bisogno di essere sovrascritte a meno di casi eccezionali.
Si deve ricordare che il modulo del corso deve sempre appartenere a una sezione. Anche se il formato del corso non usa le sezioni, viene sempre creata la sezione con il numero zero. Il formato del corso può specificare quali blocchi devono essere aggiunti alla pagina del corso quando esso viene creato in questo formato. Indipendentemente dal formato del corso specificato nel metodo, l'amministratore del sito può sovrascriverlo con l'istruzione: $CFG->defaultblocks_override
.
Utilizzo dei formati
$CFG
è una variabile globale che contiene tutte le informazioni relative al setup del progetto dalla connessione al database fino alle informazioni sulla visualizzazione.
Una funzione interessante è poi extend_course_navigation()
< che serve per estendere le funzionalità relative alla navigazione, il formato predefinito contiene un'organizzazione dei moduli in sezioni, se le sezioni non sono implementate i moduli vengono posizionati direttamente sotto il corso. Se le chiamate AJAX sono abilitate il menu di navigazione può essere popolato mediante chiamate asincrone.
Il formato del corso può aggiungere intestazioni e piè di pagina del contenuto a qualsiasi pagina del corso (incluse le pagine dei moduli). Verranno visualizzati sopra o sotto il contenuto principale della pagina, a destra o a sinistra rispetto ai blocchi laterali. Inoltre, i formati del corso possono aggiungere intestazioni e piè di pagina del corso. Verranno visualizzati sopra o sotto sia il contenuto che i blocchi.
Un altro utilizzo che si può fare del formato del corso personalizzato è quello relativo alla creazione di header e footer del corso custom, mediante le funzioni course_content_header()
e course_content_footer()
. In questo modo possiamo aggiungere intestazioni personalizzate nelle quali inserire link di navigazione a pié di pagina personalizzati, disclaimer o altre informazioni.
Infine anche i course_format, come qualsiasi altro plugin, possono rimanere in ascolto su eventi particolari come la creazione, modifica e cancellazione di un corso o di un modulo di un corso.
La creazione di un nuovo formato, come si è visto, è una strada piuttosto impegnativa, nondimeno è quella che permetterà di raggiungere il maggior livello di autonomia.
Si deve tener presente però che è possibile adottare anche una soluzione intermedia tra i format di default e la creazione di un proprio format custom: esistono infatti un buon numero di course format disponibili per il download e quindi la loro implementazione risulta indubbiamente più veloce e agevole, Una lista è disponibile sul sito di Moodle.