8797 sujets

Développement web côté serveur, CMS

Bonjour tout le monde.
Je travaille actuellement sur la réalisation d'un cahier des charges d'un CMS.
Le CMS devra être skinnable, autant avec des designs Full-CSS qu'avec des designs à base de tableaux (avec une légère préference pour les designs Full-CSS).

Sur le CMS sur lequel je contribuais activement (Nuked-Klan), la gestion des thèmes était faite de la manière suivante :
Un dossier pour chaque thèmes : un fichier de style (CSS), un fichier pour la définition des couleurs principales, les images et un fichier theme.php.
Ce fichier theme.php comporte plusieurs fonctions : une fonction pour l'affichage de la partie haute du site, une fonction pour l'affichage des blocks du menu gauche, pareil pour le menu droit, un fonction pour l'ouverture de l'affichage de la partie centrale et une fonction pour sa fermeture, une fonction pour l'affichage des news et une fonction pour l'affichage du pied de page.
Donc chacunes de ces fonctions étaient chargées d'afficher une partie du code HTML de la page.
Certaines fonctions étaient donc repetées plusieurs fois (par exemple l'affichage des news).
Avec ce système, le designeur ne s'occupe que du thème, pas de l'interface du CMS, qui ne peut être changer modif le code même du CMS (en gros, impossible de modif la présentation de l'administration ou de la présentation des articles. On peut peut-être modif les couleurs et la tailles, par le biais du CSS, mais pas la structure. Par contre il y a une exception pour les news qui doivent être définies dans le thèmes, mais ça c'est juste un choix de Nuked-Klan pour ne pas imposer une modèle fixe de présentation de News).
Ce système est peut-être pratique pour le développeur, mais pour le designeur, ça l'est moins et surtout, je ne trouve pas ça très propre comme système.

Ensuite, j'ai pensé au système comme celui de PHPBB, des fichiers de templates, qui seront ensuite parsés.
Mais bon y a tout de même un bon paquet de fichiers de template, donc pour chaque thème, le designeur doit se taper tous les fichiers de l'interface.

Sinon, pour Spip, avec ses squelettes, le système est assez proche de celui de PHPBB, non ?

Pour V-Bulletin, on définit absolument toute l'interface depuis le panel d'admin, on peut modifier n'importe quelle partie de ce qui est affichée.
L'idée est pas mal mais bon, ce n'est pas très pratique pour les designeurs.

Sinon, le système de Typo3 a l'air assez spécial, je sais pas si vous le connaissez ?

Voilà, j'aimerai donc votre avis la dessus, si vous avez une idée de système de thème. Je souhaiterai faire quelque chose d'assez léger, où la création de thème n'est pas trop dure, et quelque chose qui me permettrai d'avoir quelque chose de standard, et qui supporte les designs full-css et les designs à base de tableaux.
Le CMS sera réalisé dans une optique de légerté et de flexibilité. Presques toutes les fonctions seront plugins et modules. Le moteur du CMS respectera les standards XHTML.

Merci d'avance pour vos réponses.
Si tu veux te lancer là dedans et faire un truc tout à fait flexible, je pense que tu dois faire ça entièrement avec XML et XSLT.

Tu génère le contenu des pages dans des fichiers xml et ensuite en fonction du thème, de la mise en page et de tout autre paramètre, tu crée une feuille de style xslt qui génère l'xhtml qui est ensuite mis en forme par un feuille css.

Qu'en dis tu ?
Ça peut être une bonne idée mais :
- Est-ce que les fonctions d'utilisation d'XSLT sont disponibles chez quasiment tous les hébérgeurs avec PHP4 ?
- Qu'en est-il niveau performance ? Cela ne risque pas d'être plus long à traiter qu'un système traditionnel Base de Données/Templates ?

Sinon, à la base, je comptais réaliser une couche d'abstraction pour permettre au CMS d'utiliser différentes sources de données (MySQL, XML...), enfin à choisir lors de l'installation.
Info-Rital a écrit :
Ça peut être une bonne idée mais :
- Est-ce que les fonctions d'utilisation d'XSLT sont disponibles chez quasiment tous les hébérgeurs avec PHP4 ?

oui, mais c'est mieux avec php5
- Qu'en est-il niveau performance ? Cela ne risque pas d'être plus long à traiter qu'un système traditionnel Base de Données/Templates ?
ça reste fort comparable
Sinon, à la base, je comptais réaliser une couche d'abstraction pour permettre au CMS d'utiliser différentes sources de données (MySQL, XML...), enfin à choisir lors de l'installation.
bonne idée Smiley smile


Mais bon refaire un autre cms avec des template ça a peu d'intérêts...
oui, mais c'est mieux avec php5 : oui j'avais vu ça lors de la sortie de PHP5.0. Le problème c'est que je ne peux pas me risquer à développer quelque chose qui ne sera même pas supporté par la moitié des hébérgeurs.
Pense tu que développer en PHP5 vaille le coup ou faut-il que je reste sur une valeur sûre (PHP 4) ?

ça reste fort comparable : même si il faut traiter de très nombreux fichiers XML sur la même page ? (à peu près un fichier XML par table, je pense, par exemple sur la page d'accueil, que j'aie besoin de données provenant d'une dizaine de fichier XML.

Mais bon refaire un autre cms avec des template ça a peu d'intérêts... : Oui tu as tout à faire raison. C'est pourquoi je cherche la solution idéale. Si l'utilisation d'XML/XSLT est dispo sur la plupart des hébérgeurs avec PHP4, c'est une des meilleurs solutions. Le problème c'est le multi-source. Mettre en page des données provenant d'une base de données avec XSLT, je doute que ce soit possible. Il faudrait donc que je créé aussi une couche d'abstraction au niveau de la mise en forme. Mais qu'utiliser avec les données provenant d'une base de donnée ? On en revient au problème initial.

L'idéal pour moi serait : PHP5 - XML/XSLT mais est-ce que ça vaut le coup de tout miser sur PHP5 quitte à perdre une très grande partie d'utilisateurs ?
De toute façon le CMS vise un public d'initiés voir de semi-professionnels, donc pas d'installations sur des hébérgeurs gratuits comme Lycos ou Ifrance.

Sinon PHP4 - XML/XSLT || MySQL/???.

Qu'en penses-tu ?
Modifié par Info-Rital (14 May 2005 - 21:27)
Bon je suis entrain d'étudier tout cela mais je n'ai pas tout à fait compris le but d'XSL.
Il permet de formatter nos fichiers XML, un peu comme les CSS pour l'(X)HTML, mais en plus complexe.
Mais avec ces fichiers XSL, je peux réaliser le gabarit du site lui même ? Les différents blocs et/ou tableaux de la page ?
L'idée est de stocker les choses normalement dans la base de donnée.

Ensuite en php tu crée un fichier xml qui contient les données à afficher sur la page en cours (exemple: un article est extrait de la db, insérer dans le xml, le menu de navigation mis également dans le xml...)

Tu applique une transformation xslt qui va changer le xml en un fichier xhtml : la transformation crée le "gabarit" : un block à gauche pour le menu, un bloc central qui contient les données de l'élement article du xml, par exemple

Une feuille de style css (appelée par un <link> mis dans la transformation xslt) vient mettre ton xhtml généré par le xslt en forme.

:)
L'idée n'est pas mauvaise mais pourquoi stocker d'abord les données pour ensuite les inserer dans un fichier XML, pour ensuite appliquer la transformation XSLT. Vu le nombre de données, cela risquerait d'être très long par rapport à un simple base de données => template. Pourquoi ne pas tout simplement écrire directement dans un fichier XML ?

Mais en écrivant, je viens de m'aperçevoir d'un truc et peut-être que c'était ça que tu voulais dire.
Je parlais de couche d'abstraction pour permettre l'utilisation soit de fichiers XML, soit de base de données.
Alors je pourrais faire de la façon suivante :
-Si la source choisie est de l'XML, transformation XSLT directe pour avoir la page XHTLM.
-Si la source est une base de données : on récupère les données voulues, puis on crée un fichier XML à partir de ces données, pour ensuite créer le template en appliquant la transformation XSLT. Si les performances sont correctes, je pense que cela pourrait être pas mal, non ?

Sinon est-il possible d'utiliser plusieurs fichiers XSLT et XML pour produire une seule page ?
A mon avis ca restera trop lent. Enfin ca dépend de ton code et de tes ambitions.

Un complexe {db,tpl} est très (je serais tenté de dire "suffisament") puissant, et avec un bon système de cache sur le moteur de template, très rapide.
Après, le travail du webdesigner pour faire un nouveau thème ne tient que (à peu de chose près) à la modification de la feuille de style, si le xhtml déjà établit est bien fichu.
Certes, si il lui prend l'envie de faire une mise en page en tableaux il devra tout refaire, mais à la limite si la tache lui fait peur c'est pas plus mal Smiley lol