Contenu d’un fichier exec (squelette)

L’appel dans l’espace privé d’une page ?exec=nom charge automatiquement un squelette placé dans prive/exec/nom.html.

Dans la majorité des cas, il est recommandé d’utiliser cette méthode plutôt qu’un fichier PHP. L’objectif est que l’espace privé de SPIP soit lui aussi écrit en squelette, donc plus facilement personnalisable. Il est ainsi possible d’utiliser des boucles, inclusions, balises, autorisations, comme dans tout squelette SPIP.

Exemple de squelette d’une page privée vide :

  1. <!--#hierarchie-->
  2. <ul id="chemin">
  3. <li>Une liste de pages constituant un chemin</li>
  4. </ul>
  5. <!--/#hierarchie-->
  6.  
  7. <h1>Une page priv&eacute;e directement en squelette</h1>
  8. <p>Du contenu dans la page</p>
  9.  
  10. <!--#navigation-->
  11. <div class='cadre-info'>
  12. Une information dans une colonne de navigation.
  13. </div>
  14. <!--/#navigation-->
  15.  
  16. <!--#extra-->
  17. Du contenu en plus dans la colonne extra.
  18. <!--/#extra-->

Télécharger

Les encadrements <!--#hierarchie-->, <!--#navigation--> et <!--#extra--> servent à séparer les blocs principaux de la page. De manière automatique, l’espace privé de SPIP va déplacer chacun de ces blocs dans des balises HTML appropriées.

Si le squelette ne renvoie que du vide, alors SPIP génèrera automatiquement une erreur d’autorisation.

D’un point de vue technique, ces squelettes sont traités par le fichier ecrire/exec/fond.php. Automatiquement, les pipelines suivants sont ajoutés : affiche_hierarchie, affiche_gauche, affiche_droite et affiche_milieu en passant en argument le nom du paramètre exec :

  1. echo pipeline('affiche_milieu', array('args' => array('exec' => $exec), 'data' => ''));

Aussi, le titre de la page privée est calculé en extrayant le contenu de la première balise HTML <h1> (ou <hn>) rencontrée.

Exemple

Le plugin « Formidable » utilise les squelettes SPIP pour construire les pages de l’espace privé. Pour afficher les réponses à un formulaire, il fait :

  1. <BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
  2. <BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}>
  3.  
  4. <!--#hierarchie-->
  5. <ul id="chemin">
  6. <li>
  7. <a href="#URL_ECRIRE{formulaires_tous}" class="racine"><:formidable:formulaires_tous:></a>
  8. </li>
  9. <li>
  10. <span class="bloc">
  11. <em>&gt;</em>
  12. <a class="on" href="[(#URL_ECRIRE{formulaires_voir}
  13. |parametre_url{id_formulaire, #ID_FORMULAIRE})]">#TITRE</a>
  14. </span>
  15. </li>
  16. </ul>
  17. <!--/#hierarchie-->
  18.  
  19. <div class="fiche_objet">
  20. <a href="[(#URL_ECRIRE{formulaires_voir}
  21. |parametre_url{id_formulaire, #ID_FORMULAIRE})]" class="icone36" style="float:left;">
  22. <img width="24" height="24" src="#CHEMIN{images/formulaire-24.png}" />
  23. <span><:retour:></span>
  24. </a>
  25.  
  26. <:formidable:voir_reponses:>
  27. <h1>#TITRE</h1>
  28. <div class="nettoyeur"></div>
  29. </div>
  30.  
  31. <INCLURE{fond=prive/liste/formulaires_reponses}{id_formulaire}
  32. {titre=<:formidable:reponses_liste_publie:>}{ajax} />
  33.  
  34. <!--#navigation-->
  35. <div class="cadre infos cadre-info">
  36. <div class="numero">
  37. <:formidable:voir_numero:>
  38. <p>#ID_FORMULAIRE</p>
  39. </div>
  40. <div class="hover">
  41. <a href="#SELF" class="cellule-h">
  42. [<img src="(#CHEMIN{images/formulaire-reponses-24.png})" style="vertical-align:middle;" alt="" />]
  43. <span style="vertical-align:middle;"><:formidable:reponses_liste:></span>
  44. </a>
  45. </div>
  46. <div>
  47. <a href="[(#URL_ECRIRE{formulaires_analyse}
  48. |parametre_url{id_formulaire, #ID_FORMULAIRE})]" class="cellule-h">
  49. [<img src="(#CHEMIN{images/formulaire-analyse-24.png})" style="vertical-align:middle;" alt="" />]
  50. <span style="vertical-align:middle;"><:formidable:reponses_analyse:></span>
  51. </a>
  52. </div>
  53. </div>
  54. <!--/#navigation-->
  55. </BOUCLE_autoriser>
  56. </BOUCLE_formulaire>

Télécharger

Remarques :

  • L’ensemble est entouré d’une boucle testant l’existence du formulaire : s’il n’existe pas le squelette ne renverra rien et produira une erreur.
  • De la même façon il est entouré d’un test avec #AUTORISER pour vérifier que la personne a le droit de voir les réponses. On utilise ici la boucle CONDITION du plugin « Bonux », afin de pouvoir continuer à écrire des boucles SPIP à l’intérieur de la condition.
  • Le bloc <!--#hierarchie--> affiche un chemin pertinent parmi les pages privées du plugin.

Auteur Matthieu Marcillaud, RastaPopoulos Publié le : Mis à jour : 12/05/17

Traductions : English, français