Opties declareren

Wanneer een bezoeker een pagina opvraagt (al dan niet in de cache), voert SPIP een aantal acties uit, waaronder het laden van de "opties" bestanden. In deze bestanden kunnen we bijvoorbeeld nieuwe constanten definiëren of globale variabelen wijzigen die de werking van SPIP bepalen.

Deze opties kunnen worden aangemaakt in het bestand config/mes_options.php of in elke plug-in door de naam van het bestand op te geven in plugin.xml zoals deze: <options>pluginprefix_options.php</options>.

Alle optiebestanden (die van de site en vervolgens die van alle plugins) worden geladen bij elke oproep van een pagina in de publieke zone of het privé gebied, dus ze moeten zo eenvoudig en zo klein mogelijk zijn.

Dit voorbeeld, van een bijdrage genaamd "switcher", zal de set skeletten die door de site worden gebruikt (of, strikt genomen, de naam van de map met skeletten) veranderen afhankelijk van de waarde van de parameter var_skel in de URL.

<?php
 
// 'name' => 'template path'
$squelettes = array(
  '2008'=>'squelettes/2008',
  '2007'=>'squelettes/2007',
);
 
// Wanneer een bepaalde set skeletten wordt gevraagd (en bestaat), wordt een cookie geplaatst, andes wordt de cookie verwijderd
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, '/');
}
 
// Wanneer een bepaald pad naar skeletten toegestaan is, wordt het als de skelettenmap gedefinieerd
if (isset($_COOKIE['spip_skel']) AND isset($squelettes[$_COOKIE['spip_skel']]))
  $GLOBALS['dossier_squelettes'] = $squelettes[$_COOKIE['spip_skel']];
 
?>

Auteur hanjo Gepubliceerd op:

Vertalingen: English, français, Nederlands