Mes tests

Dans PlumeCMS

La solution retenue pour Plume est loin d'être parfaite. Chaque thème graphique redéfinit un template par type de page (article, nouvelle, etc.). Chaque template définit la page web de A à Z, y compris les titres des menus latéraux ou encore l'entête Html. Ceci conduit à plusieurs problèmes :

  • il faut synchroniser les N templates, si on change quelque chose dans l'un, il y a de fortes chances pour qu'il faille aussi le faire dans les autres
  • si l'auteur du thème n'utilise pas le même encodage que moi, il faut que je convertisse ses templates
  • pour l'internationalisation, je n'ai rien vu donc il faut se traduire tous les templates dans sa langue
  • lorsqu'on insère un plugin, il faut ajouter le code qui va bien dans tous les templates

Bref, pas très convaincant...

Dans DotClear

Déjà, point positif, il n'y a qu'un seul template par thème et l'encodage des caractères de la page est géré par DotClear[1]. Curieusement l'internationalisation y échappe, il faut donc modifier les textes dans le template pour sa langue. À nouveau le template définit la page web de A à Z. Ce n'est donc pas parfait :

  • il faut faire attention en éditant les textes que l'encodage de l'éditeur coïncide avec celui de DotClear
  • le template contient un nombre assez élevé d'appels de fonctions internes, de variables internes et d'include, inutile de dire qu'on ne les improvise pas

Donc plus convaincant mais on arrive toujours au problème fondamental : un template nécessite un langage qui ne sert qu'au template.

Faire sans templates

Grâce aux CSS[2], il est possible de modifier notablement l'allure d'une page web[3], aussi bien au niveau du rendu que du placement des éléments. Certes il y a des inconvénients :

  • on ne peut quand même pas s'autoriser toutes les mises en pages imaginables
  • il faut suffisamment connaître les CSS
  • le poid de la page est augmenté par l'ajout d'un grand nombre d'identifiants servant à distinguer ce qui doit être modifiable facilement par CSS
  • on ne peut plus ajouter tout ce qu'on veut dans la page, il faut pour cela toucher au moteur de CMS (via des plugins ?)

Cependant :

  • la preuve de concept[4] que j'ai mise au point montre qu'on peut garder une souplesse de mise en page très honnête
  • apprendre les CSS n'est pas une perte de temps puisque c'est un langage qui sert sur tout site web normalement conçu
  • le poids de la page n'est pas significatif par rapport à celui des images de décoration

Enfin les CSS offrent les avantages suivants :

  • totalement déliés du contenu des pages, donc pas de problème ni d'encodage ni de traduction des textes (qu'il faut gérer en pur Php)
  • il est facile d'inspecter les CSS d'une page dans Firefox[5], ce qui réduit le besoin de consulter la documentation - mais ne dispense pas de la faire !
  • allège la charge du serveur Php qui n'a plus à transcrire les templates en pages
  • de toute façon, il aurait fallu des CSS puisque les templates n'adressent que le problème de la mise en page et non celui du rendu

En fait les templates ajoutent un niveau de découpage :

  • moteur CMS + CSS = contenu + forme
  • moteur CMS + template + CSS = contenu + structure + forme

Conclusion

Ça paraît assez clair : on n'a pas besoin de templates ! J'y vois toujours comme avantage supplémentaire que ça attirera plus les graphistes web de n'avoir à toucher que les CSS.

Notes

[1] puisqu'il doit concorder avec celui de la base de données

[2] Cascading Style Sheets - feuilles de styles en cascade

[3] le meilleur exemple est le jardin zen CSS - merci LordFarquaad de me le rappeler ;-)

[4] il s'agit d'une page web avec multiples feuilles de styles alternatifs

[5] avec le DOM Inspector