Tech
WebGEN2: een mini CMS
door: webmaster [09-12-2018]
php.net
Uit de statische website van kort geleden is inmiddels een mini Content Management Systeem (CMS) ontsproten. Ik kon me weer eens niet inhouden. Zoals ICT-ers weleens zeggen: "Because it can..."
WebGEN twee, met de tijd mee
Het CMS heb ik gemakshalve 'WebGEN2' gedoopt, vernoemd naar mijn zelfgeschreven CMS dat al langer dan 10 jaar niet meer onder ons is. Basisfunctionaliteit is aanwezig.Verschillen met WebGEN 'originale' zijn object-orientatie (OO) in plaats van good ol' procedureel programmeren, de keuze voor SQLite3 en CSS waarden zijn niet meer opgenomen in de database. Last but not least: ik heb gekozen voor een 'Model, View, Controller' (MVC) aanpak.
Voorkant
In de sidebar worden de laatste berichten getoond (aantal instelbaar) en er zijn te selecteren roulerende 'blocks' met HTML opmaak indien gewenst. Iedere post kan met een een afbeelding beginnen zonder code te gebruiken. Afbeeldingen, includes (gegenereerd door jobs) en quotes kunnen worden toegevoegd met speciale tags. Niet CMS-pagina's zijn in te passen. Meer pagina's kunnen van het type 'blog' zijn. Door het gebruik van datums kunnen posts klaar worden gezet voor publicatie in de toekomst.Achterkant
In een dashboard kan content worden gecreeerd en aangepast. Verder is een en ander te configureren om de website te laten werken en te verfraaien. Het dashboard is trouwens alleen binnen het netwerk (LAN) toegankelijk. De configuratietabel is tevens te gebruiken voor pagina's met eigen code. Zo hoeft niet voor alles een aparte tabel te worden aangemaakt.Voor de zekerheid zijn PHP scripts niet direct aan te roepen. Er worden telkens nieuwe onzichtbare 'secrets' gegenereerd die overeen moeten komen als een script wordt uitgevoerd.
Object Orientatie: OO, zit dat zo?
sqlite.org
Er is een hoofdklasse die de database opent en belangrijke generieke functies bevat. Een generieke methode kan rijen teruggeven aan de hand van een eenvoudig filter en sortering als parameters, en een andere methode de unieke waarden van kolommen (dropdown menu's!). Er wordt handig gebruik gemaakt van een array met kolomnamen zo dat met minder methoden kan worden volstaan. Tabellen worden benaderd via 'setters & getters'.
Daaronder zijn er aparte classes voor tabellen met specifieke queries. Subclasses geven hun tabelnaam door en dat het om SQLite3 gaat. Voorts zijn er classes voor validaties, sanitize- en helper functies.
Van alles fout
Veel van het bovenstaande gaat aan websitebezoekers voorbij, zij zien immers alleen tekst. Met programmeren kan er van alles fout gaan, en dat doet het eigenlijk ook. Gelukkig leert de ervaring dat er voor alles een oplossing is.De vraag is wat ik nog meer wil toevoegen. Wat heb ik echt nodig? WegGEN2 zal in ieder geval geen gebruik gaan maken van front-end scripting zoals JavaScript en jQuery. Volgens mij kan het internet zonder...