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, puis par l’interpréteur php avant envoi au client et au cache..


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 : 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. ; à 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..


 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 :

PNG - 49.7 ko
erreur de squelette : page inconnue

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


Merci de nous signaler les coquilles 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 visibles seulement pour les inscrits.

Article publié le 24 avril 2013, et actualisé en mai 2013 .

Répondre à cet article