Principi general - versió arxivada

Aquest article només és vàlid fins SPIP 1.8.3 i queda obsolet a partir d’SPIP 1.9. Per versions més recents d’SPIP, llegiu aquí.

La seva lectura tal i com està no és inútil. Cal recordar el que s’hi diu sobre els fitxers .html, els fitxers .php3 desapareixen i els URL canvien.

Tot el contingut d’un lloc gestionat per SPIP està emmagatzemat en una base de dades mySQL. Per presentar aquestes informacions a aquelles persones que visiten el lloc Web, fa falta realitzar l’operació que consisteix en llegir les informacions, organitzar-les i compaginar-les, amb la finalitat de mostrar una pàgina HTML al navegador Web.

Aquesta operació és generalment bastant dificultosa:
-  és necessari conèixer la programació PHP i MySQL, i escriure «rutines» relativament complexes;
-  la integració d’aquestes rutines a la compaginació d’una pàgina HTML elaborada és força pesada.
-  hem de tenir en compte problemes de rendiment: el recurs sistemàtic al codi mySQL i PHP és llaminer en recursos, alenteix la visita i, en casos extrems, provoca que el servidor Web es pugui penjar.

SPIP proposa una solució completa per a donar la volta a aquestes dificultats:
-  la compaginació del lloc s’efectua a través de pàgines HTML anomenades esquelets, que contenen instruccions simplificades que permeten indicar on i com es situen les informacions extretes de la base de dades a dins de la pàgina;
-  un sistema de memòria cau permet emmagatzemar cada pàgina i així evitar que es provoquin crides a la base de dades a cada visita. No només es redueix la càrrega al servidor i la velocitat s’accelera àmpliament, sinó que un lloc que funcioni amb SPIP queda consultable fins i tot quan la base mySQL no es troba accessible.

Per cada tipus de document, un parell de fitxers

L’interès (i la limitació) d’un sistema de publicació automatitzat, és que no definirem una interfície diferent en HTML per cadascuna de les pàgines aïllades. Per exemple, tots els articles tindran la mateixa interfície; el sistema posarà simplement informacions diferents en aquesta configuració (veurem, més endavant, que SPIP permet no obstant això una certa flexibilitat).

L’avantatge d’aquesta manera de procedir és evident: es defineix un format-tipus (esquelet) per, per exemple, tots els articles, i el sistema crearà cada pàgina individual posant-hi automàticament el títol, el text, els enllaços de navegació... de cada article.

Per cada tipus de document, l’SPIP us demana dos fitxers: un fitxer .php3} i un fitxer .html. Després de la instal·lació d’SPIP, trobareu així les parelles: «article.php3 / article.html», «rubrique.php3 / rubrique.html», etc.

Podeu, naturalment, modificar aquestes parelles i crear-ne d’altres. A partir d’[SPIP 1.8.2], no obstant, hi ha un fitxer page.php3 utilitzable per a tots els tipus de documents que es podran crear.

El principi de funcionament de la memòria cau

La crida d’una pàgina concreta es fa per mitjà del fitxer PHP. Per exemple, per cridar l’article número 5, l’URL corresponent és: http://www.elmeulloc.net/article.php3?id_article=5

1. El fitxer sol·licitat és, per tant, article.php3 amb el paràmetre id_article=5.

2. El fitxer article.php3 és un fitxer PHP; la seva primera tasca consisteix en verificar a dins de la carpeta /CACHE del vostre servidor, si ja existeix un fitxer que correspongui amb aquest article.

2bis. Si aquest fitxer existeix a /CACHE, article.php3 verifica la data de la seva creació. Si aquest fitxer és suficientment recent, el retorna directament a l’usuari. Llavors, el procés de consulta s’ha acabat.

3. Si no existeix aquest fitxer a /CACHE (en el cas, per exemple, de ser la primera visita a aquesta article), o si la seva data de creació és massa antiga, l’SPIP posa en marxa el càlcul d’aquesta pàgina.

4. És llavors la pàgina article.html la que és carregada i analitzada. Aquesta pàgina conté la compaginació corresponent a aquest tipus de document. Es tracta d’un HTML amb indicacions completes que permeten situar els elements extrets de la base de dades. En funció dels elements sol·licitats per article.html, SPIP va a buscar les informacions necessàries extretes de la base de dades mySQL i les insereix als indrets previstos.

5. D’aquesta manera, un fitxer és creat per article.php3, a partir de la descripció continguda a article.html, amb els elements extrets de la base de dades. Aquest fitxer és, llavors, arxivat a dins de la carpeta /CACHE i tramès al visitant de la pàgina.

