De inhoud van een exec (skelet-)bestand

Een oproep vanuit het privé gedeelte van een pagina ?exec=naam laadt automatisch een skelet dat is opgeslagen als prive/exec/naam.html.

In de meeste gevallen is het aan te raden om deze methode te gebruiken in plaats van een PHP-bestand. Objectief is dat het privé gedeelte van SPIP zelf ook als skelet geschreven wordt en dus makkelijker aan te passen is. Dit maakt het dan mogelijk om lussen, insluitingen, bakens en autorisaties te gebruiken, net als elk ander SPIP skelet.

Voorbeeld van een leeg privé-skelet:

<!--#hierarchie-->
<ul id="chemin">
	<li>Een lijst van pagina's die een breadcrumb opbouwt</li>
</ul>
<!--/#hierarchie-->
 
<h1>Een pagina in het privé gedeelte opgebouwd uit een skelet</h1>
<p>Pagina inhoud</p>
 
<!--#navigation-->
<div class='cadre-info'>
Informatie in een navigatiekolom.
</div>
<!--/#navigation-->
 
<!--#extra-->
Wat extra inhoud in de extra kolom.
<!--/#extra-->

De tags <!--#hierarchie-->, <!--#navigation--> and <!--#extra--> scheiden de hoofdsecties van de pagina. Het privé gedeelte van SPIP zet deze secties automatisch om in de juiste HTML tags.

Is het resultaat van het skelet leeg, dan genereert SPIP automatisch een autorisatiefout.

Technisch gezien worden deze skeletten verwerkt door bestand ecrire/exec/fond.php. De volgende pipelines worden daarbij automatisch toegevoegd: affiche_gauche, affiche_droite en affiche_milieu door het doorgeven van de parameter exec:

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

De titel van de pagina wordt berekend aan de hand van de inhoud van de eerste HTML<h1> (of <hn>) tag die wordt gevonden.

Voorbeeld

Plug-in "Formidable" gebruikt de SPIP skeletten om haar pagina’s in het privé gedeelte op te bouwen. Om antwoorden in een formulier weer te geven wordt in een skelet de volgende code gebruikt:

<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}>
 
<!--#hierarchie-->
<ul id="chemin">
	<li>
		<a href="#URL_ECRIRE{formulaires_tous}" class="racine"><:formidable:formulaires_tous:></a>
	</li>
	<li>
		<span class="bloc">
			<em>&gt;</em>
			<a class="on" href="[(#URL_ECRIRE{formulaires_voir}
				|parametre_url{id_formulaire, #ID_FORMULAIRE})]">#TITRE</a>
		</span>
	</li>
</ul>
<!--/#hierarchie-->
 
<div class="fiche_objet">
	<a href="[(#URL_ECRIRE{formulaires_voir}
		|parametre_url{id_formulaire, #ID_FORMULAIRE})]" class="icone36" style="float:left;">
		<img width="24" height="24" src="#CHEMIN{images/formulaire-24.png}" />
		<span><:retour:></span>
	</a>
 
	<:formidable:voir_reponses:>
	<h1>#TITRE</h1>
	<div class="nettoyeur"></div>
</div>
 
<INCLURE{fond=prive/liste/formulaires_reponses}{id_formulaire}
	{titre=<:formidable:reponses_liste_publie:>}{ajax} />
 
<!--#navigation-->
<div class="cadre infos cadre-info">
	<div class="numero">
		<:formidable:voir_numero:>
		<p>#ID_FORMULAIRE</p>
	</div>
	<div class="hover">
		<a href="#SELF" class="cellule-h">
			[<img src="(#CHEMIN{images/formulaire-reponses-24.png})" style="vertical-align:middle;" alt="" />]
			<span style="vertical-align:middle;"><:formidable:reponses_liste:></span>
		</a>
	</div>
	<div>
		<a href="[(#URL_ECRIRE{formulaires_analyse}
			|parametre_url{id_formulaire, #ID_FORMULAIRE})]" class="cellule-h">
			[<img src="(#CHEMIN{images/formulaire-analyse-24.png})" style="vertical-align:middle;" alt="" />]
			<span style="vertical-align:middle;"><:formidable:reponses_analyse:></span>
		</a>
	</div>
</div>
<!--/#navigation-->
</BOUCLE_autoriser>
</BOUCLE_formulaire>

Opmerkingen:

  • Dit alles is opgenomen in een lus die controleert op het bestaan van het formulier: als het formulier niet bestaat, geeft het skelet niets terug en komt in plaats daarvan een foutmelding.
  • Op analoge wijze is het omhuld door een #AUTORISER test om te controleren of de huidige gebruiker de resultaten wel mag zien. In dit voorbeeld wordt de lus CONDITION uit plugin "Bonux" gebruikt om de lussen binnen deze voorwaarde te kunnen blijven lezen.
  • De <!--#hierarchie--> sectie toont een geschikt pad tussen de privé pagina’s van de plug-in.

Auteur hanjo Gepubliceerd op:

Vertalingen: English, français, Nederlands