Fondamenti — versione archiviata

Il contenuto di questo articolo è valido solamente per le versioni fino alla SPIP 1.8.3 ed è obsoleto per le versioni dalla SPIP 1.9 e seguenti. Per le versioni recenti di SPIP, leggere qui.

La lettura del presente articolo non è comunque inutile. È necessario tenere presente quel che viene detto per i file .html, i file .php3 spariscono e gli URL cambiano.

Tutto il contenuto di un sito gestito con SPIP è inserito in un database MySQL. Per presentare le informazioni ivi contenute ai visitatori del sito è quindi necessario realizzare la procedura che consiste nel leggere le informazioni, ad organizzarle e a impaginarle, al fine di mostrare una pagina HTML nel browser Web.

Di solito, questa procedura è estremamente laboriosa:
-  bisogna conoscere la programmazione PHP e MySQL, e scrivere delle "routine" relativamente complesse;
-  integrare queste routine in una impaginazione elaborata con l’HTML è molto impegnativo;
-  bisogna considerare i problemi di performance: l’uso sistematico al codice MySQL e PHP è avido di risorse, rallenta la navigazione e, in casi estremi, provoca il blocco del server Web.

SPIP propone una soluzione completa per aggirare queste difficoltà:
-  l’impaginazione del sito è fatta tramite pagine HTML chiamate modelli di layout, contenenti istruzioni semplificate che permettono di indicare dove e come disporre le informazioni estratte dal database;
-  un sistema di cache permette di immagazzinare ogni pagina e quindi di evitare di provocare delle chiamate al database per ogni visita. Non solo il carico del server è ridotto, la velocità risulta ampiamente accelerata, inoltre un sito sotto SPIP può essere consultato anche quando il database MySQL si pianta.

Un paio di file per ogni tipo di documenti

L’utilità (e il limite) di un sistema di pubblicazione automatico è che non si deve ridefinire un’interfaccia differente in HTML per ogni pagina singola. Per esempio, tutti gli articoli beneficieranno della medesima interfaccia, il sistema metterà semplicemente delle informazioni differenti in questa grafica (vedremo più avanti che comunque SPIP permette una certa flessibilità).

Il vantaggio di questa procedura è evidente: si definisce un formato-tipo (modello) per tutti gli articoli, per esempio, e il sistema creerà ogni singola pagina mettendo automaticamente il titolo, il testo, i link... di ogni articolo.

Per ogni tipo di documento SPIP ha bisogno di due file: un file .php3 e uno .html. All’atto dell’installazione di SPIP verranno create diverse paia: « article.php3 / article.html », « rubrique.php3 / rubrique.html », ecc.

Naturalmente questi file sono modificabili e se ne possono creare di nuovi. Dalla versione [SPIP 1.8.2], inoltre, esiste un file page.php3 utilizzabile per tutti i tipi di documenti che si vorranno creare.

Il principio di funzionamento della cache

La chiamata a una pagina specifica viene effettuata tramite il file PHP. Per esempio, per chiamare l’articolo n°5, l’URL corrispondente è: http://www.miosito.net/article.php3?id_article=5

1. Il file chiamato è quindi article.php3, con il parametro id_article=5.

2. Il file article.php3 è un file PHP; il primo compito di tale file è di verificare nella cartella /CACHE sul proprio server se è già presente un file corrispondente a questo articolo.

2bis. Se tale file esiste nella cartella /CACHE, article.php3 verifica la data di creazione. Se questo file è abbastanza recente lo invia direttamente all’utente. Il processo di consultazione ha quindi termine.

3. Se tale file non esiste nella cartella /CACHE (prima visita su questo articolo, per esempio), oppure se il file è troppo vecchio, SPIP rigenera la pagina.

4. In tal caso viene caricata e analizzata la pagina article.html. Essa contiene l’impaginazione corrispondente a questo tipo di documento. Si tratta di HTML completo di indicazioni che permettono di mettere gli elementi estratti dal database. In base agli elementi richiesti da article.html, SPIP cerca le informazioni necessarie estratte dal database MySQL e le inserisce nei posti previsti.

5. Viene poi creato un file da article.php3, partendo dalla descrizione contenuta nel file article.html, con gli elementi estratti dal database. Questo file viene registrato nella cartella /CACHE e inviato al visitatore.

Durante una visita successiva, se l’intervallo di tempo tra le due visite è abbastanza breve, viene restituito il nuovo file immagazzinato nella cartella /CACHE, senza dover generare nuovamente la pagina attingendo al database. In caso di blocco del database il file contenuto nella cache viene inviato al visitatore in ogni caso, anche se "troppo vecchio".

