Déclarer des options

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 d’un site,
 ou dans un plugin, dans le fichier prefixePlugin_options.php.

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.

Après ajout ou modification d’un fichier d’options, il faut passer sur la page d’administration des plugins pour que SPIP prenne en compte la nouvelle version.

Remarque

Les chargements des fichiers d’options suivent les dépendances des plugins (les plugins qui dépendent d’un autre sont chargés après). Si un plugin déclare une constante dans un fichier d’option, un plugin qui en dépend ne pourra pas redéclarer cette constante. Pour éviter les avertissements PHP, il est possible de tester sa définition avant :

defined('_UNE_CONSTANTE') or define ('_UNE_CONSTANTE', 'une valeur');

Exemple

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']];

?>

Auteur Matthieu Marcillaud Publié le : Mis à jour : 11/06/23

Traductions : English, français, Nederlands