[SPIP 1.4] Quando si hanno elementi di testo e cicli comuni a diversi file si potrebbe voler estrarre questi elementi dalle pagine in cui si trovano e inserirli in un file separato, e poterli chiamare da altri modelli. In tal modo, il codice comune viene raggruppato in un unico file, e ciò facilita soprattutto le modifiche che riguardano più modelli contemporaneamente.
Gli esperti di PHP conoscono la funzione include
, che ha un principio simile a quanto presentato qui.
Con SPIP è possibile chiamare un modello da un altro modello grazie al tag <INCLUDE>
(si può utilizzare anche il corrispettivo francese <INCLURE>
). La sintassi generica è:
<INCLUDE(file.php3){parametro}...>
Il "file.php3" è il nome del file che si desidera integrare nella pagina. Per esempio, immaginiamo che tutte le pagine del sito mostrino le stesse informazioni a fondo pagina. Raggruppiamo il codice HTML di questo "piè di pagina" in un file "piede.html
", modello chiamato dalla pagina "piede.php3
" (sempre secondo il principio della coppia di file per chiamare i modelli). È sufficiente aggiungere la riga seguente, nel posto desiderato, in ognuno dei modelli che devono visualizzare il piè di pagina:
<INCLUDE(piede.php3)>
Alcune inclusioni possono dipendere dal contesto. Per esempio, immaginiamo un modello "gerarchia
", che mostra il percorso da una rubrica alla radice del sito; chiameremo questa pagina con un URL del tipo: "gerarchia.php3?id_rubrique=xxx
".
Nei modelli che devono mostrare la gerarchia a partire dalla rubrica attuale dobbiamo quindi indicare che il parametro in questione è {id_rubrique}
; se necessario, avremmo creato un ciclo che permette di ottenere il numero della rubrica in questione, e avremmo inserito il seguente codice all’interno di questo ciclo:
<INCLUDE(gerarchia.php3){id_rubrique}>
Nota: in questo caso il modellogerarchia.html
comincerà certamente con un ciclo RUBRIQUES con il criterio{id_rubrique}
...
È possibile ipotizzare che in alcuni modelli si vuole avere non la gerarchia in base a una rubrica "variabile" (secondo il contesto, per esempio il parametro passato nell’URL), ma in base a una rubrica di cui si sa già il numero. In tal caso è possibile impostare il valore del parametro così:
<INCLUDE(gerarchia.php3){id_rubrique=5}>
N.B. È possibile indicare più parametri nel tag <INCLUDE>
; tuttavia, nella pratica questo caso è molto raro. Evitare di aggiungere parametri inutili, che penalizzano la cache e rendono il sito più lento.
N.B. Poiché il file incluso è esso stesso un modello, esso avrà il proprio valore di $delais
[1]. Ciò può essere utile per separare elementi pesanti del sito, che devono essere rigenerati poco spesso, e altri elementi dinamici che invece devono essere aggiornati spesso (per esempio, la syndication).
In un contesto multilingue
Se viene attivato il multilinguismo di SPIP dalla versione SPIP 1.7.1 è possibile definire la lingua dell’ambiente di un modello incluso usando il parametro {lang}
.
- Se non è presente nessun parametro di lingua, cioè nella forma <INCLUDE(piede.php3)>
, il modello incluso viene chiamato usando la lingua predefinita del sito,
- <INCLUDE(piede.php3){lang=es}>
chiama il modello in spagnolo. È chiaramente possibile sostituire "es" con il codice ISO della lingua desiderata: en per l’inglese, fr per il francese, it per l’italiano, ecc. (vedi Internazionalizzare i modelli),
- e <INCLUDE(piede.php3){lang}>
chiama il modello nella lingua attuale del contesto di inclusione.
È importante notare che ciò rende possibile utilizzare i codici dei file di lingua nei modelli inclusi (vedi Internazionalizzare i modelli).
Al pari dei modelli di "primo livello", i modelli inclusi permettono gli stessi meccanismi di selezione per lingua. In altre parole, i modelli inclusi (in questa sede piede.html
) possono essere nominati in relazione a una data lingua (piede.es.html
, per esempio) così come qualsiasi altro modello. Ancora una volta, vedi "Internazionalizzare i modelli" per maggiori informazioni.