N.B. Da quanto suesposto si vede che ogni pagina del sito viene messa nella cache singolarmente, e ogni aggiornamento è provocato dalle visite del sito. Non c’è, in particolare, un aggiornamento di tutte le pagine del sito contemporaneamente e a scadenze fisse (questo tipo di "grandi manovre" ha il difetto di sovraccaricare il server e di farlo piantare).

Il file PHP

Il file ".php3" è molto semplice. Per esempio, article.php3 contiene solo:

<?php
$fond = "article";
$delais = 24 * 3600;

include ("inc-public.php3");
?>

Il suo unico scopo è di impostare due variabili ($fond e $delais) e di chiamare il file che avvia il funzionamento di SPIP (inc-public.php3).

La variabile $fond è il nome del file che contiene la descrizione dell’impaginazione (il modello). In questo esempio, poiché $fond=“article”, il file di descrizione sarà contenuto dentro article.html [1]. Notare che, nella variabile $fond non si deve indicare l’estensione « .html ».

N.B. Il vantaggio di poter scegliere il nome di file di modello (che si può dedurre automaticamente dal nome del file .php3) è, se necessario, di utilizzare un altro nome. Ciò permette di non cancellare, eventualmente, i file HTML presenti da una versione precedente del sito e che non si desidera cancellare. Se esso esiste, da una versione precedente del sito, un file article.html che non si desidera cancellare, si utilizzerà per esempio un file modello per SPIP chiamato articolo-nuovo.html, e nel file article.php3 si imposterà:
$fond="articolo-nuovo".

La variabile $delais è l’età massima di utilizzo del file immagazzinato nella cartella /CACHE. Questo intervallo è espresso in secondi. Un intervallo di 3600 corrisponde quindi a un’ora; un intervallo di 24*3600 corrisponde a 24 ore.

Si modificherà tale valore in funzione di quanto frequentemente si aggiornano i contenuti del sito (nuovi articoli, nuove brevi...). Un sito aggiornato più volte al giorno può adottare un intervallo di un’ora; un sito che pubblica alcuni articoli ogni settimana può adottare un intervallo nettamente maggiore. Nello stesso modo, il contenuto delle pagine è importante: se si inserisce la syndication del contenuto dei siti aggiornati spesso, probabilmente si desidererà adeguare l’intervallo del sito a quello dei siti repertoriati.

N.B. Alcuni webmaster cedono alla tentazione di impostare degli intervalli irrisori (alcuni secondi) affinché il sito corrisponda in maniera molto precisa, istante dopo istante, alle ultime modifiche del database. In questo caso si perderanno tutti i vantaggi derivanti dal sistema della cache: le visite verranno rallentate molto e, in casi estremi, su siti molto frequentati, è possibile provocare anche dei blocchi al database (oppure farsi bandire dal proprio fornitore di hosting perché si monopolizza la potenza di calcolo dei suoi computer...).
N.B. Un’altra ragione che sembra indurre i webmaster a impostare degli intervalli molto brevi è la presenza dei forum sul proprio sito. In effetti, affinché i contributi vengano visualizzati nel momento in cui vengono inviati, essi credono che sia necessario ridurre il tempo di rigenerazione. È inutile: SPIP gestisce automaticamente questo aspetto; quando viene inviato un contributo a un forum, la pagina corrispondente viene cancellata dalla cache e immediatamente rigenerata, indipendentemente dall’intervallo impostato per quella pagina.

Dalla versione [SPIP 1.8.2] è possibile utilizzare uno stesso file .php3 per tutti i modelli. Si tratta del file page.php3 che si trova alla radice del sito. Il suo funzionamento è un po’ più complesso di quello appena descritto, ma gioca lo stesso ruolo. Quando viene utilizzato le variabili $fond e $delais possono essere passate come parametri, ad esempio: http://www.miosito.org/page.php3?fond=miomodello&id_rubrique=12

Il file HTML

In SPIP i file .html vengono chiamati modelli. Sono questi che descrivono l’interfaccia grafica delle pagine.

Questi file sono redatti direttamente in HTML, al quale si aggiungono delle istruzioni che permettono di indicare a SPIP quali elementi contenuti nel database devono essere estratti e dove li deve disporre (del tipo: "metti il titolo qui", "qui indica l’elenco degli articoli riguardanti lo stesso argomento", e via dicendo).

