Au mois de janvier, en essayant de trouver une alternative pour ajouter des entrées à mon journal sans les ajouter manuellement aux pages HTML, j'ai exploré différentes alternatives. Je n'ai pas été très impressionné par ce que j'ai pu trouvé (MovableType, Blosxom, WordPress). Alors j'ai décidé de constuire mon propre système de publication de site web en PHP.
La première version de mon système de publication web (qui fait fonctionner ce site actuellement) fonctionne pas mal bien, mais il a plusieurs iritants bon et pas vraiment à mon goût. C'est pourquoi je constuir actuellement une nouvelle version. Voici ce qui est prévu:
- Base de donnée s'appuyant sur le système de fichier, dans le style de Blosxom avec des méta-données illimités par entrée. L'architecture pourrait éventuellement supporter une vraie base de donnée (comme MySQL) si quelqu'un prennait le temps d'écrire une interface PHP compatible.
- Structure flexible, ce qui veux dire que vous décidez où chaque morceau d'information est gardé dans la base de données.
- Utilise des patrons dans le style de ceux de MovableType, avec ou sans génération de page statique.
- Scripts! Le comportement de votre site est entièrement décidé par vous.
La circulation de l'information pourrait être décrite comme suit:
- L'information est gardé dans la base de donnée sur le disque.
- L'information est récupéré de la base de donnée et affichée par les patrons.
- L'information posté par l'utilisateur du site est stoké au bon endroit dans la base de donnée par un ou plusieurs scripts.
Maintenant, ce que je viens de décrire n'est pas réellement un système de blogue, c'est plus un système générique d'affichage et d'interraction avec une base de donnée pour site web. Pour le transformer en un blogue fonctionnel il reste à ajouter des scripts et des patrons correspondant à un blogue. Ces patrons et scripts seront fourni par défaut avec le système, mais pourront facilement être changés, étendus ou même remplacés. Notez que les pages administratives seront aussi basé sur des patrons, ce qui signifie qu'un designer web pourrait construire une solution de site web personnalisée sans trop de difficultés.
Voici un exemple de patron (qui fonctionne actuellement):
<PS:EntryBody filter="markdown+smartypants+cosmos"/>
<PS:EntryList path="fr/journal/*">
<h2><PS:EntryTitle filter="smartypants+cosmos"/></h2>
<PS:EntryBody heading="2" filter="markdown+smartypants+cosmos"/>
<p><PS:EntryField name="date"/></p>
</PS:EntryList>
Ce projet semble intéressant, vous ne trouvez pas? Mais il n'est seulement réalisé qu'à moitié. Le système de patron fonctionne merveilleusement bien, même chose pour la base de donnée. J'espère avoir une version beta prête à montrer durant l'été.
Je suis aussi à la recherche d'un bon nom pour ce système. Des idées?