Auteur: Arjan Scherpenisse
Datum:16 December 1999
Versie: 0.50
Elke pagina (content folder) heeft precies 1 mogelijkheid om een lijst te maken in deze versie. Een lijst heeft een hierarchie van twee nivo's, als eerste de secties (sections) met daarin een x aantal items. Elke losse sectie kan een stuk beschrijving hebben zowel boven als onderaan de sectie (de section header en footer).
Tussen sectie header en footer komt de (sub)lijst van items die in de desbetreffende sectie horen. Een item bestaat uit een aantal bij elkaar horende key-value paren die volgens een zogenaamd "item template" worden geformatteerd. De items kunnen dus _niet_ expliciet afzonderlijk worden geformatteerd.
De opmaak van sectie header, sectie footer, item template et cetera wordt in het theme bepaald. Elk theme bestaat dus uit een set standaard templates waarmee de content van elke content folder wordt geformatteerd.
Elke content folder heeft wel de mogelijkheid om deze 'default look' te overriden. Een bepaalde content folder kan een speciale opmaak vereisen voor bijvoorbeeld de sectie header omdat de content folder bepaalde key-value paren heeft die niet in het standaard template voorkomen. Deze 'overrides' zijn ook weer afhankelijk van het gebruikte theme, en worden daarom in subdirectories onder de root van het betreffende theme geplaatst.
Bijvoorbeeld: er is een bepaalde content folder met de naam 'news'. Hierin is elke sectie een apart nieuws item. Hiervoor moet de default layout voor de sectie header en footer overridden worden voor deze pagina. Voor het default theme komen de aan de nieuws-pagina aangepaste sectie header en footer in de volgende bestanden te staan:
themes/default/news/section_header, enthemes/default/news/section_footer.
Het formaat van deze bestanden is precies gelijk aan het formaat van een normaal bestand in een theme met dezelfde naam, het is dus gewoon een HTML snippet met eventuele key/value referenties.
Elke site heeft bepaalde properties die de content van de site bepalen. Als de gebruiker geen overrides pleegt op de properties, dan worden de volgende properties verondersteld:
Op elk kan een content folder deze default properties overriden. Dit wordt gedaan door in de root van de content folder een aantal bestanden te maken waarin de namen van de nieuwe properties staan, eventueel met een default waarde. De namen van deze bestanden zijn als volgt:
content/pagina/page_properties
content/pagina/section_properties
content/pagina/item_properties
Elk van deze bestanden is een tekstbestand waar op elke regel de
naam van de property staat (de key) en daarachter na een dubbele
punt de default waarde die wordt ingevuld als er geen expliciete
waarde aan deze property is gegeven in het property data
file. Regels beginnend met een hekje worden beschouwd als
commentaar. Values kunnen over meerdere fysieke regels
worden verspreid door ze tussen <-- en
-->'s te zetten.
Op elk niveau wordt voor de property files een generiek bestandsformaat gebruikt. Het bestand is een tekstbestand, met op elke regel een property / value paar. De property wordt van de value gescheiden door de eerste dubbele punt die de parser op de regel voorkomt. Een voorbeeld van een geldige regel:
title: Nieuws pagina
Maar ook deze:
text: Op deze nieuws pagina vindt U: bla bla bla
Regels die beginnen met een # (hekje) worden voor commentaar gezien en dus overgeslagen bij het parsen. Regels waar geen dubbele punt in voorkomen en die geen commentaar zijn leveren een waarschuwing van het systeem op.
De bestanden die de feitelijke data voor de properties bevatten zijn de volgende:
defaults in de root van de content folder.
defaults in de root van de sectie folder.
*.item in de root van de sectie folder.
Het nut van de properties in pagina's is dat ze de pagina consistent maken en het geheel makkelijk onderhoudbaar maken. Het nut is dan ook dat ze in de html-templates die in het theme worden gebruikt aangeroepen kunnen worden. Hiervoor is een speciale tag gereserveerd, en wel de volgende:
<!var name>
Een property reference die door de parser niet wordt vertaald omdat er geen bijbehorende waarde is gevonden wordt voor de gebruiker verborgen omdat de tag tussen punthaken staat.