XCMS 1.0 Beta - http://groupeclan.free.fr/

L'environnement de MySQL
22/05/2004

MySQL est l'une des sources possibles pour contenir le contenu de votre site. XCMS fait donc la démarche d'intéroger la base et de restituer les informations qu'elle contient. Jusqu'ici, rien de bien extraordinaire.

Seulement, il ya a dans la gestion d'articles, nouvelles, pages etc... quelquechose d'extrêmement répétitif (ceux qui en auront déjà fait les frais sauront de quoi je parle). Et c'est là qu'XCMS mâche le travail. Lorsque vous créez un nouveau module en utilisant l'environnement MySQL d'XCMS, vous grillez des étapes fastidieuses parmi lesquelles, la création de formulaires d'ajout, modification qui sont générés automatiquement selon l'allure de votre table. Aussi, le listage de votre base de donnée et l'affichage avec défilement des pages et enfin, la recherche dans votre base et aussi la suppression des entrées. Tout cela n'est plus à faire. La seule chose en réalité dont vous devez vous occuper, c'est de la façon dont les résultats seront disposés par XCMS et de la rédaction de certaines chaînes.

Il serait difficile de faire un exposé théorique de la façon dont doit être créé un module, c'est pourquoi nous nous baserons sur le système des pages du site pour en expliquer le fonctionnement

La table MySQL

Elle doit porter le même nom que le code du module que vous créez. Ainsi, dans notre exemple, le module de code Page sera associé à une table nommée Page.

Structure de la table Page
Nom du champ Type Commentaire
ID int(9) Chacune des tables que vous créez devra obligatoirement contenir un champs ID de ce type. C'est l'index qu'utilise l'environement MySQL d'XCMS pour manipuler les entrées (ajout, suppression, lecture, modification etc...).
Titre varchar(n) Il s'agit du titre de l'entrée. Il n'est pas obligatoire mais conseillé car de cette façon, le champs appellé Titre se retrouvera dans le titre de la page lors de la lecture d'une entrée. n est un entier variant selon l'optimisation voulue pour la table.
Description varchar(n) Même chose que pour le titre, mais beaucoups moins important si vous ne le mettez pas. Si vous souhaitez créer un flux RSS il peut être judicieux de l'utiliser plutôt que de mettre la totalité du contenu de l'entrée.
MotClef varchar(n) Si vous créez un champs de ce type, les mots-clefs d'une entrée s'ajouteront aux autres lors de la lecture de celle-ci.
Contenu text Il n'est pas néccessaire d'appeller ce champs contenu, mais bon, puisque j'ai commencé comme ça... Sachez néanmoins que tout champs MySQL de type text sera parsé par l'interpréteur de BBCodes.
Auteur varchar(n) Même chose, pas la peine de le nommer ainsi, mais bon, ça rend les données plus cohérentes.
Date date Obligatoire ! Dater une entrée doit être automatique. Et le nom Date doit être gardé.
Lang char(3) Obligatoire, la langue d'une entrée doit être connue.
Ent tinyint(n) Pas obligatoire, mais néccessaire si l'on souhaite utiliser le même module plusieurs fois.

Voilà, ensuite, libre à vous de créer d'autres champs à votre guise, XCMS les interprètera comme il se doit.

Les fichiers .lang

Le meilleur moyen de créer un fichier de ce type est encore de se baser sur un fichier préexistant. Cela évitera une trop forte perte de temps. Néanmoins, il est quelques variables qu'il vous faudra créer en fonction de la structure de votre table. Pour que l'environnement MySQL puisse traduire le nom de vos tables en langage compréhensible par tous, il faut les traduire. Par exemple, pour la langue, on créera une variable :
$CTrad['Lang']='Langue de la page';
Et ce pour chaque champs mis à part les champs réservés tels que Ent et ID.

Aussi, si vous souhaitez qu'un champs soit obligatoirement rempli et qu'un message d'erreur soit renvoyé dans le cas contraire, alors, il vous faudra créer un message d'erreur spécifique au champs en question. Pour cela créez une variable comme celle-ci :
$ErVide['Lang']='Veuillez indiquer la langue dans laquelle est rédigé la page.';

Le reste ne devrait pas vous poser de problème, attention tout de même à bien mettre des échappements avant les guillemets simple, sinon, le script retournera une erreur.

Les fichiers .xhtml

Ils sont deux Lister.xhtml et lire.xhtml et se trouvent dans le répertoire Mysql/Module/(Code du Module / ex: Page)/XHtml/.

Lister.xhtml

Ce fichier sert à expliquer la façon dont doit être formé le code d'affichage du module.

Pour reprendre l'exemple du module Page :
<a href="<? echo Lien('Rub', $Rub, 'Act', 'Lire', 'ID', $Champ['ID'], 'Ent', $Ent); ?>" title="<? echo $TrLire; ?>"><cite><? echo $Champ['Titre']; ?></cite></a>

Dans cette exemple, on explique que dans la liste il doit y avoir un lien avec le titre de la page, ni plus ni moins. Après, chacun peut faire comme il l'entend et ce n'est pas un format à respecter à tout prix. On pourrait imaginer ajouter la langue de la page, voir la date à laquelle elle a été rédigée, tous les champs de la table peuvent être ajoutés.

Lire.xhtml

Ce fichier contient la forme que doit prendre un article lorsqu'on le lit. C'est exactement le même principe que pour plus haut. Vous remarquerez que des fonctions sont disponibles dans le fichier Php/Librairie/Affichage.php. Nottamment pour interprêter les BBCodes et changer le format de la date.

Les fichiers .rss

De la même façon que pour les fichiers .xhtml, il s'agit toujours de spécifier la forme d'un article, mais cette fois-ci, pour les fichiers rss. Je vous laisse donc tout le loisir de faire l'amalgame. Sachez juste que pour accéder aux fils RSS il faut ajouter à l'URL le paramètre : &Type=rss.

Voilà, il n'en faut pas plus pour créer un module capable de tirer le meilleur parti de l'environnement Mysql d'XCMS. Bon développement et n'hésitez pas à poser des questions sur le forum des développeurs.

Auteur : Nicolas