Syntaxes d’appel de pages

  Comment faire exécuter un fichier depuis un squelette

Pour obtenir l’exécution d’un traitement ou d’une édition dans un contexte SPIP, il faut comprendre le mode d’interprétation des squelettes et fichiers par SPIP pour maitriser les syntaxes d’appel des noisettes entre répertoires, pour la construction dynamique d’une page Internet, qu’elle soit publique ou privée.

Cela induit la compréhension des deux phases successives de traitements des fichiers par le compilateur SPIP, pour le pré-calcul ("compilation") des squelettes, puis en page HTML par l’interpréteur php avant envoi au client et au cache des squelettes..

Article publié le 24 avril 2013, et actualisé en février 2019

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

En effet, SPIP effectue deux passes sur le calcul des pages :

  1. pour interpréter les squelettes, et pré-générer le fond de page en php exécutable,
  2. pour calculer à partir de ce pré-squelette généré, la page dynamique [1] à envoyer en HTML .

Ces deux étapes permettent de mieux comprendre comment appeler une page programmée, au sein des squelettes.

Spip recherchera un fichier de dossier/nom.extension donnée, dans un éventail de dossiers, s’arrêtant au premier trouvé dans l’ordre précis :
- dans le dossier ./squelettes défini par l’utilisateur,
- dans les divers dossiers squelettes des plugins, puis des plugins-dist, en respectant les dépendances d’utilisation [2] et sinon par ordre alphabétique des préfixes [3]..
- dans les répertoires natifs ./squelettes-dist ou ./privé.
Bien évidement, l’indication d’un sous-dossier forcera la recherche a se positionner à chaque fois dans le sous-dossier homonyme des chemins ci-dessus.

 1. Interprétation des Squelettes

Les squelettes interprétés par SPIP sont obligatoirement des fichiers d’extension HTML (non significative [4]), récupérés :
- par l’appel direct d’une URL de page
- soit par un lien <a href="">..</a> d’une page déjà appelée,
- soit par un lien ?page=.. (calculé automatiquement par la balise #URL_PAGE) faisant appel au squelette principal de la page [5].
- par la détection d’une balise Spip d’inclusion <INCLURE{fond=..}> ou #INCLURE{fond=..}, avec le même principe (sans préfixe Z), pour intégrer d’autres noisettes !
Si aucun fichier correspondant n’est trouvé dans cette phase, Spip arrete son travail en vous donnant un panneau d’avertissement "squelette non trouvé" !

Si le fichier trouvé possède une extension différente de .html, il n’est pas interprété par Spip (à savoir que d’éventuelles balises SPIP n’y seront pas traduites), mais néanmoins ajouté au généré...
En particulier, une inclusion .php (include('truc.php'); n’est pas exécutée à ce niveau, mais l’instruction php figure déjà dans le généré disponible pour la seconde passe.....

Ce processus est relancé pour chaque page-type, si vous utilisez le paramètre &var_mode=recalcul.

Le résultat obtenu -un source php, avec les requêtes SQL préparées, prêt à l’interprétation- est stocké dans un premier cache interne : le cache de squelettes. Chaque page pourra être calculée à partir de ce source-programme, en fonction des paramètres identifiants les valeurs-clés à lire dans la base de données.

 2. Calcul de la page dynamique

L’appel d’une page Internet précise généralement des valeurs d’id_article ou autres valeurs-clé, qui seront utilisées pour produire la page finale [6] en html ’propre’ : celle-ci est transmise au visiteur, et stockée en cache (pour pouvoir être servie rapidement lors d’une prochaine demande, ou si l’accès a la base de données est perdu. .

Ce calcul de page effectue réellement les requêtes à la base de données, avec les valeurs paramétrées à l’appel, pour insérer le texte des enregistrements lus, à la place définie initialement par les balises de champ dans le squelette. : ce résultat est également mis en cache de page en même temps qu’il est servi au visiteur ; à une prochaine visite sur le site, cette page "cachée" sera eservie directement par SPIP sans aucun calcul, sous réserve d’être encore dans la durée de validité donnée en #CACHE. A cette occasion, les instructions .php éventuellement insérées sont aussi évaluées.... et c’est là qu’apparaissent ces erreurs EVAL’ que vous avez peut-être déjà vues..

Quelques compléments sur le cache SPIP
L’intégration native d’un double système de cache des pages dans SPIP représente un avantage très spécifique, notable en termes de résistance a la charge serveur...
- attention à la multiplication des caches introduites par la gestion de l’environnement, surtout pour tenir compte des visiteurs authentifiés (cf. #SESSION), encore amplifiée par la fragmentation introduite par les multiples noisettes d’un systeme Z ou noiZetier..
- dans le cas d’une utilisation des préprocesseurs CSS, il faut rajouter en amont un calcul préalable des fichers CSS, automatisé par le plugin LESS-CSS->https://contrib.spip.net.


 Les erreurs signalées par SPIP

Si le squelette principal demandé n’est pas trouvé (il n’existe pas !), l’erreur est assez facile à comprendre :

erreur de squelette : page inconnue

vous remarquerez les boutons spéciaux dans le bandeau d’administration !


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1enrichie par les bonnes données extraites dynamiquement de la base Articles.

[2Un plugin "utilisant" un autre sera exploré en priorité.

[3Préfixes ou "radical" des squelettes ; ne pas confondre avec l’autre notion de prefix des jeux de tables en base de données

[4Le contenu réel peut être de toute nature, y compris php ou css !

[5Sous Z, le squelette est recherché avec un nom préfixé de contenu/page-.

[6Si elle n’existait pas dans le cache récent !


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 24 avril 2013, et actualisé en février 2019 .

Répondre à cet article