Autre fonction extrêmement importante de SPIP,
recuperer_fond()
permet de retourner le résultat du calcul d’un squelette donné. C’est en quelque sorte l’équivalent de
<INCLURE{fond=nom} />
des squelettes mais en PHP.
Elle prend 1 à 4 paramètres :
-* nom et adresse du fond (sans extension)
-* contexte de compilation (tableau clé/valeur)
-* tableau d’options
-* nom du fichier de connexion à la base de données à utiliser
{{{Utilisation simple}}}
Le retour est le code généré par le résultat de la compilation :
$code = recuperer_fond($nom, $contexte);
{{{Utilisation avancée}}}
L’option
raw
définie à
true
permet, plutôt que de récupérer simplement le code généré, d’obtenir un tableau d’éléments résultants de la compilation, dont le code (clé
texte
).
Que contient donc ce tableau ? Le texte, l’adresse de la source du squelette (dans « source »), le nom du fichier de cache PHP généré par la compilation (dans « squelette »), un indicateur de présence de PHP dans le fichier de cache généré (dans « process_ins »), divers autres valeurs dont le contexte de compilation (la langue et la date s’ajoutent automatiquement puisqu’on ne les avait pas transmises).
Exemple
Récupérer le contenu d’un fichier
/inclure/inc-liste-articles.html
en transmettant dans le contexte l’identifiant de la rubrique voulue :
$code = recuperer_fond("inclure/inc-liste-articles", array(
'id_rubrique' => $id_rubrique,
));
{{Option
raw
:}}
_ Voici un petit test avec un squelette « ki.html » contenant simplement le texte "hop". Ici, le résultat est envoyé dans un fichier de log (
tmp/test.log
).
$infos = recuperer_fond('ki',array(),array('raw'=>true));
spip_log($infos,'test');
Résultat dans
tmp/test.log
:
array (
'texte' => 'hop
',
'squelette' => 'html_1595b873738eb5964ecdf1955e8da3d2',
'source' => 'sites/tipi.magraine.net/squelettes/ki.html',
'process_ins' => 'html',
'invalideurs' =>
array (
'cache' => '',
),
'entetes' =>
array (
'X-Spip-Cache' => 36000,
),
'duree' => 0,
'contexte' =>
array (
'lang' => 'en',
'date' => '2009-01-05 14:10:03',
'date_redac' => '2009-01-05 14:10:03',
),
)