Le istruzioni per disporre gli elementi sono scritte in un linguaggio specifico, che è l’oggetto del presente manuale d’uso. Questo linguaggio è peraltro l’unica difficoltà di SPIP.

"Un altro linguaggio?" Be’ sì, è necessario imparare un nuovo linguaggio. Tuttavia, non è troppo complicato e permette di creare interfacce complesse molto rapidamente. In confronto alla coppia PHP/MySQL, noterete che vi farà guadagnare moltissimo tempo (soprattutto: è molto più semplice). È un markup language, cioè un linguaggio che utilizza dei marcatori simili a quelli dell’HTML.

N.B. Così come si impara l’HTML ispirandosi al codice sorgente dei siti che si visita, è possibile trarre ispirazione dai modelli utilizzati su altri siti che funzionano con SPIP. È sufficiente andare a cercare il file ".html" corrispondente. Per esempio, è possibile vedere il modello degli articoli di uZine (visualizzare il codice sorgente per ottenere il testo del modello).

Un’interfaccia diversa nello stesso sito

Innanzitutto, notiamo che è possibile creare delle paia di file per lo stesso elemento logico (articoli, rubriche, ...). Per esempio, possiamo creare dei file per visitare lo stesso articolo con interfacce differenti: article.php3/html per il formato normale, stampare.php3/html per lo stesso articolo in un formato adatto a essere stampato, articolo-testo.php3/html per l’articolo in un formato di testo (adatto per gli ipovedenti, per esempio), articolo-adsl.php/html con un’interfaccia piena di effetti grafici e adatta alle connessioni ad alta velocità, ecc.

-  Un’interfaccia diversa secondo le rubriche. Per lo stesso tipo di documento possiamo creare dei modelli differenti secondo le rubriche del sito. Si tratta di creare semplicemente nuovi file .html a seconda delle rubriche (inutile, qui, modificare il file .php3, ci limitiamo a giocare sui nomi dei file dei modelli).

È sufficiente completare il mome del file del modello con "-numero" (un trattino seguito dal numero di rubrica). Per esempio, se create un file: article-60.html, tutti gli articoli contenuti nella rubrica n°60 utilizzeranno questo modello (e non più il modello di default article.html). È bene notare che il numero indicato è quello di una rubrica. Se la rubrica 60 contiene delle sotto-rubriche, gli articoli contenuti in queste sotto-rubriche utilizzeranno anch’essi il nuovo modello article-60.html.

N.B. Nel nostro esempio, avremo cura di creare anche un modello rubrique-60.html, oppure un breve-60.html, ecc. per accompagnare il cambiamento dell’impaginazione in questa rubrica.

-  Un’interfaccia per una sola rubrica. (SPIP 1.3) Si può creare un’interfaccia che si applica a una rubrica, ma non alle sue sotto-rubriche. A tal fine dobbiamo creare un file: article=60.html, che si applicherà agli articoli della rubrica 60, ma non alle sue sotto-rubriche.

Cosa si può mettere in un file HTML

I file HTML sono essenzialmente dei file di "testo", completi di istruzioni per disporre gli elementi del database.

SPIP analizza unicamente le istruzioni di ubicazione degli elementi del database (codificati secondo il linguaggio specifico di SPIP); ignora completamente tutto quello che è nel file e che non corrisponde alle sue istruzioni.

Il loro contenuto essenziale è quindi in HTML. Si decide l’impaginazione, la versione dell’HTML desiderata, ecc. È possibile includere anche dei fogli di stile (CSS), oppure JavaScript, Flash... insomma: tutto quel che di solito si mette in una pagina Web.

Tuttavia è anche possibile (tutto è sempre e comunque solo testo) creare un XML (per esempio, "backend.php3/html" generato dall’XML).

Ancora più originale: tutte le pagine inviate al visitatore sono estratte dalla cartella /CACHE da una pagina scritta in PHP. Possiamo includere nel nostro modello delle istruzioni in PHP, queste saranno eseguite durante la visita. Questa possibilità, se usata in maniera fine, permette una grande flessibilità a SPIP, che è possibile completare (per esempio aggiungendo un contatore, ecc.), oppure fare evolvere alcuni elementi di impaginazione in base alle informazioni estratte dal database.

Note

[1Se article.html non esiste il file “dist” viene consultato in sua vece. A tale proposito leggere « Cosa sono i file "dist"? ».

Autore Fausto Barbarito Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, Deutsch, English, Español, italiano