<INCLURE> altres esquelets (plantilles)

Quan hi ha elements de text i bucles comuns a diversos fitxers, podem voler extreure aquests elements de les pàgines on es troben, instal·lar-los en un fitxer separat, i cridar-los a partir de les altres plantilles. D’aquesta manera, s’agrupa el codi comú en un fitxer únic, facilitant notablement les modificacions que afecten a diferents plantilles d’un sol cop.

D’aquesta manera instal·lem típicament, a dins d’aquests fitxers separats cridats a partr de nombrosos esquelets, elements com:
— les declaracions d’encapçalament de pàgines HTML (crida dels javascript, dels fulls d’estil...),
— els elements de navegació comuns a la majoria de pàgines (el capdamunt de la pàgina, la columna de l’esquerra...),
— el bàner superior (logotip, enllaços cap als crèdits del lloc, la pàgina de contacte...),
— un peu de pàgina...

Sintaxi d’inclusió

Les persones habituades al PHP coneixen la funció include, el principi de la qual és similar a la que es presenta aquí.

A partir d’SPIP 1.4, podem cridar un esquelet des d’un altre esquelet gràcies a l’etiqueta <INCLURE> (també podem fer servir <INCLUDE>, que és idèntica). La seva sintaxi general és:

<INCLURE(fichier.php3){paràmetre}...>

El «fichier.php3» és el nom del fitxer que volem integrar a dins de la seva pàgina. Per exemple, imaginem que totes les pàgines del lloc mostren les mateixes informacions al capdavall de la pàgina. Reagrupem llavors el codi SPIP i HTML d’aquest «peu de pàgina» a dins d’un fitxer «pied.html», el mateix esquelet cridat pel fitxer «pied.php3» (sempre segons el principi de les parelles de fitxers destinats a cridar esquelets). N’hi ha prou afegint la línia següent, a l’indret que desitgem, a cadascun dels esquelets que volem mostrar al capdavall de la pàgina:

<INCLURE(pied.php3)>

A partir d’SPIP 1.8.2 la distribució inclou un fitxer page.php3 que permet cridar qualsevol esquelet passant en paràmetre el «fons». D’aquesta manera podrem evitar el fitxer pied.php3 i substituir de manera avantatjosa la crida de més amunt per:

<INCLURE(page.php3){fond=pied}>

Aquesta sintaxi està encara molt més simplificada després d’SPIP 1.9, perquè ara ja només es necessita que l’esquelet a incloure tingui la forma:

<INCLURE{fond=pied}>

Inclusions que depenen del context

Algunes inclusions poden dependre del context. Per exemple, imaginem una plantilla «hierarchie», que mostri el camí que porta a una secció a partir de l’arrel del lloc; cridaríem a aquesta pàgina per una URL del tipus: «spip.php?page=hierarchie&id_rubrique=xxx».

En les plantilles que volen mostrar la jerarquia a partir de la secció on estem, fa falta indicar que el paràmetre corresponent és {id_rubrique}; si fos necessari, haurem creat un bucle que permeti recuperar el número de la secció corresponent, i col·locarem el següent codi a l’interior d’aquest bucle:

<INCLURE{fond=hierarchie}{id_rubrique}>

Nota: en aquest cas, la plantilla hierarchie.html començarà certament per un bucle seccions amb el criteri {id_rubrique}...

Podem imaginar que, en algunes plantilles, el que voldrem serà recuperar la jerarquia no en funció d’una secció «variable» (a caprici del context, per exemple el paràmetre passat a la URL), sinó en funció d’una secció de la que coneixem el número prèviament. Per fer això, hem de fixar el valor del paràmetre d’aquesta manera:

<INCLURE{fond=hierarchie}{id_rubrique=5}>

N.B. És possible indicar diversos paràmetres a dins de l’etiqueta <INCLURE>; no obstant, a la pràctica, aquest cas és poc freqüent. Eviteu afegir paràmetres inútils, que la única cosa que aconsegueixen és alentir i fer menys eficaç el vostre lloc.

