Lorsqu’un visiteur du site demande à voir une page, qu’elle soit déjà en cache ou non, SPIP exécute un certain nombre d’actions, dont celles de charger des fichiers d’options. Ces options peuvent par exemple définir des constantes ou modifier des variables globales.
Ces options peuvent être créées dans le fichier config/mes_options.php
ou depuis un plugin en déclarant le nom du fichier dans plugin.xml
tel que <options>prefixePlugin_options.php</options>
.
Tous les fichiers d’options (celui du site, puis de tous les plugins) sont chargés à chaque appel de l’espace public et de l’espace privé ; ils doivent donc être les plus légers et économes possible.
Cet exemple, issu d’une contribution nommée « switcher », propose de modifier le jeu de squelettes utilisé par le site (l’adresse du dossier plus précisément) en fonction d’un paramètre var_skel
dans l’url.
<?php
// 'nom' => 'chemin du squelette'
$squelettes = array(
'2008'=>'squelettes/2008',
'2007'=>'squelettes/2007',
);
// Si l'on demande un squelette particulier qui existe, on pose un cookie, sinon suppression du cookie
if (isset($_GET['var_skel'])) {
if (isset($squelettes[$_GET['var_skel']]))
setcookie('spip_skel', $_COOKIE['spip_skel'] = $_GET['var_skel'], NULL, '/');
else
setcookie('spip_skel', $_COOKIE['spip_skel'] = '', -24*3600, '/');
}
// Si un squelette particulier est sauve, on le definit comme dossier squelettes
if (isset($_COOKIE['spip_skel']) AND isset($squelettes[$_COOKIE['spip_skel']]))
$GLOBALS['dossier_squelettes'] = $squelettes[$_COOKIE['spip_skel']];
?>