En una propera visita, si el temps transcorregut entre les dues visites és prou curt, serà aquest nou fitxer emmagatzemat a /CACHE el que es mostrarà, sense necessitat de fer un nou càlcul a partir de la base de dades. En el cas que no estigui disponible la base de dades, serà forçosament el fitxer que hi ha a la memòria cau el que es mostrarà, encara que sigui «massa vell».

Nota. Podem veure aquí que cada pàgina del lloc Web es arxivada a la memòria cache individualment, i que cada actualització de la pàgina està provocada per les visites del lloc. No hi ha, per tant, una actualització regular de totes les pàgines del lloc a la vegada (aquest tipus de «gran maniobra» provoca una sobrecàrrega del servidor i fa que a vegades es pugui penjar).

El fitxer PHP

El fitxer «.php3» és molt simple. Per exemple, article.php3 conté únicament:

El seu únic objectiu és doncs fixar dues variables ($fond i $delais) i cridar el fitxer que activa el funcionament d’SPIP (inc-public.php3).

La variable $fond és el nom del fitxer que conté la descripció de la compaginació (l’equelet). Aquí, ja que $fond="article", el fitxer de descripció s’inclourà a dins de article.html [1]. Fixeu-vos que a dins de la variable $fond, no s’indica la terminació «.html».

Nota. L’interès d’escollir un mateix el nom del fitxer de l’esquelet (que es podia haver deduït automàticament del nom del fitxer .php3) és, per quan sigui necessari, utilitzar un altre nom. És per no trepitjar, eventualment, fitxers HTML que subsistirien d’una antiga versió del lloc i que no volem suprimir. Si existeix, d’una versió anterior del lloc, el fitxer article.html que no es vol esborrar, s’utilitzarà per exemple un fitxer plantilla per l’ SPIP anomenat article-nou.html, i es col·locarà dins article.php3: _$fond="article-nou".

La variable $delais és el temps màxim per a la utilització del fitxer emmagatzemat a /CACHE. Aquest retard és fixat en segons. Un retard de 3600 correspon, doncs, a una hora; un retard de 24*3600 correspon a 24 hores,...

Jugarem amb aquest valor segons la freqüència d’actualització de continguts en el lloc (nous articles, noves breus...). Un lloc que s’actualitzi diverses vegades al dia podrà optar per un retard d’un hora; un lloc on es publiquin alguns articles a la setmana adoptarà un retard clarament més ampli. El contingut de les pàgines és, també, important: si voleu fer servir la sindicació del contingut dels llocs actualitzats amb més freqüència, sens dubte voldreu adaptar el vostre propi retard al dels llocs referenciats.

Nota. Alguns administradors de pàgines Web sucumbeixen a la temptació de fixar retards irrisoris (alguns segons), per tal que el lloc correspongui molt exactament, a cada instant, a les darreres modificacions de la base de dades. En aquest cas, perdeu tots els avantatges del sistema de memòria cache: les visites s’alenteixen molt i, posant-ho al límit, en aquells llocs molt freqüentats, podeu provocar una parada de la base de dades (o que la persona que el hostatja el vostre lloc us expulsi perquè monopolitzeu la potència de la seva màquina...).
Nota. Una altra raó que sembla animar als administradors de pàgines Web a fixar retards molt curts és la presència de fòrums en el seu lloc. En efecte, per tal que les contribucions es mostrin en el mateix moment que són posades, creuen que els és necessari reduir el retard de l’actualització. És inútil: SPIP gestiona aquest aspecte automàticament; quan s’afegeix una contribució a un fòrum, la pàgina corresponent s’esborra de la memòria cau i es torna a calcular immediatament, sigui quin sigui el retard que s’hagi fixat per aquesta pàgina.

A partir d’ [SPIP 1.8.2], es pot utilitzar un mateix fitxer .php3 per a tots els esquelets. Es tracta d’un fitxer page.php3 que es troba a l’arrel del lloc Web. És una mica més complex que el que hem descrit més amunt, però juga el mateix paper. Quan l’utilitzem, les variables $fond i $fond poden ser passades en paràmetres, per exemple: http://www.elmeulloc.org/page.php3?fond=monsquelette&id_rubrique=12

El fitxer HTML

A dins d’SPIP, els fitxers .html s’anomenen plantilles o esquelets. Aquests són els que determinen la interfície gràfica de les vostres pàgines.

Aquests fitxers són redactats directament en HTML, al que s’hi afegeixen instruccions que permeten indicar a SPIP quins elements ha d’extreure de la base de dades i on els haurà de col·locar (del tipus : «col·locar el títol aquí», «indicar en aquest lloc la llista dels articles que es refereixen al mateix tema», etc.).