N.B. Com que el fitxer inclòs és ell mateix una plantilla, tindrà el seu propi valor de $delais [1]. Això pot ser pràctic per separar els elements més pesats del lloc, que s’actualitzen menys sovint, i aquells elements que són més dinàmics i que necessiten una actualització més freqüent (per exemple, la sindicació).

En un context multilingüe

Si el multilingüisme d’SPIP està activat a partir de SPIP 1.7, SPIP 1.7.2 es pot definir la llengua de l’entorn d’un esquelet inclòs utilitzant el paràmetre {lang}.

-  Si no es fa servir cap paràmetre de llengua, és a dir en forma <INCLURE{fond=pied}>, l’esquelet inclòs es cridat utilitzant la llengua per defecte del lloc Web;

-  <INCLURE{fond=pied}{lang=es}> crida l’esquelet en castellà. Evidentment, podeu substituir «es» pel codi ISO de la llengua desitjada: en per l’anglès, ca pel català, fr pel francés, vi pel vietnamita, etc. (vegeu: «Internacionalitzar els esquelets (plantilles)»);

-  <INCLURE{fond=pied}{lang}> crida l’esquelet en la llengua actual del context d’inclusió.

Fixem-nos que això fa possible que utilitzem codis de fitxers de llengua en els esquelets inclosos (veure «Internacionalitzar els esquelets (plantilles)»).

Els esquelets inclosos suporten els mateixos mecanismes de selecció per llengua que els esquelets de «primer nivell». En altres paraules, els esquelets inclosos (en aquest cas pied.html) poden ser definits d’acord a una llengua determinada (pied.fr.html, per exemple) igual que qualsevol altre esquelet. Un cop més, vegeu «Internacionalitzar els esquelets (plantilles)» si en voleu conèixer més detalls.

#INCLURE en estàtic

La versió SPIP 1.9.1 ha introduït un altre mètode d’inclusió: #INCLURE.

La sintaxi <INCLURE{fond=..}> provoca la inclusió de pàgines a cada visita de l’internauta, faci referència a una pàgina que ja estigui a la memòria cau o no.

Amb la nova etiqueta [(#INCLURE{fond=...})], la inclusió es fa durant el càlcul de l’esquelet, i el seu resultat s’emmagatzema a la memòria cau de la pàgina que crida. Amb aquest sistema, no es pot gestionar una durada de vida $delais o #CACHE{}) reduïda per un esquelet inclòs; per contra, es fa possible aplicar filtres sobre els esquelets inclosos: [(#INCLURE{fond=lettre}|version_texte)].

<INCLURE{fond=..}> i [(#INCLURE{fond=..})] tenen, per tant, funcions diferents:
— amb <INCLURE{fond=..}>, cada esquelet inclòs té una memòria cau independent;
— amb [(#INCLURE{fond=..})], la pàgina principal cridant conté, en memòria cau, la totalitat del codi generat, i els fitxers inclosos no tenen memòria cau separada.

<INCLURE> i {doublons}

Hi ha un criteri de bucle {doublons}. Però, si s’utilitza un <INCLURE> en un esquelet, els doublons memoritzats no es transmeten a l’esquelet inclòs.

A partir d’SPIP 2.0, és possible evitar aquest problema. N’hi ha prou afegint el paràmetre {doublons}> a la crida de l’esquelet a incloure. Per exemple <INCLURE{fond=mapage}{doublons}>.

Notem tot i així que els doublons seleccionats en l’esquelet inclòs no "tornen a pujar" a dins de l’esquelet incloent.

<INCLURE> i Ajax

SPIP 2.0 introdueix la possibilitat d’utilitzar fàcilment la tecnologia Ajax, que permet clicar damunt d’un enllaç i només refrescar la part de pàgina on hi ha la zona que canviaria si es tornés a mostrar tota la pàgina amb els nous paràmetres. Per més detalls, vegeu l’article detallat.

Notes

[1Recordem que la variable $delais defineix la periodicitat d’actualització de la memòria cau. Veure la secció «El fitxer .php3» a «article 2169».

Carpeta

Autor merce Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, English, Español, français, italiano, Nederlands, Türkçe