Alles wat hieronder volgt heeft te maken met de programmeertaal voor het maken en bewerken van de skeletten in SPIP. Wanneer je Algemeen principe goed hebt begrepen, weet je dat we in bestanden met een .html
extensie werken.
Deze documentatie is redelijk technisch. Je kunt er eventueel voor kiezen eerst de "meer begrijpelijke" Stap-voor-stapgids te lezen en je pas daarna in deze meer precieze documentatie te storten.
Lussen
De basis van de taal van SPIP is de lus, of in het Frans: boucle.
- De logica van de lus
Een database is in wezen een lijst van gegevens: in dit geval een lijst van artikelen, een lijst van rubrieken, een lijst van auteurs, enz. Om daar iets uitvoerbaars van te maken, gaan we bepaalde elementen uit die lijsten halen:
- in beginsel wil je één enkel element uit een bepaalde lijst halen, bijvoorbeeld om een bepaald artikel weer te geven;
- maar je zult ook vaak meerdere elementen uit een lijst willen halen. Op de pagina van een rubriek wil je bijvoorbeeld een lijst van alle artikelen uit die rubriek weergeven, alsmede alle subrubrieken van die rubriek;
- maar... het gebeurt regelmatig dat er niets weer te geven valt. Je kunt je bezoekers dan geen lege bladzijde laten zien, dus SPIP moet met die situatie om kunnen gaan en de bezoekers uitleg geven.
Deze drie situaties kunnen allemaal met een lus worden aangepakt, die in het eerste geval één enkel element toont, in het andere een lijst presenteert en in het derde geval uitlegt dat er geen informatie beschikbaar is.
Het lus-systeem laat binnen dezelfde code toe:
- aan te geven in welke HTML-omgeving welke soorten elementen nodig zijn (in welke omgeving we een lijst van artikelen willen laten zien, of in welke omgeving we de lijst van subrubrieken willen opnemen);
- de weergave van één enkel element te voorzien;
- aan te geven hoe een uit meerdere elementen bestaande lijst moet worden weergegeven;
- te bepalen wat moet worden gedaan wanneer geen enkel corresponderend element werd gevonden.
Analogie met het programmeren in PHP/mySQL
Diegenen die al eens mySQL-queries in PHP hebben geschreven, weten dat de afhandeling in twee stappen wordt gedaan:
- de opbouw van de syntax (die eruit bestaat te zeggen «ik wil de lijst van artikelen hebben uit deze rubriek...»);
- de analyse en weergave van de resultaten in een lus.
Het zijn ook deze twee evenementen die door een lus in SPIP worden beheerd.
De bakens van SPIP
Dankzij de lussen kunnen we dus bepaalde elementen onttrekken: bijvoorbeeld een lijst van artikelen of een lijst van rubrieken...
Maar ieder element van zo’n lijst bestaat op zich weer uit meerdere subelementen: een artikel bestaat uit een titel, een ondertitel, een introductie, een tekst, enz. Daarom kent SPIP specifieke bakens (in het Frans: balises). Ze geven aan waar een bepaald subelement moet worden weergegeven: «plaats de titel hier», «plaats de tekst hier», ...
De bakens binnen een lus
Het basisprincipe van het functioneren van een lus met zijn bakens is alsvolgt (let op: dit is geen programmeertaal, het is slechts een logische weergave):
LUS (BOUCLE): toon de lijst van artikelen in deze rubriek- toon hier de titel van het artikel
- toon hier de subtitel
- toon hier de tekst
Deze door SPIP verwerkte lus kan drie verschillende resultaten geven.
- In deze rubriek bevindt zich geen enkel artikel.
In dit geval wordt geen van de «toon hier...» elementen gebruikt. Maar een goed ontworpen website toont dan een bericht «Geen artikelen gevonden».
- Er bevindt zich één artikel in de rubriek.
In dit geval is het heel eenvoudig. De HTML pagina wordt opgebouwd volgens het model van de lus:
- Titel van het artikel
- Subtitel
- Tekst
- Er bevinden zich meerdere artikelen in de rubriek.
De indeling («toon hier...») gaat dus herhaaldelijk berekend en toegepast worden voor ieder artikel. En dat resulteert in:
- Titel van artikel 1
- Ondertitel van artikel 1
- Tekst van artikel 1
- Titel van artikel 2
- Subtitel van artikel 2
- Tekst van artikel 2
- ...
- Titel van het laatste artikel
- Subtitel van het laatste artikel
- Tekst van het laatste artikel
Je kunt op de volgende wijze in deze referentiegids verder gaan:
- algemene syntax van de lussen;
- algemene syntax van de bakens;
- en vervolgens een individuele pagina per lus die aangeeft welke bakens binnen die lus kunnen worden gebruikt.