Les instruccions de situació dels elements són redactades en un llenguatge específic, que s’explica en aquest manual d’ús. D’altra banda, aquest llenguatge és la única dificultat d’SPIP.

«Encara un llenguatge?» Doncs si. Haureu d’aprendre un nou llenguatge. No obstant, no és molt complicat i permet crear interfícies complexes molt ràpidament. En relació a la parella PHP/mySQL, veureu que us permet guanyar molt temps (sobretot: és molt més simple). Es tracta d’un markup language, és a dir un llenguatge que fa servir etiquetes semblants a les de l’HTML.

Nota. De la mateixa manera que s’aprèn HTML inspirant-se en el codi font dels llocs que es visiten, podeu inspirar-vos en les plantilles utilitzades per altres llocs que funcionin sota SPIP. N’hi ha prou en anar a buscar el fitxer «.html» corresponent. Per exemple, podeu veure la plantilla dels articles d’uZine (visualitzar el codi font per obtenir el text de la plantilla).

Una interfície diferent a dins del mateix lloc Web

D’entrada, convé que tingueu present que és possible crear parelles de fitxers pel mateix element lògic (articles, seccions, ...). Per exemple, podeu crear fitxers per visitar un mateix article amb dues interfícies diferents: article.php3/html pel format normal, imprimir.php3/html pel mateix article en un format adaptat per a ser imprès, article-text.php3/html per l’article en format text (adaptat a aquells que tenen problemes de visió, per exemple), article-pesat.php/html amb una interfície molt pesada adaptada a la banda ampla, etc.

-  Una interfície diferent segons les seccions. Podeu, per un mateix tipus de document, crear plantilles diferents segons les seccions del lloc. Es tracta de crear simplement nous fitxers .html en funció de les seccions (aquí és inútil modificar el fitxer .php3, ens haurem d’acontentar en jugar amb els noms dels fitxers plantilles).

N’hi ha prou en completar el nom del fitxer plantilla amb «-numéro» (un guionet seguit d’un número de secció). Per exemple, si creeu un fitxer: article-60.html, tots els articles continguts dins la secció nº60 utilitzaran aquesta plantilla (i no faran servir més la plantilla per defecte article.html). Prengueu bona nota: el número indicat és el d’una secció. Si aquesta secció 60 té subseccions, els articles que hi puguin haver en aquestes subseccions també faran servir la nova plantilla article-60.html.

Nota. En el nostre exemple, tindrem també interès en crear una rubrique-60.html veure una breve-60.html, etc. per acompanyar el canvi en la configuració d’aquesta secció.

-  Una interfície per a una única secció. (SPIP 1.3) Es pot crear una interfície que s’apliqui a una secció, però que no s’apliqui a les seves subseccions. Per això, haurem de crear un fitxer: article=60.html, que s’aplicarà únicament als articles de la secció 60, però en cap cas a les seves subseccions.

Què es pot incloure en un fitxer HTML

Els fitxers HTML són, essencialment, fitxers de «text», completats amb instruccions de situació dels elements de la base de dades.

SPIP analitza únicament les instruccions de situació dels elements de la base de dades (codificats segons el llenguatge específic d’SPIP) ; tant li fa el que s’hagi posat dins d’aquest fitxer i/o que no correspongui a aquestes instruccions.

El seu contingut essencial és, doncs, HTML. Vosaltres mateixos determineu l’aspecte de la pàgina, la versió d’HTML que necessiteu, etc. Podeu incloure-hi, evidentment, fulls d’estil (CSS), però també JavaScript, Flash... A grans trets, tot allò que es posa habitualment en una pàgina Web.

Però podeu, igualment, (tot això continua sent text) crear XML (per exemple, «backend.php3/html» genera XML).

Més original: totes les pàgines re tornades al visitant són tretes del /CACHE per una pàgina escrita en PHP. Per tant, podeu incloure en les vostres plantilles instruccions en PHP, que seran executades durant la visita. Utilitzada amb precisió, aquesta possibilitat permet una gran agilitat a l’SPIP, al que així podreu complementar (per exemple afegint un comptador, etc.), o bé fer evolucionar alguns elements de compaginació en funció de les informacions extretes de la base de dades.

Notes

[1Si article.html no existeix, el fitxer «dist» és agafat al seu lloc. Llegir amb aquesta finalitat «Què són els fitxers «dist»?».

Autor merce Publié le : Mis à jour : 26/10/12

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