SPIP is een CMS die uniek is in zijn soort.
De werking van SPIP kan worden gekarakteriseerd als "data driven", aangestuurd door data -de beroemde BOUCLES (lussen)-, die vanuit de eerste lijn de middelen bieden om te "customiseren": zijn functioneren en presentatie aan te passen aan de specifieke behoeftes van de website.
Eerst was er de mogelijkheid gebruik te maken van zelfgemaakte modellen, de squelettes (skeletten), om stukken php toe te voegen en functionaliteit toe te voegen aan de "core" (de function xxx_dist()
die verderop wordt beschreven).
Versie 1.9 introduceerde een aanvullend mechanisme, plugins. Ze zijn onstaan uit de behoefte om SPIP toegankelijk te maken voor aanvullende functionaliteit zonder de kern (de "core") te belasten. De huidige trend is zelfs om die core te ontlasten door aanvullende functionaliteit onder te brengen in plugins.
SPIP 2.0 werd zo een lichtere versie die werd geleverd met een collectie basis plugins die de gebruiker naar behoefte kon activeren. Zo werden de nieuwsberichten verwijderd uit de core maar als optionele plugin beschikbaar gesteld. En aleen die websites die de nieuwsberichten gebruiken hebben de plugin geactiveerd.
In SPIP 1.9 werden de mappen waarmee SPIP is gestructureerd al volledig gereorganiseerd om een betere scheiding te krijgen tussen de verschillende elementen, afhankelijk van hun levensduur, hun aanpasbaarheid en hun specifiteit. Een andere doelstelling was de gemeenschappelijke code te kunnen delen in het geval van meerdere websites.
Het sloot een eerste studie af naar een nieuwe structuur die de programmatuur van SPIP en de statische en dynamische gegevens scheidt.
Indeling
siteroot
De root werd nagenoeg geleegd en bevat nog slechts een index.php die doorverwijst naar spip.php en het enige toegangspunt tot het publieke deel van de site is.
inc-public.php3 is een spookbestand dat compatibiliteit met oudere versies moet garanderen.
.htaccess is optioneel voor eventuele "rewriting" van de URL.
win_png.htc [1] en rien.gif zorgen voor png-transparantie bij het gebruik van MSIE
ecrire/
Deze map bevat nu alle door de server interpreteerbare bestanden (PHP en MySQL) en dit, zowel voor de weergave van de publieke site (submap public/) als voor het privé-gedeelte.
De naam van de map heeft zijn voorgeschiedenis, het was ooit de plek waar de code voor het aanpassen van de inhoud van de site was opgeslagen. Paradoxaal genoeg is het nu een statische map , waar nooit naartoe weggeschreven zal worden. In een standaard installatie bevat de map uitsluitend de aangeleverde scripts die onveranderlijk zijn.
Het script index.php is het toegangspunt van ecrire/, het privé gedeelte van de site.
dist/ [2]
Deze map bevat alle bestanden die naar de client worden gestuurd (HTML, Javascript, stylesheets, afbeeldingen) alsmede de modellen voor de layout, de squelettes. Deze skeletten worden op de server geïnterpreteerd en naar de client doorgestuurd als tekst (MIME, meestal HTML, maar ook RSS, SVG of JS).
Het zijn standaard met SPIP aangeleverde modellen, die niet hoeven te worden aangepast, maar kunnen worden vervangen door ze (aangepast) te kopiëren in de map squelettes/
oo/ [3]
Deze map bevat de "toegankelijke" modus van SPIP (tekst). Die bestaat in wezen uit een index die naar het standaard systeem doorverwijst.
Aanpassingen
config/
Deze map die bij de installatie wordt aangemaakt, bevat het script dat de verbinding met de database(s) regelt: connect.php
en het script dat de aanwijzingen voor de serverbestanden regelt: chmod.php
.
Het is ook de plaats voor algemene opties voor de site, in een (aan te maken) bestand: mes_options.php
[4]
IMG/
Deze map bevat alle originele documenten (in werkelijk formaat) van de site. De map is onderverdeeld in submappen per type document.
Tijdens de installatie bevat de map slechts testdocumenten voor het aanmaken van afbeeldingen.
squelettes/
Hier bevinden zich alle sitebestanden: scripts, afbeeldingen, formulieren... op dezelfde wijze gestructureerd als ecrire/
en dist/
. Om bijvoorbeeld de homepage van de site aan te passen, wordt het bestand sommaire.html
vanuit map dist/
gekopieerd (na de nodige aanpassingen).
Ook is dit de plaats voor een optioneel script mes_fonctions.php
dat bij iedere aanpassing van een pagina wordt geraadpleegd. Daar bovenop kan nog een xxx_fonctions.php
worden gemaakt die (in aanvulling op mes_fonctions.php
) uitsluitend wordt geladen wanneer pagina xxx
wordt opgevraagd (bijvoorbeeld: sommaire_fonctions.php
).
Bij de installatie bestaat de map nog niet. Hij moet worden aangemaakt.
plugins/
Deze map (die ook moet worden aangemaakt) bevat de mappen en submappen van iedere plugin. Zo is bijvoorbeeld de plugin crayons ondergebracht in plugins/crayons/
.
Tijdelijk
local/
De map bevat alle herberekenbare bestanden van documenten en site data.
Het gaat daarbij vooral om caches van gereduceerde afbeeldingen. Ook zijn er de caches van enkele plugins zoals «coloration_code» terug te vinden.
Je kunt de map leegmaken, waarna alles opnieuw berekend zal gaan worden.
tmp/
Hier staan alle tijdelijke bestanden opgeslagen, zoals de cache van de skeletten, de sessies, de logbestanden, enz.
In de map bevindt zich ook een submap dump/
waar de backups van de database in worden opgeslagen.
Ook deze map mag ten allen tijde worden geledigd.