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.
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, es pot cridar una plantilla des d’una altra plantilla gràcies a l’etiqueta <INCLURE> (també es pot fer servir <INCLUDE>, que és idèntica). La seva sintaxi general és:
<INCLURE{nom_du_fichier_a_inclure}{paramètre}...>
El nom_del_fitxer_a_incloure és el nom del fitxer (sense l’extensió .html) que es vol integrar a la pàgina. Imaginem, per exemple, que totes les pàgines del lloc mostren les mateixes informacions al peu de pàgina. S’agrupa el codi SPIP i HTML d’aquest «peu de pàgina» en un fitxer «pied.html». En tenim prou afegint aquesta línia, a l’indret que desitgem, a cadascuna de les plantilles que vol mostrar el peu de pàgina:
Tinguem en compte que podem arribar fins a l’esquelet que es trobi a dins d’un subdirectori:
<INCLURE{formulaire/essai/fichier}...> [1]
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:
Nota: en aquest cas, la plantilla
hierarchie.htmlcomenç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:
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.
De tota manera, igual com existeix la parella #SET/#GET (que només funciona a dins de l’esquelet en el que estem), podem utilitzar la sintaxi següent:
<INCLURE{squelette}{votre_variable=une_valeur}>
El contingut de "votre_variable" es podrà continuar tot seguit a la plantilla enfant per #ENV{votre_variable}
N.B. Com que el fitxer inclòs és ell mateix una plantilla, tindrà el seu propi valor de #ENV{delais} [2]. 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{squelette}>, l’esquelet inclòs es cridat utilitzant la llengua per defecte del lloc Web;
-
- <INCLURE{squelette}{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 als 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, veure «Internacionalitzar els esquelets (plantilles)» si en volem conèixer més detalls.
