Structure générale de SPIP

SPIP est un CMS unique en son genre.

Au-delà de son fonctionnement qu’on peut qualifier de « data driven », à savoir « piloté par les données » (les fameuses BOUCLES), il a toujours fourni en première ligne les moyens de « customiser », adapter son fonctionnement et sa présentation au goût et aux besoins propres du site.

C’était d’abord la possibilité de fournir ses propres squelettes (templates), d’adjoindre des fragments de php spécifiques et de surcharger les fonctions de base du « core » (les function xxx_dist() que nous verrons plus loin).

Les plugins permettent d’ouvrir SPIP à des fonctionnalités supplémentaires sans alourdir son noyau (le « core »). La tendance actuelle est même d’alléger ce core en transférant les fonctionnalités optionnelles dans des plugins.

Les répertoires qui le constituent permettent de bien séparer les éléments selon leur durée de vie, le fait qu’il soient modifiables et leur appartenance à ce qui est propre ou spécifique au site ou au code de base. Un des autres objectifs visés ici est la possibilité de mutualiser le noyau : que plusieurs sites puissent partager une base de code commune.

Étudions d’abord cette nouvelle organisation des répertoires, de ce qui appartient à SPIP à ce qui est propre au site, de ce qui reste constant à ce qui bouge.

Distribution

racine du site

La racine a été complètement vidée et ne contient pratiquement plus que index.php qui redirige sur spip.php, c’est maintenant l’unique point d’entrée de la partie publique du site.

SPIP est fourni avec un fichier htaccess.txt qu’on pourra renommer en
.htaccess pour l’url rewriting essentiellement.

ecrire/

Ce dossier contient l’ensemble des fichiers interprétables côté serveur (PHP et MySQL) et ce, aussi bien pour l’affichage public (sous-dossier public/) que pour l’affichage privé.

Le nom de ce dossier est historique, c’était auparavant là où on trouvait le code permettant de modifier le contenu du site. Paradoxalement, c’est un dossier maintenant immuable, on n’écrira plus jamais dedans. Dans une installation normale, il ne contient que les scripts livrés par la distribution et il est quasi impératif de ne pas y faire de modification.

Son script index.php est le point d’entrée de ecrire/, la partie privée du site.

dist/ ce dossier s’appelle squelettes-dist/.

Il contient tous les fichiers livrés au client (HTML, Javascript, feuilles de style, images de différents formats) ainsi que les patrons de mise en page nommés squelettes. Ces squelettes sont interprétés côté serveur afin d’envoyer au client un texte purement MIME (la plupart du temps du HTML, mais aussi du RSS, du SVG... voire du JS).

Ce sont les modèles standards livrés avec SPIP, ils ne doivent eux aussi pas être modifiés mais remplacés en les copiant dans squelettes/

Adaptation

config/

Ce dossier, créé à l’installation, contient le script de connexion à la base de données : connect.php et le script fixant le mode des fichiers créés par le serveur : chmod.php.

C’est aussi ici qu’on place les options universelles du site, dans un fichier (à créer) : mes_options.php [1]

IMG/

Il contient tous les documents originaux (taille réelle) du site. Il est subdivisé en sous-dossiers par types de documents.
À l’installation, il ne contient que des documents de test pour la fabrication des images.

squelettes/

C’est ici qu’on dispose tous les fichiers : scripts, images, formulaires... propres au site en suivant la même structure que ecrire/ ou dist/. Par exemple, pour redéfinir le sommaire du site, on y copie/adapte le fichier sommaire.html du répertoire dist/.

On met là notamment, le script mes_fonctions.php (à créer) qui est chargé à chaque recalcul de page. À noter qu’il est possible de faire un xxx_fonctions.php qui sera chargé (en plus du mes_fonctions.php) uniquement lorsque la page xxx sera demandée (par exemple : sommaire_fonctions.php).

À l’installation, ce dossier n’existe pas, il faut le créer.

plugins/

Ce dossier reçoit les sous-dossiers de chaque plugin. Par exemple, le plugin crayons est placé dans plugins/crayons/.

Temporaire

local/

Il contient tous les fichier (re-)calculables à partir des documents et données du site.

Il s’agit essentiellement des caches d’images réduites. On y trouve aussi les caches calculés par certains plugins comme « coloration_code ».

Les fichiers de ce cache sont accessibles depuis le web.

Ce dossier peut être vidé, cela ne coûtera que son recalcul.

tmp/

Ici sont stockés tous les fichiers temporaires comme les caches de squelettes, les sessions, les logs etc.

Il contient aussi le sous-répertoire dump/ où sont archivées les sauvegardes de la base de données.

Contrairement à local/, les fichiers de ce cache ne sont pas accessibles depuis le web.

Ce dossier peut être vidé à tout moment.

Notes

Voir aussi : Étendre SPIP

Auteur L’équipe de SPIP Publié le : Mis à jour : 09/07/23

Traductions : català, English, français, italiano, Nederlands