SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

<INCLURE> d’autres squelettes

Août 2002 — mis à jour le : Décembre 2010

Toutes les versions de cet article :


Lorsque l’on a des éléments de texte et des boucles communs à plusieurs fichiers, on peut vouloir extraire ces éléments des pages où ils se trouvent, les installer dans un fichier séparé, et les appeler depuis les autres squelettes. De cette façon, le code commun est regroupé dans un unique fichier, ce qui facilite notamment les modifications qui concernent plusieurs squelettes d’un seul coup.

On installe ainsi typiquement, dans de tels fichiers séparés appelés depuis de nombreux squelettes, des éléments tels que :
— les déclarations d’entête des pages HTML (appel des javascript, des feuilles de style...),
— les éléments de navigation communs à la plupart des pages (en haut de page, en colonne de gauche...),
— la bannière supérieure (logo, liens vers les crédits du site, la page de contact...),
— un pied de page...

Syntaxe d’inclusion

Les habitués de PHP connaissent la fonction include, dont le principe est similaire à ce qui est présenté ici.

Depuis SPIP 1.4 , on peut appeler un squelette depuis un autre squelette grâce à la balise <INCLURE> (on peut aussi utiliser <INCLUDE>, qui est identique). Sa syntaxe générale est :

<INCLURE{fond=fichier, paramètres ...}>

Le « fichier » est le nom du fichier que l’on veut intégrer dans sa page. Par exemple, imaginons que toutes les pages du site affichent les mêmes informations en bas de page. On regroupe alors le code SPIP et HTML de ce « pied de page » dans un fichier « pied.html ». Il suffit d’ajouter la ligne suivante, à l’endroit voulu, dans chacun des squelettes voulant afficher le bas de page :

Inclusions dépendant du contexte

Certaines inclusions peuvent dépendre du contexte. Par exemple, imaginons un squelette « hierarchie », qui affiche le chemin menant à une rubrique depuis la racine du site ; on appelerait cette page par une URL de la forme : « spip.php?page=hierarchie&id_rubrique=xxx ».

Dans les squelettes voulant afficher la hiérarchie à partir de la rubrique courante, il faut donc indiquer que le paramètre concerné est {id_rubrique} ; si nécessaire, on aura créé une boucle permettant de récupérer le numéro de la rubrique concernée, et on placera le code suivant à l’intérieur de cette boucle :

Note : dans ce cas, le squelette hierarchie.html commencera certainement par une boucle rubriques avec le critère {id_rubrique}...

On peut imaginer que, dans certains squelettes, on désire récupérer non pas la hiérarchie en fonction d’une rubrique « variable » (au gré du contexte, par exemple le paramètre passé dans l’URL), mais en fonction d’une rubrique dont on connaît à l’avance le numéro. Pour cela, on peut fixer la valeur du paramètre ainsi :

N.B. Il est possible d’indiquer plusieurs paramètres dans la balise <INCLURE> ; cependant ce cas est très rare en pratique. Evitez d’ajouter des paramètres inutiles, qui rendront le cache moins efficace et votre site plus lent.

N.B. Le fichier inclus étant lui-même un squelette, il disposera donc de sa propre valeur de #CACHE [1]

Dans un contexte multilingue

Si le multilinguisme de SPIP est activé, depuis SPIP 1.7, SPIP 1.7.2 , il est possible de définir la langue de l’environnement d’un squelette inclus en utilisant le paramètre {lang}.

-  S’il n’y a pas de paramètre de langue utilisé, c’est-à-dire sous la forme <INCLURE{fond=pied}>, le squelette inclus est appelé en utilisant la langue par défaut du site ;

-  <INCLURE{fond=pied, lang=es}> appelle le squelette en espagnol. Bien sûr, vous pouvez remplacer « es » par le code ISO de la langue souhaitée : en pour l’anglais, fr pour le français, vi pour le vietnamien, etc. (voir : « Internationaliser les squelettes ») ;

-  <INCLURE{fond=pied, lang}> appelle le squelette dans la langue courante du contexte d’inclusion.

Il convient de noter que cela rend possible l’utilisation des codes de fichiers de langue dans les squelettes inclus (voir : « Internationaliser les squelettes »).

Les squelettes inclus supportent les mêmes mécanismes de sélection par langue que les squelettes de « premier niveau ». En d’autres termes les squelettes inclus (ici pied.html) peuvent être déterminés par rapport à une certaine langue (pied.es.html, par exemple) de la même manière que tout autre squelette. Encore une fois, voir « Internationaliser les squelettes » pour plus de détails.

#INCLURE en statique

La version SPIP 1.9.1 a introduit une autre méthode d’inclusion : #INCLURE.

La syntaxe <INCLURE{fond=..}> provoque l’inclusion des pages à chaque visite d’un internaute, que celle-ci concerne une page déjà en cache ou non.

Avec la nouvelle balise [(#INCLURE{fond=...})], l’inclusion est réalisée lors du calcul du squelette, et son résultat est stocké dans le cache de la page appelante. Avec ce système, on ne peut plus gérer une durée de vie (#CACHE{}) réduite pour un squelette inclus ; en revanche il devient possible d’appliquer des filtres sur le squelette inclus : [(#INCLURE{fond=lettre}|version_texte)].

<INCLURE{fond=..}> et [(#INCLURE{fond=..})] ont donc des fonctionnements différents :
— avec <INCLURE{fond=..}>, chaque squelette inclus a un cache indépendant ;
— avec [(#INCLURE{fond=..})], la page principale appelante contient, en cache, l’intégralité du code généré, et les fichiers inclus n’ont pas de cache séparé.

<INCLURE> et {doublons}

Il existe un critère de boucle {doublons}. Or, si on utilise un <INCLURE> dans un squelette, les doublons mémorisés ne sont pas transmis au squelette inclus.

Depuis SPIP 2.0, il est possible de contourner ce problème. Il suffit pour cela de rajouter le paramètre {doublons}> à l’appel du squelette à inclure. Par exemple <INCLURE{fond=mapage, doublons}>.

Notons toutefois que les doublons sélectionnés dans le squelette inclus ne "remontent" pas dans le squelette incluant.

<INCLURE> et ajax

SPIP 2.0 introduit la possibilité d’utiliser facilement la technologie ajax, qui permet de cliquer sur un lien et de ne rafraichir dans la page que la zone qui changerait si on ré-affichait toute la page avec les nouveaux paramètres. Pour plus de détails, voir l’article détaillé.

Notes

[1Rappelons que la variable #CACHE définit la périodicité de mise à jour du cache. Cela peut s’avérer pratique pour séparer des éléments lourds du site, que l’on recalculera peu souvent, et quelques éléments dynamiques nécessitant une mise à jour fréquente (par exemple, syndication).


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé