Construction d'un CMS
Nous allons décrire pas à pas comment construire un système de gestion de contenu, qui utilise PHP comme langage de programmation, et XML ou MySQL pour stocker les données. Ce n'est pas un simple tutoriel, mais un projet concret pour construire un outil utilisable en production.
- Pourquoi construire un CMS?
- Intérêt du CMS final
- Pré-requis
- Comment construire le CMS: la conception
- Détails des composants
- Ajout d'un éditeur wysiwyg pour créer des pages
- Gestion des menus
- Authentification des contributeurs
- Permettre des commentaires sur les articles
- Administration
- RSS
- Sitemap
- Le code
Contenu
Pourquoi construire un CMS?
Des centaines de CMS gratuit sont disponibles, alors pourquoi en construire
un autre?
Ce projet est différent parce que nous voulons à la fois construire
un outil et expliquer comment l'outil peut être construit. Nous croyons
que les applications Web vont commencer à remplacer celles qui fonctionnent
localement et aussi remplacer les sites web classiques constitués de
pages rédigées sur un éditeur HTML. Maintenant les sites
web tendent à être de plus en plus élaborés et
sont faits de technologies évoluées aussi devront nous connaître
comment ces outils fonctionnent.
Le remplacement des logiciels du bureau par les applications web ne signifie
pas que l'on travaillera en ligne à l'avenir, mais que nous utiliseront
des applications qui sont construites pour le web: elle peuvent fonctionner
localement aussi.
Une autre raison de connaître comment se construit un CMS est que les
outils offerts actuellement sont conçus uniquement pour publier des
documents, si nous voulons accomplir des traitements particuliers sur les
données avant de les publier, il nous faut notre propre logiciel.
Intérêts du CMS final
Une fois achevé, ce CMS permettra à tout utilisateur d'ajouter du contenu au site sans aucune connaissance des technologies utilisées pour le faire fonctionner. Des contributeurs pourront écrire des articles avec un éditeur wysiwyg (pas en infâme bbCode), et le webmestre pourra gérer les articles, les commentaires, les nouvelles, etc.. sans avoir besoin non plus de plus de connaissances.
Pré-requis
L'outil requiert pour le programmeur:
- un hébergement supportant PHP pour tester les démos,
- un éditeur HTML,
- le compilateur Scriptol pour générer les plus gros morceaux
de code PHP,
- et optionnellement des bibliothèques sous licence LGPL pour étendre
le CMS (avec un forum par exemple).
Le webmestre du site lui aura besoin uniquement d'un hébergement PHP
et MySQL pour installer le CMS final.
Comment construire le CMS: la conception
Nous avons démarré un projet qui est à la fois un tutoriel
et un outils réellement fonctionnel. Nous allons ajouter outil après
outil et chacun viendra avec un tutoriel expliquant comme il est réalisé,
comment il fonctionne et comment étendre ses possibilités.
Le CMS final sera constitué d'un ensemble de modules qui assumerons
ces fonctionnalités:
- L'édition des articles se fait avec un éditeur wysiwyg d'origine
externe.
- Les échanges avec le serveur se feront en Ajax (pas une surprise!).
- On utiliser CSS pour la présentation et les templates du CMS.
- Les textes sont traités pour remplir le template, puis enregistrés
directement en fichiers HTML, et non dans une base de données.
- Les informations de gestion sont stockées en XML ou JSON.
- Les informations utilisateur devraient être stockées en XML
encodé, ou dans une base de données.
- Les lecteurs pourront ajouter des commentaires à chaque article.
Ils peuvent être intégrés dans la page HTML (avec un affichage
dynamique à la demande) ou enregistrés dans un fichier XML additionnel.
- Les contributeurs pourront aussi proposer des articles. Ces derniers seront
d'abord stockés dans une catégorie "proposés"..
- RSS, forum / FAQ, news et annuaires seront ajoutés en tant qu'extensions.
Construction d'un Blog
Techniquement, un blog est une page web contenant une liste de billets en
ordre chronologiquement inversé. La principale différence avec
le site portail est que plusieurs textes s'affichent sur une même page,
mais si nous pouvons définir le nombre de billets sur une page, il
nous suffit de mettre ce nombre à 1 pour convertir un blog en portail,
pourvu que soit affiché à coté sur la page principale
une partie permanente décrive et lie au contenu du site.
Un blog doit aussi avoir des outils spéciaux pour retrouver les textes
et la possibilité pour les visiteurs d'ajouter des commentaires, chose
que nous avons l'intention d'inclure dans notre CMS.
Détails des composants
Les plupart de ces composantes sont indépendantes et pourraient être traitées dans n'importe quel ordre.
Ajout d'un éditeur wysiwyg pour créer des pages
Nous devons pouvoir composer des articles avec un éditeur, sur n'importe
quel ordinateur en ligne, une fois qu'un mot de passe a été
donné.
Les pages ne sont pas stockées directement mais sont traitées
par un interpréteur qui remplit un template avec le texte que le webmestre
ou contributeur a entré.
Gestion des menus
Les pages créées ne doivent pas rester orphelines. Un lien
doit être créé sur le fichier. Nous devons pouvoir créer
des menus avec catégories et sous-catégories et y ajouter un
lien pour chaque nouvelle page venant sur le site.
Le nom de la catégorie est donné lorsque le texte est entré,
et l'on aura aussi la possibilité d'éditer le menu.
Authentification des contributeurs
Un formulaire permettra d'entrer un nom d'utilisateur et un mot de passe
avant de pouvoir ajouter du contenu au site. Si le site permet des contributeurs
multiples, le gestionnaire accorder des permissions et sauvegarder les profils.
Ceci utiliserait de préférence MySQL.
Permettre les commentaires sur les articles
Les lecteurs pourront placer des commentaires et ajouter des réponses aux commentaires d'autres internautes. Cela transforme le site en forum et nécessitera quelque gestion. L'administrateur doit pouvoir effacer des commentaires. Il nous faut construire un système pour stocker les commentaires, les afficher sous forme de liste ou d'arborescence qui peut être ouverte ou refermée (comme les répertoires). XML convient bien pour ce genre de structure.
Administration
Il nous faut concevoir un panel d'administration pour pouvoir gérer
le système:
- créer ou éditer des articles,
- effacer des articles ou des commentaires,
- gérer les utilisateurs,
- configurer le système.
RSS
Un flux RSS doit pouvoir être créé pour une sélection de pages ou les derniers articles ajoutés au site. Il fonctionnera comme liste premier entré premier sorti, les titres les plus anciens étant supprimés pour faire de la place aux plus récents.
Sitemap
Une carte de site sera générée automatiquement. Idéalement, la carte sera mise à jour dès qu'un nouvel article est créé. En fait puisque la sitemap standard est un fichier XML, le gestionnaire d'articles qui est accessible à partir du panel d'administration pourrait utiliser directement ce fichier XML pour stocker la liste des articles.
Le code
- Utiliser un template. On crée un article et on l'insère dans un modèle de page propre au site.
- Edition en ligne avec TinyMCE.
Démonstration complète et fonctionnelle de l'utilisation d'un éditeur en ligne avec des script pour stocker le contenu dans des pages HTML. - Edition en ligne avec CKEditor
Comme la démonstration de TinyMCE, contient des scripts pour sauver ou éditer un fichier, créer automatiquement un nom de fichier, utiliser des templates différents. - Le menu dynamique. Ce composant affiche un menu décrit dans un fichier JSON. Une entrée est ajoutée au fichier JSON pour chaque nouvelle page créée (pour cela, est composant viendra). Plus tard, nous construirons une interface pour éditer ce fichier.
- Les commentaires.Permettre aux visiteurs d'ajouter des commentaires sur vos pages. Le script fonctionne seul ou comme partie du CMS final.
- Login et enregistrement. Avant d'ajouter des commentaires, les visiteurs doivent s'enregistrer. Le programme stocke les données dans un fichier XML.
Construire un CMS, passionnant ...
gwinru
webmaster
gwinru